摘要:本文试图对“机器学习”做一个概况描述,用简单易懂的方式介绍它的一些基本概念以及一些应用场景,并简单介绍目前机器学习在商业领域的主要应用和成就。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、 凸分析、算法复杂度等多门学科。主要研究的是从大量已知的数据和信息中找出未知的规律。它的本质是模式识别,是人工智能的核心。
计算机科学家Tom Mitchell对机器学习的定义为,“一个程序在完成任务T后获得了经验E,其表现为效果P,如果它完成任务T的效果是P ,那么会获得经验E”。例如,假设你有一些图片,每个图片里是一条狗或一只猫。程序可以通过观察图片来学习,在学习到分辨能力之后,对新的包含有猫或者狗的图片具有识别归类的能力。我们可以对它识别新图片的能力来进行模型效果评估。
本文先介绍机器学习的两种主要形式:监督学习和无监督学习;然后介绍它们的主要任务,以及处理任务过程中所需要用到的数据集概念;最后介绍学习效果评估方式和评估涉及到的常用概念(过拟合、欠拟合)。
监督学习 VS 无监督学习
机器学习形式主要分为两种:监督学习和无监督学习。介于两者之间的是半监督学习(Semi-Supervised Learning)。
监督学习(supervised learning)
如果把监督学习的目的类比为考试,那么监督学习就是利用一些训练数据(练习题),构建出一种模型(解题方法),能够用来分析未知数据(考试)。
直白一点说,就是在监督学习中,必须存在一个训练集,对训练集里边的每个特征或者每个特征组合x,都有唯一确定的标签y与之对应,我们需要通过训练,找到一个y与x的对应关系的模型,使得对训练集以外的数据x’,能够预测出它对应的y'。
明确定义一下,监督学习是从给定的训练数据集中学习出一个函数模型,当新的数据到来时,可以根据这个函数模型来预测结果。它要求训练数据集中包含输入变量(特征)和输出变量(目标)。
这里的输入变量和输出变量有很多名称,本文主要使用解释变量和响应变量:
无监督学习(unsupervised learning)
仍旧以学习做类比,无监督学习就是,我们手里有一些问题,但是我们不知道答案,我们只能按照这些问题的特征,将它们分类,比如数学题分为一类,英语题分为一类,语文题分为一类。
这种学习又称为归纳学习,即事先不知道样本类别(样本没有标签),通过一定的方法,将相似的样本归为一类(然后再通过定性分析,就可以给不同的分类加上标签了)。
半监督学习(semi-supervised learning)
介于监督学习和无监督学习之间的,是半监督学习,即训练数据中有一部分是有便签的,一部分是没有标签的,没有标签的数据往往占绝大多数。从不同的场景看,半监督学习又可以分为半监督分类、半监督回归、半监督聚类、半监督降维。
机器学习的主要任务
监督学习的主要任务是预测,可以分为回归性预测和分类性预测。
回归预测:预测连续型变量的数值,例如预测新产品销量,预测交易增长量等。
根据输入变量的个数,可以分为一元回归和多元回归:
- 一元回归:输入变量只有1个,如y = ax + b,只有一个输入变量x
- 多元回归:输入变量有2个或者2个以上,如y = ax1 + bx2 + c,有两个输入变量 x1 和 x2
这里采用简单的一元线性方程表示一元线性回归模型,严格的模型定义还有一个误差项,后续一元线性回归文章中会提到
根据输入变量的指数,可以分为线性回归和非线性回归:
- 线性回归:每个输入变量的指数都是1,例如典型的线性回归方程y = ax + b 中,输入变量x的指数是1
- 非线性回归:至少有一个输入变量的指数不等于1,例如方程y = ax^2 + b,输入变量x的指数是2;方程y = ax^(-1) + b,x的指数为-1。
分类预测:预测目标变量的分类或者标签,例如根据病症预测病人的疾病类型,根据文本内容预测是否为垃圾短信,P2P平台根据借款期限和年化收益率等指标预测风险类型等。
常用的监督学习算法
- 回归分析:线性回归,逻辑回归
- 统计分类:朴素贝叶斯,决策树,随机森林,AdaBoost,神经元网络等
无监督学习的主要任务是聚类(Clustering),即发现观测值的类别(但是无法知道每个组别的具体标签,需要再进行定性分析),通过一些相似性度量方法,把相似的观测值分到同一类别,使得同一组别之间的相似度最大,不同组别之间的相似度最小。例如根据用户属性和行为特征进行个性化推荐。
无监督学习的另一个常见的任务是降维(dimensionality reduction)。有些问题可能包含成千上万个输入变量,会导致模型过于复杂,训练速度过慢,并且难以可视化;甚至存在一些噪音或者完全无关的变量,影响模型的归纳能力。降维就是发现对输出变量影响最大的输入变量的过程,它将原来众多的具有一定关系的变量,重新组合成一组新的互相无关的综合变量,来代替原来的指标,并且尽可能多的反映原来变量的信息。
常用的无监督学习算法
- 聚类算法,如K-Means,主成分分析PCA,混合高斯模型GMM等
训练集 VS 测试集
一般做预测型分析时,会将数据集分为训练集(Training Set)和测试集(Test Set),训练集用来构建模型,测试集用来验证构建好的模型的泛化能力(对具有同一规律的训练集以外的数据,经过训练的模型也能给出合适的输出)。
有时候模型构建过程中,也需要检验模型,辅助模型的构建,所以会将训练集再分成两部分:1)训练集;2)验证集(Validation Set)。验证集主要用来确定网络结构或者控制模型复杂程度的参数。
典型的划分是:训练集75%,测试集25%;或者训练集50%,验证集25%,测试集25%。
如果数据集本身非常少,可能存在训练集不够而无法很好的构建模型的情况。交叉验证(Cross Validation)可以很好的解决这个问题。它的主体思想是,把数据集随机分成N等份,用其中N-1份做训练,剩余1份做测试,然后一次迭代。例如将数据分成5等份:
过拟合 VS 欠拟合
训练集和测试集的数据应该严格区分,不能出现交叉或者重合。否则很难评价构建的模型,是从训练集中学到了归纳能力,还是仅仅记住了训练集的特征。
对训练集的这种记忆称为过拟合(over-fitting),简单来说就是模型对训练集的数据准确率高的离谱,却无法适应训练集以外的测试集数据。
给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。
一个过拟合的模型,泛化能力较差,因为它仅仅是记忆了训练集的关系和结果,如果存在噪音,连同噪音也会记忆。
一般过拟合的原因是训练集中存在噪音或者训练集数据太少。解决的方法有:
虽然很多机器学习算法能力会随着训练集的增加而增强,
但是机器学习也有句话叫“Garbage in, garbage out”,
如果一个训练集非常庞大但却包含了太多噪声、没有关联或者错误的数据,
训练出来的模型效果不会比只学习一小部分更有代表性的训练集的效果更好
与过拟合相对的,是欠拟合,即模型不能很好的捕捉到数据特征,不能很好的拟合数据。解决欠拟合的方法有:
- 添加其他特征项
- 添加多项式特征,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强
- 减少正则化参数,因为正则化是用来防止过拟合的,欠拟合的情况下,就要减少正则化参数
一开始模型往往是欠拟合的,也正因此,我们可以通过调整算法来对模型调优,但是优化到一定程度以后,又需要注意过拟合的问题。如何平衡过拟合和欠拟合,是很多机器学习算法模型需要面对的问题。
模型评估
监督学习中,有很多评估指标用来评估模型的预测误差。其中两个基本的指标是:偏差(Bias)和方差(Variance)。
偏差和方差就像飞镖射到靶子上,每个飞镖都是从不同数据集得出的预测结果。
理想情况下,模型应该具有低偏差和低方差,但是两者具有背反特征,要降低一个指标的时候,另一个指标就会增高。这就是著名的偏差-方差均衡(Bias-Variance Trade-off)。
监督学习模型的评估指标还有很多(后续介绍):
无监督学习,聚类模型,评价指标主要有Adjusted Rand Index(兰德指数),互信息和轮廓系数,暂不详说。
机器学习的应用
2016年,机器学习、人工智能领域取得了很多突飞猛进的进展,称作机器学习元年也不为过。全球各大公司都在进行机器学习的研究,或者通过收购机器学习领域的初创公司来迅速进入这个领域。2016年,谷歌AlphaGo战胜了李世石,各大巨头公司纷纷开源深度学习相关框架和工具包,亚马逊将人工智能服务纳入AWS,无人驾驶成为“风口”,各大巨头涌入,百度推出的无人驾驶在美国开始测试,京东试水无人机、仓储机器人等等。
如今机器学习的应用领域已经非常广泛,例如数据挖掘、人脸识别、语音识别、自然语言处理、医学诊断、信用卡欺诈、证券市场分析等等。
然而机器学习在应用领域也存在诸多争论,例如偏见(Bias)问题:自动汽车保险报价可能存在歧视性定价,刑事判决预测模型可能存在种族偏见,图像分类器将“肤白”作为漂亮要素等等。而针对这些争论,也有专家学者纷纷为其正名,如Cathy O’Neil在《数学杀伤性武器》(Weapons of Math Destruction)中提出:“算法是没有偏见的,研制算法的人才可能有偏见”。