auto-sklearn代码阅读 part2
文章目录
这一章简单介绍下auto-sklearn在特征预处理过程中使用的一些算法,其实很多都还没弄明白。后续需要进行更深入的学习,以及数据预处理的方法
特征预处理
densifier 将稀疏表示的矩阵转换成普通矩阵 Array形式存储
truncatedSVD, 常用降维方法,将特征降到固定维数,输出维数 作为 超参数
select_rates 只用于分类,允许使用可配置方法来进行单变量特征选择。它允许超参数搜索评估器来选择最好的单变量特征
- chi2: 卡方统计量检验类别变量之间的确定关联性,如果输入是稀疏矩阵,只使用chi2
- f_classif 基于F-检验的方法估计两个随机变量间的线性相关度
- score_func, mode, alpha都作为超参数
select_percentile 移除除了指定的最高得分百分比之外的所有特征 以分类为例:除了chi2, f_classif 还有 mutual_info的方法 percentile 作为超参数
polynomial 多项式特征构造,如果有a,b两个特征,那么它的2次多项式为(1,a,b,a^2,ab, b^2)
- 超参:degree(2阶 or 3阶) interaction(是否进行自身相乘,如 a^2, b^2) , include_bias
PCA 降维方法, 超参: keep_variance(PCA算法中所要保留的主成分个数n), whiten(白化,使得每个特征具有相同的方差)
FastICA 用于独立特征分离的算法。超参:n_conponents, whiten, altorithm TODO FastICA算法资料
KernelPCA 使用 kPCA 将维度降至低维维,然后应用 Logistic 回归进行分类。然后使用 Grid SearchCV 为 kPCA 找到最佳的核和 gamma 值,以便在最后获得最佳的分类准确性 核PCA资料
- 超参:kernel(核的类型,如RBF, cosine, sigmoid等), gamma(核系数, RBF, poly,sigmoid专有), degree(2-5, 默认是3), coef0(独立项,poly, sigmoid专有), n_components
random_trees_embedding, 利用一个随机森林,进行无监督的特征转换,把低维的非线性特征,转化为高维的稀疏特征 TODO: RF embedding资料
- 超参:比较多,n_estimators, max_depth, min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes, bootstrap等
expt_trees
- max_samples和max_features控制子集的大小,bootstrap和bootstrap_features控制数据样本和属性是否替换。Oob_score=True可使得估计时采用已有的数据划分样本
feature_agglomeration 把那些效果或行为相似的特征进行聚类,达到降维的目的
kitchen_sinks 为径向基函数核构造一个近似映射, 与nystroem有关
nystroem_sample 它是通过采样 kernel 已经评估好的数据。默认情况下使用
rbf
kernel,但它可以使用任何内核函数和预计算内核矩阵. 使用的样本数量 - 计算的特征维数 - 由参数n_components
给出
数据预处理
- variance_threshold 过滤方差较低的特征
- Rescaling, 特征的缩放变换
- 包括 abs, minmax, normalize,standarize等非常常见的处理
- RobustScaler:适用于有离群点数据,它有对数据中心化和数据的缩放鲁棒性更强的参数,根据分位数范围(默认为IQR: IQR是第1四分位数和第3个四分位数之间的范围。)删除中位数并缩放数据
- QuantileTransformer:提供了一个基于分位数函数的无参数转换,将数据映射到了零到一的均匀分布上
- OneHotEncoding
- Imputation 缺失值插补,可以用提供的常数值,也可以使用缺失值所在的行/列中的统计数据进行补充
- Balancing
文章作者 Sun.StriKE
上次更新 2019-11-05