机器学习总结-特征处理和特征选择

特征处理和特征选择

  • 统计特征
  • 加减平均:与均值进行比较。
  • 分位线:处于前百分之几。
  • 次序:排在第几位。
  • 比例:类目占比。

购物推荐中的特征处理示例:

  1. 加入购物车时间距当前的天数。-用户商品统计特征
  2. 排除30天内从没买过商品的用户。-数据清洗
  3. 在购物车里的商品,哪些会买,哪些不会买。-规则
  4. 点击、加购物车、收藏的购买转化率。-用户商品统计特征
  5. 自定义函数描述不同商品的当前热度。-商品统计特征
  6. 不同商品的点击、加购物车、收藏,购买的总量。商品统计特征
  7. 不同用户对不同商品的点击、加购物车、收藏,购买的总量。-用户商品的统计特征
  8. 自定义函数描述用户购买习惯(犹豫型、果断型,对价格的敏感程度)。-用户统计特征
  9. 商品的竞争力(在同类别商品中的排名)。-商品统计特征
  10. 商品各类操作的变化趋势(最近1/2/3/7/14/30天的操作数与平均的比值)。-商品统计特征
  11. 最近交互的时间/交互的总天数。
  12. 用户在时间段内交互商品的排名。-用户商品的统计特征

组合特征

  • 不同特征简单拼接
  • 学习树形模型(如GBDT)得到划分路径,然后使用不同路径对应的特征组合成不同的新特征,最后将新特征和原始特征训练LR模型。

特征选择

为什么要进行特征选择:特征冗余:消耗计算性能,特征噪声:可能使结果变差。
注意:特征选择!=降维

  • 去掉变化小的特征特征:计算方差。
  • 单变量选择特征:依次计算单个特征和结果的相关性,去掉低相关的特征。
  • 递归删除特征:用一个方法估计每个特征的权值,每次删除权值最小的特征,递归进行,直到满足特征个数要求。
    手写数字集的示例:
from sklearn.svm import SVC
from sklearn.datasets import load_digits
from sklearn.feature_selection import RFE
import matplotlib.pyplot as plt

#Load the digits dataset
digits = load_digits()
X = digits.images.reshape((len(digits.images), -1))
y = digits.target

#Create the RFE object and rank each pixel
svc = SVC(kernel="linear", C=1)
rfe = RFE(estimator=svc, n_features_to_select=1, step=1)
rfe.fit(X, y)
ranking = rfe.ranking_.reshape(digits.images[0].shape)

#Plot pixel ranking
plt.matshow(ranking, cmap=plt.cm.Blues)
plt.colorbar()
plt.title("Ranking of pixels with RFE
")
plt.show()

像素排序的结果:

  • 从模型中选择特征
    • 使用L1正则来选择特征
    • 随机稀疏模型
    • 基于树的特征选择:基于树的预测模型能够用来计算特征的重要程度,可以用来去除不相关的特征。

参考:
http://scikit-learn.org/stable/modules/feature_selection.html#feature-selection 中文版
http://www.cnblogs.com/hhh5460/p/5186226.html
http://www.cnblogs.com/jasonfreak/p/5595074.html

原文地址:https://www.cnblogs.com/sandy-t/p/6808429.html