特征工程
维基百科对于特征工程的定义是:利用相关领域知识,通过数据挖掘技术从原始数据中提取特征的过程。这些特征可以用来提高机器学习算法的性能;
为了对概念更明晰,先看下图
特征:作为判断条件的一组输入变量,是做出判断的依据;
目标:判断和预测的目标,模型的输出变量,是特征所产生的结果;
特征(feature):数据中抽取出来的对结果预测有用的信息。
特征的个数就是数据的观测维度;
特征工程一般包括特征清洗(采样、清洗异常样本),特征处理和特征选择
特征按照不同的数据类型分类,有不同的特征处理方法:可以分为数值型,类别型,时间型,统计型等;
数值型特征处理
用连续数值表示当前的维度特征,通常会对数值型特征进行数学上的处理,主要做法是归一化和离散化
归一化
特征与特征之间应该是平等的,区别应该体现在特征内部;
例如房屋的价格和住房面积的幅度是不同的,房屋价格可能在3000000-15000000之间,而住房面积在40-300平方米之间,那么明明是平等的两个特征,输入到相同的模型后由于本身的幅值不同导致产生的效果不同,这是不合理的,需做归一化处理;
归一化后:
离散化
离散化:将原始连续值切断,转化为离散值;
让座问题:假设我们要训练一个模型判断在公交车上应不应该给一个人让座,按照常理,应该是给年龄很大和年龄很小的人让座
对于以上让座问题中的年龄特征,对于一些模型,假设模型为y=θ x,输入的x(年龄)对于最后的贡献是正/负相关的,即x越大越应该让座,但很明显让座问题中,年龄和是否让座不是严格的正相关或者负相关,这样只能兼顾年龄大的人,无法将年龄大的人和年龄小的人;
对于让座问题,我们可以使用阈值将年龄进行分类,将一个age特征分为多个特征,将联系值离散化;
在电商中人们对价格的喜好程度,就不是严格意义的正相关;
离散化的两种方式:
等步长:简单单不一定有效
等频:min —>25% ----->75% —>max
两种方法对比:
等频的离散化方法很精准,但需要每次都对数据分布机型一遍从新计算;等频不固定,但很精准,等步长是固定的,非常简单,因此两者都有应用;
类别型特征处理
类别型数据本身没有大小关系,需要将它们编码为数字,但它们之间不能有预先设定的大小关系,因此既要做到公平,又要区分开它们,那么直接开辟多个空间;
One-Hot 编码/哑变量
One-Hot 编码/哑变量所做的就是将类别型数据平行的展开,也就是说,经过One-Hot 编码/哑变量后,这个特征的空间会膨胀;
上述例子经过One-Hot 编码后:
时间型特征处理
时间型特征既可以做连续值,又可以看做离散值;
连续值:
持续时间(网页浏览时长)
间隔时间(上一次购买/点击离现在的时间间隔)
离散值:
一天中哪个时间段
一周中的星期几
一年中的哪个月/星期
工作日/周末
统计型特征处理
加减平均:商品价格高于平均价格多少,用户在某个品类下消费超过多少。
分位线:商品属于售出商品价格的分位线处。
次序性:商品处于热门商品第几位;
比例类:电商中商品的好/中/差比例;
推荐系统常见反馈数据
用户行为 | 类型 | 特征 | 作用 |
---|---|---|---|
购买 | 显式 | 布尔量化的偏好,取值0或1 | 购买行为可以很明确地说明用户感兴趣 |
评分 | 显式 | 整数量化的偏好,可能的取值是[0,n];n一般取5或10 | 通过用户对物品的评分,可以精确得到用户的偏好 |
投票 | 显式 | 布尔量化的偏好,取值0或1 | 通过用户投票,可以较准确地得到用户偏好 |
转发 | 显式 | 布尔量化的偏好,取值0或1 | 通过用户转发行为,可以精准地得到用户偏好,如果是站内,同时可以推理得到被转发人的偏好(不太准确) |
保存/收藏 | 显式 | 布尔量化的偏好,取值0或1 | 通过收藏行为,可以精准地得到用户偏好 |
打标签(tag) | 显式 | 一些单词,需要对单词进行分析,得到偏好 | 通过分析用户打的标签,可以得到用户对项目的理解,同时可以分析出用户的情感;喜欢还是讨厌 |
评论 | 显式 | 一段文字,需要进行文本分析,得到偏好 | 通过分析用户的评论,可以得到用户的情感:喜欢还是讨厌 |
点击浏览(查看) | 隐式 | 一组用户的点击,用户对物品感兴趣,需要进行分析,得到偏好 | 用户的点击一定程度上反映了用户的注意力,所以它也可以从一定程度上反映用户的喜好 |
页面停留时间 | 隐式 | 一组时间信息,噪音大,需要进行去噪,分析,得到偏好 | 用户的页面停留时间一定程度上反映了用户的注意力和偏好,但噪音偏大,不好利用 |