在机器学习的项目中,特征是如何被找出来的?

理由
举报 取消

在我所接触过的特征学习的项目中(学校,工作),特征都是由人提取出来的。比如我们要预测天气,那么就直观的去想象什么因素可能与之后的天气有关,湿度,温度,是否有云,etc.。但是,这样的提取特征不仅仅需要很专业的知识,而且有些时候人的思维是有局限的,很难做到特征的准确性,高覆盖性。那么在工业中,是否有算法用来确定特征,而非“手工特征工程”。

2017年10月27日 8 条回复 1262 次浏览

发起人:雷天琪 管理大师

这是一个理论终结的时代

回复 ( 8 )

  1. Stark Einstein
    理由
    举报 取消

    深度学习。

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

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

    深层神经网络(就是层数特别多)就是一种通用的复杂的模型,而深度学习很大程度上解决了它的训练问题。

    当你用一个N层的网络去学习人脸分类时,看上图最左边,最下面的就是接近输入端的层学到的特征,长相是不是很像Gabor滤波~~这部分的表达粒度比较小,主要是边缘信息。看中间的图片,眼睛、耳朵之类的部件。再上面就组成了人脸了。这就是网络的不同层学到的不同的特征表达。

    在机器学的特征面前,人工特征是不是弱爆了?

    以前做模式识别,特征方面正是题主所说那样,既要积累专业领域的知识又要消耗大量时间去尝试,而且对工作人员来说也是有一定的智力门槛的,所以那会儿做模式识别的成本高。现在有了深度学习,扔给机器跑几天基本上就赶上了以前人工花几个月甚至几年的工作成果,而且门槛上更低了,调参党生活滋润得不要不要的。

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

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

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

    像语音、图像这些,原始特征空间与目标应用所需的良好表达空间,有着遥远距离的情况下,深度学习无与争锋。

    而很多相对简单的应用并不必要去用深度学习,稍微使用一下我们的洞察力就找到了非常有效的特征,配上简单的模型(比如LR)就解决了问题。开发、部署的成本更低,运行成本也低(模型简单),用户体验更好(比如网上应用的延时更小)。尤其是一些追求解释性的场景,更加是倾向于人工特征。

  2. 魏晋
    理由
    举报 取消

    补充一下找出预测性更好的特征的具体方法。

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

    下面进入正题:

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

    其实你可以任意yy一个特征,然后看一下他是不是indicative,足够好就留下

    我不能评论 所以只能加答案

    这么说把,大部分的特征工程都是我说的这样做的,工业推广中非常通用,特征不需要有什么覆盖率,只需要work就可以,正确率是通过测试保障的,各种validation就可以了。

  4. 青峰
    理由
    举报 取消

    1. 人工:根据业务知识人工建立feature

    2. 自动:在1的基础上自动生成新的feature, 用kernel trick或神经网络自动生成。如果是推荐,利用矩阵分解也可以生成特征,cf based on latent factor,facebook有篇论文用gbdt的结果送进lr,也可看成是自动学习特征。

    人工特征容易解释,自动生成的特征很难解释。

    自动生成特征,模型训练,预测都变复杂,计算成本高,带来的好处是模型效果会提升。

    对于图片语音,适合自动,本身包含了完整的信息,而其他比如用户行为数据,目前是少不了人工的过程的。

    如果哪一天硬件够牛,可能人工工程就不需要了,我等就要换个地方挖坑谋生了。

  5. colin
    理由
    举报 取消

    从梯度提升决策树的角度研究特征组合,分析哪些特征组合有用,目前只是一个思路,正在研究中,我认为这个方法可行!

  6. 徐彬彬
    理由
    举报 取消

    现今最热的CNN的特征就不是人工的

  7. hackcv
    理由
    举报 取消

    特征学习一般是要找到针对目标的特征,而这些特征一般都是比较高级的特征,如同CNN训练得到的特征一样,先从低级特征(边缘等)开始,组合到高级特征(眼睛、鼻子等)。

    如果数据量比较小,不足以使用CNN,或者有比较专业的知识,对目标有很深的理解,也可以自行设计特征,比如什么因素和天气有关,湿度、温度用什么特征更好些,以及如何把这些特征组合成与天气有关的高级特征。

    特征确实也有局限性,所以需要调参,防止训练数据的过拟合。

  8. Azure
    理由
    举报 取消

    启发式规则,我瞎说的。

我来回答

Captcha 点击图片更换验证码