Abracadabra

数据预处理相关技术

数值型数据 (non-tree based model)

  • 特征预处理
    • MinMaxScalar 不会改变数据分布
    • StandardScalar
    • scipy.stats.rankdata
    • log transform np.log(1+x)
    • raising to the power < 1 np.sqrt(x + 2/3)
    • drop outlier(winsorization,specify upper and lower bound)

融合不同预处理方法得到的特征训练一个模型或者每一种特征训练出一个模型最后做模型融合

  • 特征生成
    • 主要依据先验经验以及对数据的深刻理解
    • 例如,浮点数的小数部分单独提取出来作为特征

类别数据以及有序类别数据

  • 特征预处理
    • Label encoding (tree(or non-tree)-based model)
      • alphabetical sorted sklearn.preprocessing.LabelEncoder
      • order of appearance Pandas.factorize
      • frequency encoding (非常适用于测试数据中包含训练数据未包含的类别)
    • Label encoding (non-tree(or tree)-based model)
      • one-hot encoding (sparse matrix)
  • 特征生成
    • 枚举不同的类别特征的组合形成新的类别特征 (linear models and KNN)

日期数据以及坐标数据

日期数据

  • 特征生成
    • 周期性数据
      • Day number in week, month, season, year
      • second, minute, second
    • 自什么时候以来
      • 问题无关, 比如自1970年1月1日以来
      • 问题相关,比如距离下一个节假日还有多少天等等
    • 两个日期特征之间的差值

坐标数据

  • 特征生成

    • 距离某些关键坐标的距离等等(需要外部数据支持)
    • 对坐标进行网格化或者聚类,然后计算每个网格中的点距离选定点的距离或者每个簇中的点距离聚类中心的距离
    • 点的密度(某一限定范围之内)
    • 区域价值,例如物价房价等(某一限定范围之内)
  • 特征预处理

    • 坐标旋转(例如45°)

缺失值处理

  • 找出隐含的NaN,通过可视化数据分布
  • 填充方法
    • -999, -1
    • 中值,均值等
    • 尝试恢复缺失数据(线性回归)
  • 特征生成
    • 增加一个特征,是否有缺失值
    • 采用填充的缺失值进行特征生成要特别小心,一般来说若要进行特征生成,则最好不要在之前进行缺失值填充
  • xgboost对于缺失值不敏感

文本数据

  • 特征生成
    • 词袋 skearn.feature_extraction.text.CountVectorizer
    • TF-IDF skearn.feature_extraction.text.TfidfVectorizer
    • N-grams ngram
  • 特征预处理
    • lowercase
    • lemmatization (单词最原始的形式)
    • stemming
    • stopwords nltk
  • Word2Vec, Doc2vec, Glove, FastText, etc
  • Pipeline
    1. 预处理
    2. Ngrams then TF-IDF
    3. or Word2Vec, etc

图像数据

  • 可以结合不同层的特征图