1.特征工程与意义
(1)特征:数据中抽取出来的对结果预测有用的信息
(2)特征工程师使用专业的背景知识和技巧来处理数据,使得特征能在机器学习算法中发挥更好的作用的过程
(3)意义:更好的特征意味着更强的灵活度
更好的特征意味着只需要简单模型
更好的特征意味着更好的结果
2.实际工业界特征工程那些事儿
1.特种选择/清洗/采样
(1)数据采集:
哪些数据对最后的结果预测有帮助?
数据我们能够采集上吗?位置(pos)
线上实时计算的时候获取是否便捷
(2)举例:
我们现在要预测用户对商品的下单情况,或者我要给用户做商品推荐,那我们需要采集哪些信息呢?
店家的,商品的,用户的(埋点)
2.数值型/类别型/日期型/文本型特征处理
(1)数据格式化
确定存储格式
(2)数据清洗
garbage in ;garbage out
算法大多数时候就是一个加工机器,治愈最后的产品如何,取决于原材料的好坏
实际这个过程会花掉一大部分时间,而且他会使得你对于业务的理解非常透彻
数据清洗做的事情===>去掉脏的数据
(3)数据清洗示例/思考角度
简单的impossible(利用分位数来考虑)
身高3米的人?
一个月买脸盆墩布买了10w的人
。。。
第二种是由组合或者统计属性判定
号称在米国却ip一直都在中国大陆的新闻阅读用户
你要判定一个人是否会买篮球鞋,样本中的女性用户为85%
第三种是补齐对应的缺省值
不可信的样本去掉,缺省值极多的字段不用
(4)数据与特征处理
很多情况下,正负样本是不均衡的
电商用户点/买过的商品和没有行为的商品
某些疾病的患者和健康人
。。。。
大多数模型对正负样本比是敏感的(比如LR)
随机采样和分层抽样
(5)正负样本不平衡处理办法
正样本>>负样本,且量都很大===》下(欠)采样
正样本>>负样本,量不大=》
采样更多的数据
oversampling(比如图像识别中的景象和旋转)
修改损失函数/loss function
3.数据组合与特征处理
1)特征处理
(1)数值型
调整幅度/归一化:幅度调整到[0,1]范围内。
Log等数据域变化
统计值max,min,mean,std
离散化
Hash分桶
每个类别下对应的变量统计值histogram(分布状况)
试试数值型=?类别型
幅度缩放
统计值(取到特征)
离散化:把连续值分成一个段,单独把每个值列成一个特征,可以对每一段的数据单独处理。树模型不需要离散化,要做离散化的是逻辑回归和神经网络。等距切分,按照最大最小做一个阐述的边界。等频切分:做一些统计,把分位数取出来。
(2)类别型(计算机完全懵逼)
one-hot编码(独热向量编码)/哑变量变换
哑变量
Hash与聚类处理
统计每个类别变量下各个target比例,转成数值型
类别型特征Python处理技巧:Hash技巧
体现内容的倾向性,落在其中词的个数
类别型特征Python处理:Histoream映射
(3)时间型
既可以看做连续值,也可以看做离散值
连续值
a)持续时间(单页浏览时间长度)
b)间隔时间(上次购买/点击离现在的时间)
离散值
a)一天中哪个时间段(hour)
b)一周中的星期几
c)一年中的哪个季度
d)工作日/周末
(4)文本型
词袋:文本数据预处理后,去掉停用词,剩下词组成list,在词库中的映射稀疏向量
把词袋中的词扩充到n-gram
(5)统计型
(6)组合特征
4.特征处理案例分析
1.Filter/Wrapper/Embedded三种特征选择方式以及开发包/案例
原文:https://www.cnblogs.com/bigdata-stone/p/10423447.html