特征处理和特征选择
- 统计特征
- 加减平均:与均值进行比较。
- 分位线:处于前百分之几。
- 次序:排在第几位。
- 比例:类目占比。
购物推荐中的特征处理示例:
- 加入购物车时间距当前的天数。-用户商品统计特征
- 排除30天内从没买过商品的用户。-数据清洗
- 在购物车里的商品,哪些会买,哪些不会买。-规则
- 点击、加购物车、收藏的购买转化率。-用户商品统计特征
- 自定义函数描述不同商品的当前热度。-商品统计特征
- 不同商品的点击、加购物车、收藏,购买的总量。商品统计特征
- 不同用户对不同商品的点击、加购物车、收藏,购买的总量。-用户商品的统计特征
- 自定义函数描述用户购买习惯(犹豫型、果断型,对价格的敏感程度)。-用户统计特征
- 商品的竞争力(在同类别商品中的排名)。-商品统计特征
- 商品各类操作的变化趋势(最近1/2/3/7/14/30天的操作数与平均的比值)。-商品统计特征
- 最近交互的时间/交互的总天数。
- 用户在时间段内交互商品的排名。-用户商品的统计特征
组合特征
- 不同特征简单拼接
- 学习树形模型(如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