人工智能应用基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 机器学习常用算法

在神经网络的成功带动下,越来越多的研究人员和开发人员都开始重新审视机器学习,尝试用某些机器学习方法自动解决一些应用问题。

以下将介绍数据科学家们最常使用的六种机器学习算法,包括线性回归、支持向量机、决策树、K-近邻算法、朴素贝叶斯算法、K均值聚类算法。

2.2.1 线性回归

线性回归(Linear Regression)是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y=w'x+ee为误差服从均值为0的正态分布。在回归分析中,如果只包括一个自变量(x)和一个因变量(y),且二者的关系可用一条直线(斜率为w')近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

线性回归是回归分析中一种经过严格研究并在实际应用中广泛使用的类型。这是因为线性依赖与其未知参数的模型比非线性依赖与其位置参数的模型更容易拟合,而且产生的估计的统计特性也更容易确定。在机器学习中,有一个奥卡姆剃刀(Occam's Razor)原则,主张选择与经验观察一致的最简单假设,是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选最简单的那个”。线性回归无疑是奥卡姆剃刀原则最好的例子之一。

一般来说,线性回归都可以通过最小二乘法求出方程式,即可以计算出y=w'x+e的直线。但是线性回归模型也可能用别的方法来拟合,比如用最小化“拟合缺陷”。另外,“最小二乘法”逼近也可以用来拟合那些非线性的模型。因此,尽管“最小二乘法”和“线性模型”是紧密相连的,但它们并不能画等号。

人们早就知晓,相比凉爽的天气,蟋蟀在较为炎热的天气里鸣叫更为频繁。数十年来,昆虫学者已将每分钟的鸣叫声和温度方面的数据编入目录。现在,我们已经拥有蟋蟀数据库,希望利用该数据库训练一个模型,从而预测鸣叫声与温度的关系。我们首先将数据绘制成图表,了解数据的分布情况,如图2-12(a)所示。我们可以发现,数据的分布接近一条直线。

可以画出一条直线来模拟每分钟的鸣叫声与温度(单位:摄氏度)的关系,如图2-12(b)所示。事实上,虽然该直线并未精确无误地经过每个点,但针对我们拥有的数据,还是清楚地显示了鸣叫声与温度之间的关系。

图2-12 每分钟的鸣叫声与温度(单位:摄氏度)之间的关系

只需运用一点代数知识,就可以将这种关系写下来,如下方程式所示:

y=kx+b

其中,

y指的是温度(以摄氏度表示),即我们试图预测的值。

b指的是y轴截距。

x指的是每分钟的鸣叫声次数,即输入特征的值。

k指的是直线的斜率。

按照机器学习的惯例,需要写一个存在细微差别的模型方程式:

y’=w1.x1+b

其中,

y’指的是预测标签(理想输出值)。

b指的是偏差(y轴截距)或偏置项(bias)。而在一些机器学习文档中,它称为w0

x1指的是特征(已知输入项)。

w1指的是特征1的权重。权重与上面用k表示“斜率”的概念相同。

要根据新的每分钟的鸣叫声值x1推断(预测)温度y’,只需将x1的值代入此模型即可。

另外,本例中下标(例如w1x1)表示有单个输入特征x1和相应的单个权重w1。如果有多个输入特征表示更复杂的模型,例如,具有两个特征的模型,则可以采用以下方程式:

y=’w1. x1+w2. x2+b

2.2.2 支持向量机

在深度学习盛行之前,支持向量机(Support Vector Machine,SVM)被认为是最常用并且最常被谈到的机器学习算法。支持向量机是一种有监督学习方式,可以进行分类,也可以进行回归分析。

SVM产生于1964年,在20世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、文本分类等模式识别(Pattern Recognition)问题中得到应用。SVM使用铰链损失函数(Hinge Loss)计算经验风险(Empirical Risk),并在求解系统中加入了正则化项,以优化结构风险(Structural Risk),是一个具有稀疏性和稳健性的分类器。SVM可以通过核方法(Kernel Method)进行非线性分类,是常见的核学习(Kernel Learning)方法之一。

支持向量机原理示意图如图2-13所示,图中表示的是线性可分状况。其中,图中的直线A和直线B为决策边界,实线两边的相应虚线为间隔边界,间隔边界上的带圈点为支持向量。在图2-13(a)中,我们可以看到有两个类别的数据,而图2-13(b)和图2-13(c)中的直线A和直线B都可以把这两类数据点分开。那么,到底选用直接A还是直线B来作为分类边界呢?支持向量机采用间隔最大化(Maximum Margin)原则,即选用到间隔边界的距离最大的决策直线。由于直线A到它两边虚线的距离更大,也就是间隔更大,则直线A将比直线B有更多的机会成为决策函数。

图2-13 支持向量机原理示意图

在小样本的场景中,SVM是分类性能较稳定的分类器。

2.2.3 决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成的图形很像一棵树的枝干,故称决策树,如图2-14所示。在机器学习中,决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。

图2-14 决策树

决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

分类树(决策树)是一种十分常用的分类方法,是机器学习预测建模的一类重要算法。我们可以用二叉树来解释决策树模型。在图2-14中根据算法和数据结构建立的二叉树,每个节点代表一个输入变量及变量的分叉点。

决策树的叶节点包括用于预测的输出变量。通过树的各分支到达叶节点,并输出对应叶节点的分类值。树可以进行快速的学习和预测,通常并不需要对数据做特殊的处理,就可以使用这个方法对多种问题得到准确的结果。

2.2.4 K-近邻算法

1. K-近邻算法的原理

K-近邻算法(K-Nearest Neighbor,KNN)的工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中的每一个数据与所属分类对应的关系。输入没有标签的新数据后,将新数据中的每个特征与样本集中数据对应的特征进行比较,提取出样本集中特征最相似的K个最近邻数据的分类标签。

2. KNN算法的流程

KNN算法可以分为以下5个步骤:

• 计算测试数据与各个训练数据之间的距离。

• 按照距离的递增关系进行排序。

• 选取距离最小的K个点。

• 确定前K个点所在类别的出现频率。

• 返回前K个点中出现频率最高的类别作为测试数据的预测分类。

图2-15给出了KNN算法中K值选区的规则。图中的数据集是良好的数据集,即都有对应的标签。一类是正方形,一类是三角形,圆形表示待分类的数据。

图2-15 KNN算法原理

K=3时(图中实线),范围内三角形多,这个待分类点属于三角形。

K=5时(图中虚线),范围内正方形多,这个待分类点属于正方形。

如何选择一个最佳的K值取决于数据。一般情况下,在分类时,较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。因此,K的取值一般比较小(K<20)。

3. KNN算法的优缺点

优点:简单,易于理解,无需建模与训练,易于实现;适合对稀有事件进行分类;适合于多分类问题,例如,根据基因特征来判断其功能分类,KNN比SVM的表现要好。

缺点:属于惰性算法,内存开销大,对测试样本分类时的计算量大,性能较低;可解释性差,无法给出决策树那样的规则。

2.2.5 朴素贝叶斯算法

1. 朴素贝叶斯算法概念

贝叶斯方法以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特点是,结合先验概率和后验概率,既避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单。

朴素贝叶斯算法(Naive Bayesian Algorithm)是应用最为广泛的分类算法之一。朴素贝叶斯方法在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时,属性之间相互条件独立。也就是说,没有哪个属性变量对于决策结果来说占有较大的比重,也没有哪个属性变量对于决策结果占有较小的比重。虽然这个简化方式在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。

2. 朴素贝叶斯算法的优缺点

优点:朴素贝叶斯算法假设数据集属性之间是相互独立的,因此,算法的逻辑性十分简单,并且算法较为稳定,当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。换句话说,朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集,分类结果不会呈现出太大的差异性。当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。

缺点:属性独立性的条件同时也是朴素贝叶斯分类算法的不足之处。数据集属性的独立性在很多情况下是很难满足的,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。

3. 朴素贝叶斯算法应用

分类是数据分析和机器学习领域的一个基本问题。文本分类已广泛应用于网络信息过滤、信息检索和信息推荐等多个方面。数据驱动分类器学习一直是近年来的热点,方法有很多,比如神经网络、决策树、支持向量机、朴素贝叶斯等。相对于其他精心设计的更复杂的分类算法,朴素贝叶斯分类算法是学习效率和分类效果较好的分类器之一。直观的文本分类算法,也是最简单的贝叶斯分类器,具有很好的可解释性。朴素贝叶斯算法的特点是假设所有特征的出现相互独立、互不影响,每一特征同等重要。但事实上这个假设在现实世界中并不成立:首先,相邻的两个词之间的必然联系,不能独立;其次,对一篇文章来说,其中的某一些代表词就确定它的主题,不需要通读整篇文章、查看所有词。所以需要采用合适的方法进行特征选择,这样朴素贝叶斯分类器才能达到更高的分类效率。

朴素贝叶斯算法在文字识别、图像识别方面有着较为重要的作用。可以将未知的一种文字或图像,根据其已有的分类规则来进行分类,最终达到完整分类的目的。

现实生活中朴素贝叶斯算法应用广泛,如文本分类、垃圾邮件分类、信用评估、钓鱼网站检测等。

2.2.6 K均值聚类算法

分类作为一种监督学习方法,需要事先知道样本的各种类别信息。当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选择无监督学习的聚类算法。

K均值聚类算法(K-Means Clustering Algorithm)就是最典型的聚类算法之一。这是一种迭代求解的聚类分析算法,其步骤是:先随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个初始聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类、没有(或最小数目)聚类中心再发生变化、误差平方和局部最小。

1. K均值聚类算法原理

对给定的样本集,事先确定聚类簇数K,让簇内的样本尽可能紧密地分布在一起,使簇间的距离尽可能大。该算法试图使集群数据分为n组独立数据样本,使n组集群间的方差相等,数学描述为最小化惯性或集群内的平方和。K均值聚类算法作为无监督的聚类算法,实现较简单,聚类效果好,因此被广泛使用。

2. K均值聚类算法步骤及流程

算法步骤:

输入:样本集D,簇的数目K,最大迭代次数N

输出:簇划分(K个簇,使平方误差最小)。

K-Means流程图如图2-16所示。

① 为每个聚类选择一个初始聚类中心。

② 将样本集按照最小距离原则分配到最邻近聚类。

③ 使用每个聚类的样本均值更新聚类中心。

④ 重复步骤②、③,直到聚类中心不再发生变化。

⑤ 输出最终的聚类中心和K个簇划分。

图2-16 K-Means流程图

3. K均值聚类算法优缺点

(1)优点

• 原理易懂、易于实现。

• 当簇间的区别较明显时,聚类效果较好。

(2)缺点

• 当样本集规模大时,收敛速度会变慢。

• 对孤立点数据敏感,少量噪声就会对平均值造成较大影响。

K的取值十分关键,对于不同数据集,K选择没有参考性,需要大量的实验。