理性看待机器学习,不吹不黑。
本章对一些机器学习的术语进行介绍,还将对一些常用的参数符号进行解释,后文里不再赘述。
1、输入与输出
在机器学习过程中,首先我们要喂给机器很多数据,然后机器根据一定的算法给出结果。这是一个包含了输入和输出的过程。
输入:我们称之为属性值Attributes,或称之为特征Feature,统计学中称之为变量Variable。为了统一概念,后续文章里对机器学习的输入我们称都其为特征。
输出:最终需要预测的信息,称其为目标Target。
2、特征表现方式
比如一份体检报告中,我们想预测一个人是男是女。这些体检报告中的数据称之为特征,其中可能包括身高、体重、腰围,这三个变量,并为之设三个变量:x1、x2、x3。
注意下标的方式,为了以后的文章里统一概念,一般几号特征就定义其下标是多少。
比如,小明的体检报告:用 x小明 来表示。
比如,小明的体重:用 x2小明 或 x体重小明 来表示。
3、造物主的公式
终极目标:我们想要得到一个特征与目标之间的映射:
理想公式 (造物主公式) f:特征值 → 目标值
为了实现理想公式,我们将大量的数据喂给机器,并指挥机器不断学习和优化。
输入数据:D={(x1,y1),(x2,y2),(x3,y3), …… ,(xn,yn)}(历史记录信息)
最终获得了最优性能假设公式 g:特征值 → 目标值 (学习得到的最终公式)
最优性能假设公式形成后,再输入新的特征值便可直接获得对应的目标值。寻找这种映射的过程是我们工作的核心内容。
然而事实上,我们真的得到理想公式了么?理想公式到底是什么?只有造物主才能百分百的确定。我们使用机器学习最后得到的算法,最多只能说是尽可能得去接近于造物主创造的映射公式,我们做不到完美,只能靠机器学习去获得一个最优性能假设的公式。
再比如后续会提到机器学习模型调参的操作,不断调整参数的过程就是为了找到一个更加优秀的映射关系来解释造物主公式的过程。
所以,机器学习中无法获得一个完美的造物主公式。
4、机器学习概念
定义:对于某给定的 ,在合理的 的前提下,某计算机程序可以自主学习任务T的 ; 随着提供合适、优质、大量的经验E,该程序对于任务T的性能逐步提高。
例:盖一个金茂大厦是我的 "任务T" ,一些用来检验我盖的楼像不像金茂大厦的方式称为 “合理的性能度量P” ,"经验E" 是我们按照图纸盖楼的砖。当砖足够多的时候,不断反复的盖楼,这张盖楼的图纸不断优化,最后盖出来的楼也越来越像金贸大厦。这张盖楼的图纸是最后的产物,即上文提到的 "最优性能假设公式”。
从机器学习的概念转化为实际的开发思路:
算法T:根据业务需要和数据特征,选择则相关的算法。
模型E:基于数据和算法构建出来的模型。
评估/测试(P):对模型进行评估的策略。
机器学习步骤: 算法 → 模型 → 评估 → 算法
机器学习是人工智能的一个分支。机器学习的思路是:根据大量的训练数据,按照一定的方式来指导机器学习;随着机器训练次数的增加不断得学习和改进,最终使得学习模型能够用于预测相关问题的输出。拿之前盖楼的例子来说,我们要不断得修改图纸的内容,使其越来越像金茂大厦。
5、向量和矩阵
在机器学习中,如果定义了一个向量,那么一定是列向量,多个列向量组成一个矩阵。
下图是一个3行2列的矩阵,3行代表有3个体检报告的样本(维度是3),2列代表每个体检报告的样本包含2个特征。
身高 | 体重 |
---|---|
175 | 70 |
160 | 58 |
85 | 77 |
将样本数据传入最优性能假设公式进行计算,得出了目标值:判断样本数据的所有者是男是女。1代表男,0代表女。
身高 | 体重 | 目标 |
---|---|---|
175 | 70 | 1 |
160 | 58 | 0 |
85 | 77 | 1 |
x(i) 表示第i个样本的x向量。即一个样本的值 ,包含一组特征 (身高,体重)
xi 表示x向量的第i维度的值。即一个特征的所有值(x2=体重向量)
6、鲁棒性
Robwst,翻译成中文是稳健性、健壮性的意思。当存在异常数据的时候,算法也会拟合数据。简单的说,系统能够识别出异常的数据,不会让它影响到计算的结果。
鲁棒性强,意味着异常数据对系统的影响较小。鲁棒性差,意味着一旦出现了异常数据,模型会去迎合这些异常数据,使结果收到干扰。
7、过拟合和欠拟合
算法太符合样本的特征,对于实际的数据特征反而无法拟合。
拿之前体检样本的例子来说,如果有一天来体检的全是女子篮球队的,人人一米八、一米九的身高。算法如果太拟合这份样本数据,按照这样去计算,那大街上就没几个男人了。
算法不太符合样本的数据特征。
如果本来计算的目标就是想预测女篮的身高,但是算法结果中表明女篮平均身高是一米五、一米六的。这显然低于普遍的女篮身高,这种现象称为算法欠拟合。
总体来说,过拟合是在训练集上表现出色,但是在测试集上表现不好。而欠拟合在训练集上的表现就已经不太好了,自然都不用拿测试集去验证了。
8、常见的应用框架
scikit-learn(Python)
http://scikit-learn.org/stable/
后续文章主要介绍的是scikit-learn框架。
安装scikit-learn的方法:
1、 安装Anaconda3
2、 打开Anaconda-Prompt
3、 输入pip install scikit-learn
4、导入该库的指令 import sklearn
具体的安装方法日后可以看我的AI-开发工具文集,里面会详细介绍。
以下两种是基于大数据处理的框架,暂时不作介绍。
Mahout(Hadoop,基于MapReduce)
http://mahout.apache.org/
Spark MLlib
http://spark.apache.org/
9、商业场景
模式识别、数据挖掘、统计学习
图像识别、语音识别、自然语言处理
数据分析、数据挖掘、机器学习之间的区别和联系
对海量的数据进行分析,并提取有用的信息,以及形成结论。是一种对数据详细研究和概括的过程。实际工作中可以帮助人们做出判断,数据分析一般而言可以分为统计分析、探索性数据分析、验证性数据分析三大类。
其中统计分析和验证性数据分析在机器学习中也会用到。需要我们对数学统计中的概念有基本的认知。比如中位数、方差、均值、特征值之间的协方差等等,都需要了解,对样本的初步浏览过程就是探索性分析。验证性数据分析是对结果是否合理进行分析,在机器学习中就是不断地判断模型的效果指标是否在提升。
一般值从大量数据中通过算法搜索隐藏于其中信息的过程。通常通过统计、检索、机器学习、模式匹配等诸多方法来实现这个过程。
涉及面非常广,很多时候企业有数据却不知道从何下手。数据挖掘就是从毫无头绪的数据中大胆预测并分析出有价值的信息。
是数据分析和数据挖掘的一种比较常用、比较好的手段。
工作中会遇到一些坑:比如有些客户提出做一些数据分析的需求,但是客户不懂技术,给的数据又少又乱,很多时候还需要提醒客户补充一些必要的数据。从客户立场上来说,数据即是金钱。客户透露的数据越多,损失就越大。因此做人工智能相关的工作非常考验工程师的沟通能力,控制客户的期望值,充分告诉客户我们分析的产物能够为企业提供哪些帮助、我们做的模型比别人好在哪里。
10、机器学习分类
有目标值,标签化训练数据。
判别式模型:对条件概率进行建模。线性回归、决策树等。
生成式模型:对联合分布概率进行建模。隐马尔可夫、LDA等。
生成式模型适用面更广,关注数据是如何产生的,寻找的是数据的分布模型。
判别式模型更直接,目标性比较强。只想看看某个条件的情况下的分布是什么样的。关注的是数据的差异性,寻找的是分类面。
因此生成式的模型可以转化成判别式的模型,反之则不行。在后文具体模型中进一步细说,面试中考官有时会问某个模型属于生成式还是判别式,记住这点即可。
无目标值,为了推断出数据的一些内在结构,一种探索性分析的过程。
利用少量标注样本和大量未标注样本进行训练和分类的问题。发展不是很完整,和流形学习有点关系,本文集不做讨论。
结语
很想直接进入算法的部分,但是觉得在深入介绍之前,我们还是要把铺垫做做充分。
昨天就有人问我这次写的文集是仅仅搞理论,还是会深入进去研究?我的回答是:落地。但是学习人工智能的过程和学习JAVA开发不同,不是简单看几行代码,查两几份资料就能迅速入门的。所以我花了点心思设计了几个例子让大家管中窥豹,对机器学习的工作有大概的理解。也许有不贴切的地方,但随着日后的文章,从多个角度进行分析,相信大家的认知会越来越深刻。