特征工程部分总结

一,再强调数据理解部分,首先我们要知道数据理解目的:主要是探索数据,了解数据,
1.定性数据:描述性质
a)定类:按名称分类——血型、城市
b)定序:有序分类—一成绩(ABC)
2,定量数据:描述数量
a)定距:可以加减——温度、日期
b)定比:可以乘除—价格、重量
二,数据清洗
其目的是提高数据质量,降低算法用错误数据建模的风险
1,特征变换:模型无法处理或不适合处理
a)定性变量编码:Label Encoder; Onehot Encoder; Distribution Encoder
b)标准化和归一化:z分数标准化(标准正太分布)、 min-max归一化
2.缺失值处理:增加不确定性,可能会导致不可靠输出
a)不处理:少量样本缺失
b)删除:大量样本缺失
c)补全:(同类)均值/中位数/众数补全:高维映射(one-hot):模型预测:最邻近补全矩阵补全(R-SVD)
3.异常值处理:减少脏数据
a)简单统计:如 describe()的统计描述:散点图等
b)3∂法则(正态分布)/箱型图删除/截断
c)利用模型进行离群点检测:聚类、K近邻、 One Class SvM、 Isolation Forest:
4.其他:删除无效列/更改dype/删除列中的字符串/将时间戳从字符串转换为日期时间格式等
三,特征构造
目的:增强数据表达,添加先验知识。
1.统计量特征
a)计数、求和、比例、标准差
2.时间特征
a)绝对时间、相对时间、节假日、双休日
3.地理信息:
a)分桶:
4.非线性变换
a)取og/平方/根号:
5.数据分桶:
a)等频/等距分桶、Best-KS分桶、卡方分桶
6.特征组合特征交叉
四,特征选择
目的:平衡预测能力和计算复杂度;降低噪声,增强模型预测性能。
1.过滤式( Filter):先用特征选择方法对初识特征进行过滤然后再训练学习器,特征选择过程与后续学习器无关
a) Relief/方差选择/相关系数/卡方检验/互信息法
2.包裹式( Wrapper):直接把最终将要使用的学习器的性能作为衡量特征子集的评价准则,其目的在于为给定学习器选择最有利于其性能的特征子集
a) Las Vegas Wrapper (LVM)
3.嵌入式( Embedding):结合过滤式和包裹式方法,将特征选择与学习器训练过程融为一体,两者在同一优化过程中完成,即学习器训练过程中自动进行了特征选择
a)LR+L1或决策树
五,类别不平衡
缺点:少类别提供信息太少,没有学会如何判别少数类
1.扩充数据集
2.尝试其他评价指标:AUC等;
3.调整θ值
4.重采样:过采样/欠采样
5.合成样本:SMOTE;
6.选择其他模型:决策树等
7.加权少类别的样本错分代价
8.创新:
a)将大类分解成多个小类;
b)将小类视为异常点,并用异常检测建模。
六,心得体会
通过本次特征工程的学习,我对数据挖掘的比赛的理解更深了一步,其实特征工程是很重要的一步,特征筛选的方法有千万种,而对不同类型的数据有不同的方法,其有三点我印象特别深刻,一是数据分桶,以前我从不知道有数据分桶这一说法,见识到数据分桶的好处之后,我真的很惊讶,发现这种比赛越开越有趣了,真有意思,因为里面有些方法是真的精巧,没错就是精巧。二是one hot encoding,以前只听说过,当我自己遇见时,并且认认真真查了它的所有时,才懂得它为什么可以提高运算速度等,三是相关性分析,两种方法,一是代码列表,二是代码画图,当图像真真实实显示在你面前的时候,你就会发现一切都是那么的清晰,总之收获很大。

PS:本人刚开始写博客,所以不足之处请多多斧正,谢谢,代码我全部放github上了,我不太喜欢把代码放这里,有需要代码的私聊我。

你可能感兴趣的:(特征工程部分总结)