机器学习之如何选取特征(特征工程)

特征工程

特征工程的意义是找一个更好的空间去重构表达,把原始的数据对象映射到这个空间去表达,更便于你的应用。比如分类应用,最好是找到线性可分的空间嘛。

不止是神经网络可以代替人工找特征,理论上越是复杂的模型本身就是在代替人工找特征,只不过复杂模型的有效训练又成了难题。

深层神经网络(就是层数特别多)就是一种通用的复杂的模型,而深度学习很大程度上解决了它的训练问题。
在这里插入图片描述
当你用一个N层的网络去学习人脸分类时,看上图最左边,最下面的就是接近输入端的层学到的特征,长相是不是很像Gabor滤波~~这部分的表达粒度比较小,主要是边缘信息。看中间的图片,眼睛、耳朵之类的部件。再上面就组成了人脸了。这就是网络的不同层学到的不同的特征表达

深度学习是不是完爆人工?是不是没有人工特征存在的必要了?

我认为不是,起码现阶段还远没到人工特征完全没必要存在的程度。

这个跟应用场景有很大的关系

像语音、图像这些,原始特征空间与目标应用所需的良好表达空间有着遥远距离的情况下,深度学习无与争锋。而很多相对简单的应用并不必要去用深度学习稍微使用一下我们的洞察力就找到了非常有效的特征,配上简单的模型(比如LR)就解决了问题。开发、部署的成本更低,运行成本也低(模型简单),用户体验更好(比如网上应用的延时更小)。尤其是一些追求解释性的场景,更加是倾向于人工特征。

找出预测性更好的特征的具体方法

特征是机器学习的核心,线性可分的特征空间只需要最简单的感知机就够了,而复杂的算法有可以看做是特征提取的过程,包括————核技巧、集成学习、降维和深度学习等

  • 依据先验经验人工挑选。如题目描述中的天气预测问题,可以预先确定湿度、温度、是否有云、风向、风速、近几日天气状况等明显较为相关的特征。
  • 线性特征选择假设特征之间相互独立,不存在交互,那么可以使用卡方检验、信息增益、互信息等方法逐个检验特征与结果之间的相关程度。更为简便的方法是使用LR等线性模型,先做一次预训练,根据特征对应的线性模型权值的绝对值大小来对特征的重要程度进行排序
  • 非线性特征选择。如果考虑特征之间的交互,可以使用随机森林来进行特征选择,具体方法不赘述,概括来说就是将想要检验重要性的特征在样本上进行permutation,然后观察OOB错误的上升程度,上升越大,说明这个特征越重要。
  • 自动特征提取。如第一段所述,核技巧、集成学习、深度学习等较为复杂的算法都可以看做是特征提取的过程,虽然简单省力,但是模型的解释性也会下降,尤其像深度学习这种黑盒子。
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页