聊聊机器学习(三) 经验7: 特征工程是关键考虑各种情况,有些机器学习项目成功了,有些项目失败了,到底是什么原因造成的。毫无疑问,最重要的原... 

考虑各种情况,有些机器学习项目成功了,有些项目失败了,到底是什么原因造成的。

毫无疑问,最重要的原因是所使用的特征。

一般而言,原始数据不能直接搬来学习,需要从原始数据中构建特征,这是机器学习项目的主要工作。

而且特征工程这个环节,直觉,创意和偏招,和技术一样重要。

而且特征设计伴随着大量的试验和错误。

而且,机器学习不能做到一次搞定构建数据集和运行学习器,而需要反复迭代,包括运行学习器,分析结果,修改数据,修改学习器等,不断重复这些工作。

学习反而是最快完成的部分,而特征工程更加苦难。

原因很简单,特征工程是具有领域差异性的,而学习是很大程度通用的。

特征相比学习,具有更大的专业差异,用来做股票分类的学习算法和阿猫阿狗的图像识别可能差不多的,但是里面特征工程的差异就很大。

当然,机器学习的终极目标之一就是自动化特征工程,当下常用的一种方法就是自动生成大量的备选特征,然后根据这些特征和分类类别的信息增益等方法来还筛选出好的特征。

而且运行包含大量特征的学习器来寻找有用特征太耗时了,也容易导致过拟合,所以,老老实实地投入精力做特征工程吧,这是底线要求。

从天马Alpha+团队这几年的开发实践来看,特征工程的确是重中之重的环节,也是核心投资团队的交易经验和直觉,最直接的体现。

打个比方,如果让机器学习判断照片里的姑娘是不是美女,借鉴游戏里的捏脸工具,可以找出N个原始特征,比如眉毛就有上下左右位置,角度,眉弓形状,眉峰形状等等。

如果大量使用这些原始的特征进行学习,前面的内容告诉我们,维度过多,很容易出现过拟合和维度灾难等问题。

但是有些经验就可以成为很好的特征,比如下面图里的三庭五眼,或者类似的三低四高,就有可能是学习效果很好的特征。

类似的,基于经验和直觉,对一些原始的技术指标或者基本面指标进行组合加工,就有可能设计出好的特征。

假如已经竭尽所能构建了最好的特征集,但是分类器的效果还是欠佳,这个时候该怎么办?

有两个主要选择:更好的学习算法,或者更多的数据(包括更多的样例,以及不会制造维度灾难的更多原始特征)。

研究者更关心算法,但实践角度来看,捷径应该是收集更多的数据。

作为一条经验,有大量数据的本算法要胜过数据少的聪明算法,毕竟,机器学习就是从数据里面搞出花来。

但是,更多的数据又带来另外一个问题:可升级性(scalability)。

而且,采用更聪明的算法得到的回报少于预期,一部分原因是因为,机器学习学习的工作原理基本是相同的。

这个结论可能有些令人吃惊,尤其当看到规则集合和神经网络的表示方法之间差异巨大的时候。

但本质上,所有的学习器都是把临近的样例归类到同一个类别,关键不同是怎么定义“临近”。

非常不同的分类边界可以产生类似的预测结果,如下图所示

+和-表示两类训练样例,里面K近邻(KNN),决策树(D.Tree),支持向量机(SVM)和朴素贝叶斯(N.Bayes)的表示形式五花八门,但分出来的效果基本是类似的。

首先尝试简单的学习器总归是有好处的,更复杂的分类器很诱人,但通常比较难控制,因为需要调节更多的参数,而且内部机制更不透明。

学习器又可以分为两类:一类是大小不变的,比如线性分类器,另一类大小可变,随着数据增长而变大,比如决策树。

所以,数据超过一定数量后,大小不变的学习器就不能从数据增加中受益。

如果有足够多数据,大小可变的学习器理论上可以学习任何函数,但实际却力不从心,主要是受到算法和计算复杂度的限制。

而且由于维度灾难,再多的数据也不会够用。

由于上面这些原因,只要足够努力,聪明的算法,也就是充分利用有数据和计算资源的算法,最后总是能够成功。

终极而言,最大瓶颈不是数据,不是运算能力,而是人力。

那些可以生产人类可理解的输出的学习器,比如规则集合,理应更受欢迎。

实际很多时候,因为不确定性能,也不知道代码有没有低级错误,需要盯着程序的输出,跟着准确率和误差的上上下下而大喜大悲,所以相当地消耗人力。

本部分最后,Domingo教授做了一个相当华丽的论断:

机器学习最成功的组织,是那些建立了基础架构,能够便捷地在多个学习器,数据源和学习目标上敏捷地开展实验,而且实现机器学习专家和领域专家密切合作的组织。

天马Alpha+开发团队也正是以此为初衷,努力实现机器学习专家和投资专家的密切合作。

一开始的时候,每个人都有自己最爱的一个学习算法,而且先入为主地迷恋它的优越性,然后投入大量的精力尝试这个学习算法的各种模型变种,从中选择最好的那个。

模型变种,比如循环神经网络RNN,产生了两个最广泛使用的模型变种,长短期记忆模型LSTM和门控循环单元GRU。

后面研究发现,与其找最好的那个,不如把多个学习器结合(模型集成)的效果更好,而且往往花更少的人力。

而且现在模型集成已经标准化,常见的方法有bagging(装袋),boosting(强化提升)和stacking(堆叠)等等。

所以团队开始合并,规模越来越大。现在冠亚军都合并了超过100个学习器,把这两者集成后,推荐效果又得到了进一步提升。

毫无疑问,未来会看到更大规模的学习器集成系统。

大名鼎鼎的奥卡姆剃刀原则(occam’srazor)原理称:若无必要,勿增实体(entitiesshouldnotbemultipliedbeyondnecessity)。

机器学习中,这个原则通常是指:对于两个有相同训练误差的分类器,比较简单的那个,更可能有更低的测试误差。

虽然不少文献证明这个原则,但这个原则实际中有很多反例。

因此与直觉相反,模型参数的数量和过拟合之间并没有直接的关联。

另外一个更成熟的看法是把复杂度等同于假设空间的大小,也就是基于这样一个事实:更小的空间假设可以用更短的代码来表示假设。

前面经验六-理论保证里面提到,如果缩小假设空间,边界就会得到改进。这个可以进一步改进为,可以为有先验偏好(priorpreference)的空间假设分配更短的代码。

这里有一个先验偏好的概念,先验字面是先于经验获得的知识,这个点掰下去,哲学家康德就要出场了。

这里还是用另一尊大神YoshuaBengio讲过的一个例子来大致说一下,对于人来说,计算(210除以6等于几)容易,计算(CCX除以VI等于几)则复杂很多。

把数字表示成阿拉伯数字而非罗马数字的理由,就是方便人类计算,这就是一种先验偏好。

但如果把这个准确和简单权衡的证明,就变成循环论证了(先有鸡还是先有蛋)。

意思就是结果是准确的是因为我们的偏好是准确的,而不是因为这些假设的表示方法是简单的。

是偏好是准确的决定了结果是正确的,而这些偏好往往是简单表达的,但不代表简单就能得到准确。

还有一个因素:没有学习器可以穷尽搜索整个假设空间。

一个较大假设空间搜索较少假设的学习器,相比在较小的假设空间搜索较多假设的学习器,更不容易发生过拟合。

正如Pearl指出,假设空间的大小只是对确定影响训练误差和测试误差的关键因素有初步的指导意义。

所以,先选择简单的假设,只是因为简单本身就是个优点,而不是简单和准确有着必然的联系。

本质上,因为大小可变学习器(比如决策树)都有一个类似的定理-“每个函数都可以表达为,或者无线逼近的方式近似地表达为XXX“。

仅仅因为一个函数可以被表示,并不意味着它可以被学习。比如,决策树学习器无法学习出比训练样本更多的叶子节点。

假设空间的评价函数有局部最优点,但学习器压根找不到这个真正的函数,即便它可表示。诸如此类。

所以,关键问题不是可不可以被表示,而是可不可以被学习。

对于一些函数,某些表示方法比其他方法更简单,从而需要更好的数据来进行学习,比如对简单的奇函数进行线性组合等,这种深层表示的学习方法是当下机器学习的主要研究前沿之一。

这样做错了吗?如果是错的,为什么还要这样做。

更多的时候,机器学习预测模型的目的是指导行动,看看数据挖掘里面那个著名的啤酒和尿布的例子。

如果我们发现超市里面啤酒和尿布经常一起购买,那把啤酒放在尿布旁边将会提高将会提高啤酒的销售量。

这个现象背后的原因是妈妈在家中带娃,年轻的爸爸去买纸尿片,顺便给自己买些啤酒。

一些学习算法其实有潜力从观测数据中发现因果关系,但可用性比较差。

很多研究者认为因果关系,纯粹是一个杜撰出来的概念,比如,物理定律中就没有因果的概念。

因果存在与否是个深奥的哲学问题,现在并没有一个确切的答案。

但对于机器学习有2个实用的点,首先,不管是否存在“因果关系”,我们都希望能预测行动的效果。

其次,如果能够获取到实验数据,那务必获取。

”在1997年前,大部分的信号还能被解释,例如超跌/超涨反弹,有60%的概率会反弹。但1997年以后,大部分信号,大家都不能理解了。

与别的对冲基金不同的是,文艺复兴不会去找背后的原因,也不会把信号丢掉,除非信号太离谱。

这种不能解释的信号有额外的超额收益,因为其他对冲基金更可能把这类信号丢掉。

为了防止过拟合,文艺复兴的员工先把这种信号丢到实盘里,用小钱先跑并观察,看一下这种异象能不能理解,大部分时候都能理解。当然也有小部分完全不能理解但确实很强的信号。”

所以,如果预测可以成为行动指南,只要不太离谱,其实一定程度上不必太纠结于因果链条。

结论

和其他学科一样,机器学习中的“旁门左道”不是那么容易就可以能了解到,但这些知识对于成功运用机器学习又至关重要。

读者可以参加一个完整内容的机器学习在线课程融合了正式和非正式的知识,网站是

Weka是一款优秀的机器学习开源工具包。

刘知远《机器学习那些事》

周志华《MachineLearning》学习笔记

吴恩达(AndrewNg)《机器学习》课程笔记

YoshuaBengio访谈笔记:用意识先验糅合符号主义与联结主义

VincentSpruyt,

THE END
1.数据挖掘概念与流程和数据预处理与特征工程二、特征工程 三、数据挖掘概念 四、数据挖掘流程 一、数据预处理 数据预处理是在进行数据分析、建模等操作之前,对原始数据进行的一系列处理步骤,目的是提高数据质量,使其更适合后续的分析和处理。主要包括以下几个方面: 1. 数据收集 从各种数据源(如数据库、文件、网络接口等)获取相关的数据。收集过程中要确保数据https://blog.csdn.net/2301_81709812/article/details/143275730
2.特征工程实施步骤特征工程实施步骤 来源:Coggle数据科学 入门特征工程 1. 为什么特征工程很重要? 对于不同的数据科学家,特征工程可能呈现不同的意义。对于一些数据科学家,特征工程是我们如何缩减用于监督模型的特征(例如,试图预测响应或结果变量)。 对于其他人,它是从非结构化数据中提取数值表示以供无监督模型使用的方法(例如,试图从https://www.elecfans.com/d/6234154.html
3.数据挖掘的一种方法是机器学习,以下哪些属于使用机器学习构建AI百度试题 题目数据挖掘的一种方法是机器学习,以下哪些属于使用机器学习构建AI模型的相关步骤( )。 A. 特征工程 B. 样本切分 C. 算法选取 D. 模型评估 相关知识点: 试题来源: 解析 A,B,C,D 反馈 收藏 https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=cb1a6c20ccbff121dd3683c4&fr=search
4.图解机器学习特征工程本篇内容,ShowMeAI带大家一起来系统学习一下特征工程,包括『1.特征类型』『2.数据清洗』『3.特征构建』『4.特征变换』『5.特征选择』等板块内容。 Titanic实战项目 我们这里用最简单和常用的Titanic数据集给大家讲解。 Titanic 数据集是非常适合数据科学和机器学习新手入门练习的数据集,数据集为1912年泰坦尼克号沉船http://www.360doc.com/content/23/0924/12/47115229_1097700467.shtml
5.数据分析流程包括哪些步骤综上所述,数据分析流程包括了问题定义、数据采集、数据探索和可视化、数据预处理和特征工程、建立模型和算法选择、模型评估和优化、模型应用和结果解释等七个步骤。 数据分析过程中需要使用的分析方法 在数据分析过程中,需要使用多种分析方法和技术,以从数据中提取有用的信息和洞察。下面介绍几种常见的数据分析方法和技https://www.linkflowtech.com/news/1597
6.数据挖掘的步骤特征工程mob64ca12e83232的技术博客数据挖掘的步骤与特征工程 数据挖掘是一个复杂而系统的过程,涉及从原始数据中提取信息和知识。一个重要的阶段是特征工程,它对于模型的性能有着至关重要的影响。在这篇文章中,我们将探讨数据挖掘的主要步骤,深入分析特征工程,并通过代码示例加以说明。 数据挖掘的主要步骤 https://blog.51cto.com/u_16213397/12325092
7.数据挖掘——特征工程没有神保佑的瓶子数据挖掘——特征工程 特征工程(Feature Engineering) 特征工程其本质上是一项工程活动,它的目的是最大限度地从原始数据中提取特征以供算法和模型使用。 特征工程的重要性: 特征越好,灵活性越强 特征越好,模型越简单 特征越好,性能越出色 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。特征工程的最终https://www.cnblogs.com/rix-yb/p/9827463.html
8.一种基于深度学习算法的审计知识图谱实体抽取方法与流程16.步骤2.1)提取文本通用特征hw:采用bilstm模型对描述文本w每个时刻前向和后向特征进行学习,拼接两个输出作为bilstm的输出向量。bilstm的输出向量作为berta模型输入向量进行编码,以最后一层的隐层状态作为描述文本w的通用语义特征hw; 17.步骤2.2)构建审计特征专业词典la:通过词典匹配找到输入文本中所有可能形成专业表达https://www.xjishu.com/zhuanli/55/202111682324.html
9.深度学习500问——Chapter02:机器学习基础(1)当原始数据搜集和标注完毕,一般搜集的数据并不一定包含目标在各种扰动下的信息。数据的好坏对于机器学习模型的预测能力至关重要,因此一般会进行数据增强。对于图像数据来说,数据增强一般包括:图像旋转,平移。颜色变换,裁剪,仿射变换等。 步骤3:特征工程(Feature Engineering) https://cloud.tencent.com/developer/article/2398336
10.特征工程之前言介绍(0.0):什么是特征工程?特征工程解决了什么特征工程是数据挖掘模型开发中最耗时、最重要的一步。 意义 特征工程(Feature Engineering)特征工程是将原始数据转化成更好的表达问题本质的特征的过程,使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度。 特征工程简单讲就是发现对因变量y有明显影响作用的特征,通常称自变量x为特征,特征工程的目的是发https://www.jianshu.com/p/da661b73ede1
11.数据挖掘论文而在医疗信息管理过程之中应用数据挖掘技术能够较好地针对医疗卫生信息进行整理与归类来建立管理模型,形成有效的总结数据的同时能够为医疗工作的高效进行提供有价值的信息。所以笔者将以数据挖掘技术在医疗信息管理中的应用为着手点,从而针对其应用现状进行探究,以此提出加强数据挖掘技术在医疗信息管理中应用的具体措施,希望https://www.ruiwen.com/lunwen/7945818.html
12.不会做特征工程的AI研究员不是好数据科学家!上篇任何智能系统基本上是由一个端到端的流程组成,从数据原始数据开始,利用数据处理技术来加工、处理并从这些数据中设计出有意义的特征和属性。然后我们通常利用统计模型或机器学习模型在这些特征上建模,如果未来要使用的话,就基于眼前要解决的问题部署模型。一个典型的标准的基于CRISP-DM(注:跨行业数据挖掘标准流程)工业https://www.leiphone.com/category/ai/T9JlyTOAMxFZvWly.html