这一章简单介绍下auto-sklearn在特征预处理过程中使用的一些算法,其实很多都还没弄明白。后续需要进行更深入的学习,以及数据预处理的方法

特征预处理

  1. densifier 将稀疏表示的矩阵转换成普通矩阵 Array形式存储

  2. truncatedSVD, 常用降维方法,将特征降到固定维数,输出维数 作为 超参数

  3. select_rates 只用于分类,允许使用可配置方法来进行单变量特征选择。它允许超参数搜索评估器来选择最好的单变量特征

    1. chi2: 卡方统计量检验类别变量之间的确定关联性,如果输入是稀疏矩阵,只使用chi2
    2. f_classif 基于F-检验的方法估计两个随机变量间的线性相关度
    3. score_func, mode, alpha都作为超参数
  4. select_percentile 移除除了指定的最高得分百分比之外的所有特征 以分类为例:除了chi2, f_classif 还有 mutual_info的方法 percentile 作为超参数

  5. polynomial 多项式特征构造,如果有a,b两个特征,那么它的2次多项式为(1,a,b,a^2,ab, b^2)

    1. 超参:degree(2阶 or 3阶) interaction(是否进行自身相乘,如 a^2, b^2) , include_bias
  6. PCA 降维方法, 超参: keep_variance(PCA算法中所要保留的主成分个数n), whiten(白化,使得每个特征具有相同的方差)

  7. FastICA 用于独立特征分离的算法。超参:n_conponents, whiten, altorithm TODO FastICA算法资料

  8. KernelPCA 使用 kPCA 将维度降至低维维,然后应用 Logistic 回归进行分类。然后使用 Grid SearchCV 为 kPCA 找到最佳的核和 gamma 值,以便在最后获得最佳的分类准确性 核PCA资料

    1. 超参:kernel(核的类型,如RBF, cosine, sigmoid等), gamma(核系数, RBF, poly,sigmoid专有), degree(2-5, 默认是3), coef0(独立项,poly, sigmoid专有), n_components
  9. random_trees_embedding, 利用一个随机森林,进行无监督的特征转换,把低维的非线性特征,转化为高维的稀疏特征 TODO: RF embedding资料

    1. 超参:比较多,n_estimators, max_depth, min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes, bootstrap等
  10. expt_trees

    1. max_samples和max_features控制子集的大小,bootstrap和bootstrap_features控制数据样本和属性是否替换。Oob_score=True可使得估计时采用已有的数据划分样本
  11. feature_agglomeration 把那些效果或行为相似的特征进行聚类,达到降维的目的

  12. kitchen_sinks 为径向基函数核构造一个近似映射, 与nystroem有关

  13. nystroem_sample 它是通过采样 kernel 已经评估好的数据。默认情况下使用 rbf kernel,但它可以使用任何内核函数和预计算内核矩阵. 使用的样本数量 - 计算的特征维数 - 由参数 n_components 给出

数据预处理

  1. variance_threshold 过滤方差较低的特征
  2. Rescaling, 特征的缩放变换
    1. 包括 abs, minmax, normalize,standarize等非常常见的处理
    2. RobustScaler:适用于有离群点数据,它有对数据中心化和数据的缩放鲁棒性更强的参数,根据分位数范围(默认为IQR: IQR是第1四分位数和第3个四分位数之间的范围。)删除中位数并缩放数据
    3. QuantileTransformer:提供了一个基于分位数函数的无参数转换,将数据映射到了零到一的均匀分布上
  3. OneHotEncoding
  4. Imputation 缺失值插补,可以用提供的常数值,也可以使用缺失值所在的行/列中的统计数据进行补充
  5. Balancing