Tom Mitchell —— Meaching Learning
A computer program is said to learn to perform a task T from experience E, if its performance at task T, as measured by a performance metric P, improves with experience E over time.Machine Learning is a subfield within Artificial Intelligence that builds algorithms that allow computers to learn to perform tasks from data instead of being explicitly programmed.
1. 机器学习的应用领域
机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习的应用领域十分广泛,例如图像中的目标检测 ( Object Detection ),光学字符识别 ( Optical Character Recognition,OCR ),文本分析中的垃圾邮件过滤 ( Spam Filtering ) 和情感分析 ( Sentiment Analysis ),数据挖掘中的异常值检测 ( Anomaly Detection )和聚类 ( Clustering ) 以及视频中的自动驾驶和机器人技术。
2. 机器学习算法如何工作
机器学习是对能通过经验自动改进的计算机算法的研究。一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,而且仅当有了经验E后,经过P评判,程序在处理任务T时的性能有所提升。
A computer program is said to learn to perform a task T from experience E, if its performance at task T, as measured by a performance metric P, improves with experience E over time.
例如鼎鼎大名的阿尔法围棋 ( AlphaGo ) 通过大量的学习人类棋手的比赛 ( experience E ),最终在围棋比赛 ( task T ) 中战胜 ( performance P ) 了人类的顶尖围棋高手。那么我们可以说 AlphaGo 通过机器学习获得了人工智能 ( Artificial Intelligence )。
想象如下两幅画面:
(a) 当你向智能系统输入一张特朗普的照片,系统会输出特朗普的名字;
(b) 当你向智能系统输入一段歌声,系统会输出这段歌声所对应的歌词;
在例子(a)中,人脸识别系统的“经验E”就是由包含特朗普的照片和其他照片组成的图像集合,“性能P”就是判断特朗普照片正确的概率。同理,语音识别系统的”经验E”就是每个文字所对应的各种语音数据,“性能P”就是一段语音中文字识别的准确率。
因此为了能够通过机器学习算法训练“智能系统”,我们必须拥有包含许多训练样本 ( training examples ) 的数据集 ( dataset )。通常会将每一个样本 ( sample )表示成一些属性 (attribute) 或者特征 (feature) 的固定集合,以生成计算机能够理解的数据。
3. 机器学习算法的分类
从是否使用训练数据标签的角度,机器学习算法可以分为监督学习和非监督学习两大类。监督学习的训练集要求包括输入数据和对应的输出标签,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出。在非监督学习中,输入数据没有对应的输出标签,也就没有确定的正确结果,需要根据样本间的相似性去发现数据本身的内在规律。
在监督学习中,最常用的两种方法是分类 ( Classification ) 和 回归 ( Regression ),分类和回归最本质的区别就是其输出的标签值是否是连续的。假设明天的天气为有雨和没有雨,那么可以将有雨的情况视为0,没有雨的情况视为1,那么输出的值就是离散的( 0和1 )。那么根据今天的天气预测明天有没有雨就可以视为分类。假设不能准确判断明天是否下雨或者不下雨,但是可以根据今天的天气给出明天下雨的概率值,概率值可以在[0, 1]范围内的连续值,值越大,下雨的概率越高。因此根据今天的天气判断明天下雨的概率为0.8就可以视为回归。在非监督学习中,最常用的方法是聚类 ( Clustering )。例如有一堆苹果和橘子装在一个黑箱子里,假设我们事先不知道盒子里是橘子和苹果,那么我们可以根据水果的大小将其分为两类,但是并不清楚每一类究竟是什么水果,这个过程可以视为聚类。
4. 常见机器学习算法的优缺点
4.1 朴素贝叶斯算法
朴素贝叶斯属于生成式模型(关于生成模型和判别式模型,主要还是在于是否是要求联合分布),如果满足条件独立性假设,朴素贝叶斯分类器的收敛速度将快于判别模型,例如逻辑回归。即使NB条件独立假设不成立,NB分类器在实践中仍然表现的很出色。它的主要缺点是它不能学习特征间的相互作用,比如,虽然你喜欢 A 和 B 主演的电影,但是它不能学习出你不喜欢 A 和 B 在一起演的电影。
优点:
- 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
- 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练。
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点:
- 需要计算先验概率。
- 分类决策存在错误率。
- 对输入数据的表达形式很敏感。
4.2 逻辑回归算法
逻辑回归 ( Logistic Regression ) 属于判别式模型,有很多正则化模型的方法 (例如 L0
、 L1
和 L2
范数等,而且不用像朴素贝叶斯方法那样假设特征之间互不相关。与决策树与支持向量机相比,得到的概率结果可以进行解释,而且可以方便地利用新数据来更新模型。
优点:
- 实现简单,广泛的应用于工业问题上。
- 分类时计算量非常小,速度很快,存储资源低。
- 便利的观测样本概率分数。
- 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题。
缺点:
- 当特征空间很大时,逻辑回归的性能不是很好。
- 容易欠拟合,一般准确度不太高。
- 不能很好地处理大量多类特征或变量。
4.3 线性回归算法
线性回归是用于回归的,而不像Logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以使用正规方程 ( normal equation ) 直接求得参数的解。
优点:
- 实现简单,计算简单。
缺点:
- 不能拟合非线性数据。
4.4 最近邻算法
最近邻 ( K Nearest Neighbor,KNN ) 算法简单易行,具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。需要根据数据的实际情况选择合适的 K
值。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。
算法的基本流程:
- 计算训练样本和测试样本中每个样本点的距离;
- 对所有计算的距离值进行排序;
- 选前k个最小距离的样本;
- 根据这k个样本的类别标签进行投票,得到最后的分类类别。
优点:
- 理论成熟,思想简单,既可以用来做分类也可以用来做回归。
- 可用于非线性分类。
- 训练时间复杂度为O(n)。
- 对数据没有假设,准确度高,对离群点(outlier)不敏感。
缺点:
- 计算量大。
- 样本不平衡问题(例如类别A的样本数量很多,而类别B的样本数量则很少)。
- 需要大量的内存。
4.5 决策树算法
决策树易于解释,可以轻松地处理特征间的交互关系,但是不支持在线学习,当有新样本时,决策树需要全部重建。而且决策树容易过拟合,但是随机森林算法通过集成多个决策树可以解决过拟合的问题。
优点:
- 计算简单,易于理解,可解释性强。
- 比较适合处理有缺失属性的样本。
- 能够处理不相关的特征。
- 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点:
- 容易发生过拟合(随机森林可以很大程度上减少过拟合)。
- 忽略数据之间的相关性。
- 样本不平衡问题 (决策树的信息增益偏向于具有更多数值的特征)。
4.6 Adaboosting算法
Adaboost是一种加和模型,每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型。
优点:
- Adaboost是一种有很高精度的分类器。
- 可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
- 当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单。
- 不用做特征筛选,不容易过拟合。
缺点:
- 对离群点(outlier)较为敏感。
4.7 支持向量机算法
支持向量机(Support Vector Machine,SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。支持向量机准确率高,为避免过拟合提供了很好的理论保证,而且即使数据在原特征空间线性不可分,也可以通过核函数将原特征空间映射到更高维线性可分的空间,但是内存消耗大,难以解释,运行和调参比较麻烦。
优点:
- 可以解决高维特征空间问题。
- 能够处理非线性特征。
- 无需依赖整个数据。
- 泛化能力强。
缺点:
- 数据样本很多时,效率不高。
- 对非线性问题没有通用解决方案( 很难找到恰当的核函数 )。
- 对缺失数据敏感。
4.8 神经网络
神经网络(Neural Network)是一种运算模型,由大量的节点(或称神经元)相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重。网络的输出则依赖于网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
优点:
- 分类的准确度高。
- 并行分布处理能力强,分布存储及学习能力强。
- 对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系。
- 具备联想记忆的功能。
缺点:
- 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值。
- 不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度。
- 学习时间过长。
4.9 K-Means聚类算法
K均值聚类( K-Means Clustering )算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。该算法以K为参数,把N个对象分为K个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值(簇的重心)来进行。首先随机选择K个对象,每个对象代表一个聚类的质心。对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中。然后,计算每个聚类的新质心。重复上述过程,直到准则函数(例如误差的平方和)收敛。
优点:
- 算法简单,容易实现。
- 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(NKT),其中N是所有样本的数量,K是簇的类别数,T是迭代次数。
- 当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。
缺点:
- 对数据类型要求较高,适合数值型数据。
- 可能收敛到局部最小值,在大规模数据上收敛较慢。
- 难以选取合适的K值。
- 对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果。
- 对于孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。