机器学习中的数据准备

数据准备是机器学习中一项非常重要的环节,本文主要对数据准备流程进行简单的梳理,主要参考了Data Preparation for Machine Learning一书。

数据准备需要进行的工作主要分为以下几类:

  • 数据清理(Data Cleaning)
  • 数据转换(Data Transformation)
  • 特征选择(Feature Selection)

数据清理

  • 删除冗余的特征或样本
  • 寻找异常点
    • 统计学方法
      • 若特征属于正态分布N(\mu,\sigma^2),则区间[\mu-3\sigma,\text{  }\mu+3\sigma]之外的值可视为异常值
      • 若特征属于偏态分布,则定义IQR = 75\text{th quantile} - 25\text{th quantile},区间[25\text{th quantile} - c*IQR,  75\text{th quantile} + c*IQR]之外的值可视为异常值,c通常取1.53
    • 自动检测方法
      • Local Outlier Factor (LOF):LOF算法原理介绍
      • Isolation Forest: Isolation Forest算法原理介绍
  • 处理缺失值
    • 直接删除有缺失值的数据
    • 使用特征的统计量(数值特征:平均值或中位数;类别特征:众数)进行填充
    • 将缺失值单独标记为一个新的类别,例如'Missing',适用于类别特征
    • 加入一个新的特征(二值变量,取值为0或1),来对应某个特征是否缺失(1: 缺失,0: 正常)。该方法通常和其它缺失值填充方法配合使用
    • k-Nearest Neighbour Imputation
    • Iterative Imputation

数据转换

  • 数值特征的尺度变换
    • Data Normalization: 将特征变换到[0,1]之间。\frac{value - min}{max - min}MinMaxScaler()
    • Data Standardization: 将特征均值变为0,标准差变为1\frac{value - mean}{\sigma}StandardScaler()
    • Robust Scale: 类似Data Standardization,但选用较稳健的特征统计量(median、IQR),减少异常值对特征统计量的影响。\frac{value - median}{IQR}, RobustScaler()
  • 数值特征的分布变换
  • 类别特征的编码
    • One-Hot Encode: 如果一个类别特征中共有k个类别,则将该特征转换为k个新的二值特征(例如"颜色:红、黄、绿"变为:"颜色_红:1、0、0"以及"颜色_黄:0、1、0"以及"颜色_绿:0、0、1"),常用于决策树模型,例如CART、RandomForest,函数API为OneHotEncoder(drop=None, ...);或者将其转换为k-1个新的特征(例如"颜色:红、黄、绿"变为:"颜色_黄:0、1、0"以及"颜色_绿:0、0、1"),常用于包含偏差项(i.e., bias term)的模型,例如线性回归,函数API为OneHotEncoder(drop=‘first’, ...)
    • One-Hot Encode for Top Categories:如果一个类别特征中包含的类别较多,可将特征中出现频率较低的一些类别合成为一个类别,然后使用one-hot encode
    • Ordinal Encode: 将特征中的类别按顺序编码为0,1,2,\cdotsOrdinalEncoder()
    • Frequency Encode:将特征中的类别编码为该类别在特征中出现的频率
    • Mean Encode: 将特征中的类别编码为该类别对应的目标变量y的均值
    • Ordered Integer Encode: 按照特征中每个类别对应的目标变量y的均值从大到小将类别编码为0,1,2,\cdots
  • 特征工程
  • 上述技术有一些也可用于目标变量y上,例如在y上进行Power Transform可以减少它的偏度(skewness),使之更接近高斯分布。可使用TransformedTargetRegressory进行转换,例如:
  • 可使用ColumnTransformer对不同的特征进行不同的转换,例如:

特征选择

  • Filter Methods
    • 统计方法
      • {\chi}^2 Test: 适用于分类问题,只能用于非负特征的选择,具体介绍可参考这篇文章
      • Mutual Information: I(X ; Y)=\int_{Y} \int_{X} p(x, y) \log \left(\frac{p(x, y)}{p(x) p(y)}\right) d x d y,\text{  }I(X ; Y)\ge 0\text{且仅在}X\text{和}Y\text{相互独立时}为0
      • One-Way ANOVA: 适用于分类问题,用于数值特征的选择
      • Pearson Correlation:  适用于回归问题,用于数值特征的选择
    • 特征重要性
      • feature importance from model coefficients (model.coef_)
      • feature importance from decision trees (model.feature_importances_)
      • feature importance from permutation testing: 将一个选定的模型训练好之后,将训练集或验证集上的某个特征的值随机打乱顺序,打乱顺序前后模型在该数据集上预测能力的变化反映了该特征的重要程度
  • Recursive Feature Elimination (RFE): 对选定的模型进行迭代训练,每次训练后根据得到的特征重要性删除一些特征,在此基础上重新进行训练
  •  Dimension Reduction: LDA(有监督降维), PCA(无监督降维),算法原理可参考PCA与LDA降维

Leave a Comment

Your email address will not be published. Required fields are marked *