如何让计算机更加智能化,从计算机诞生之时,就是不少计算机科学家的梦想。在智能计算领域,先后提出人工智能(Artificial Intelligence)、数据挖掘(Data Mining)、机器学习(Machine Learning)和深度学习(Deep Learning),这几块都有各自的专有内容,同时也有交集。
根据百度百科上的定义,机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,并不断改善自身的性能。
机器学习是人工智能的核心,是使计算机具有智能的根本途径。它是当前计算机领域的研究热点。最近,我国提出新型基础设施建设(新基建)主要包括5G基站建设、特高压、城际高速铁路和城市轨道交通、新能源汽车充电桩、大数据中心、人工智能、工业互联网七大领域,提供数字转型、智能升级、融合创新等服务的基础设施体系。
Spark当中也专门提供了机器学习算法库MLlib(Machine Learning Library)。MLlib中已经包含了一些通用的学习算法,具体罗列如下:
· 分类(Classification)算法
◆ Logistic regression
◆ Decision tree classifier
◆ Random forest classifier
◆ Gradient-boosted tree classifier
◆ Multilayer perceptron classifier
◆ Linear Support Vector Machine
◆ One-vs-Rest classifier
◆ Naive Bayes
◆ Factorization machines classifier
· 回归Regression算法
◆ Linear regression
◆ Generalized linear regression
◆ Decision tree regression
◆ Random forest regression
◆ Gradient-boosted tree regression
◆ Survival regression
◆ Isotonic regression
◆ Factorization machines regressor
· 聚类Clustering
◆ K-means
◆ Latent Dirichlet allocation (LDA)
◆ Bisecting k-means
◆ Gaussian Mixture Model (GMM)
◆ Power Iteration Clustering (PIC)
· 协同过滤(Collaborative Filtering)
· 关联规则(Frequent Pattern Mining)
· 降维(Dimensionality Reduction)
◆ Singular value decomposition (SVD)
◆ Principal component analysis (PCA)
MLlib算法库除了提供基本的机器学习算法外,还提供了如下工具:
· 特征化(Featurization):特征提取、变换、降维和选择。
· 管道(Pipelines):用于构建、评估和调整ML管道的工具。
· 持久性(Persistence):保存和加载算法、模型和管道。
· 通用工具(Utilities):线性代数、统计信息、数据处理等。
算法中有分类和回归之分,其实本质上分类模型和回归模型是一样的。分类模型是将回归模型的输出离散化,比如预测某个上市公司财务是否良好,用1代表好,用0代表不好。而回归模型用于处理连续的值,比如预测一个公司明年的产量。下面简要介绍常用的机器学习算法的基本概念以及用法。
机器学习应用于实际项目中,其一般的流程如图2.8所示。它强调将机器学习用来解决实际的商业问题,它是一个不断迭代的过程。
图2.8 机器学习流程示意图
决策树(Decision Tree)充分利用了树形模型,根节点到一个叶节点是一条分类的路径规则,每个叶子节点象征一个判断类别。决策树有2类:
· 分类树:对离散变量做决策树。
· 回归树:对连续变量做决策树。
先将样本分成不同的子集,再进行分割递推,直至每个子集得到同类型的样本,从根节点开始测试,到子树再到叶子节点,即可得出预测类别。此方法的特点是结构简单、处理数据效率较高。
决策树优点如下:
· 速度快,计算量相对较小,且容易转化成分类规则。
· 准确性高,挖掘出来的分类规则准确性高,非常容易理解。
· 可以处理连续和分类数据。
· 不需要任何领域知识和参数假设。
· 适合高维数据。
决策树缺点如下:
· 容易产生过拟合的情况。
· 忽略属性之间的相关性。
下面给出一个决策树示意图,如图2.9所示。
图2.9 决策树示意图
贝叶斯(Naive Bayes)算法是一种分类算法,也叫作朴素贝叶斯算法。它不是单一算法,而是一系列算法,它们都有一个共同的原则,即被分类的每个特征都与任何其他特征的值无关。
贝叶斯算法的优点如下:
· 计算过程简单、速度快。
· 适用多分类问题。
· 在分布独立这个假设成立的情况下,预测效果非常好,且需要的样本数据也更少。
· 可以处理连续和分类数据。
朴素贝叶斯分类器认为这些“特征”中的每一个都独立地贡献概率,而不管特征之间的任何相关性。然而,特征并不总是独立的,这通常被视为朴素贝叶斯算法的缺点。
支持向量机SVM(Support Vector Machine)算法,首先利用一种变换将空间高维化,当然这种变换是非线性的,然后在新的复杂空间取最优线性分类面。
SVM是统计学领域中一个代表性算法,它与传统的思维方法很不同,它输入空间数据、通过维度变换从而将问题简化,使问题归结为线性可分的经典问题。
SVM算法优点如下:
· 可以向高维空间映射。
· 可以解决非线性的分类问题。
· 分类思想很简单,就是将样本与决策面的间隔最大化。
· 分类效果较好。
SVM算法缺点如下:
· 在大规模样本上难以进行模型训练。
· 难于解决多分类问题。
· 对缺失数据敏感。
· 对参数和核函数的选择敏感。
· 模型类似一个黑盒,评估结果难以解释。
下面给出一个SVM的示意图,如图2.10所示。
图2.10 SVM示意图
由于传统的分类模型往往精度不高,且容易出现过拟合问题。因此,很多学者通过聚集多个模型来提高预测精度,这些方法称为组合或分类器组合方法。
这些方法的一个共同特征是:为第
k
棵决策树生成随机向量
,且
独立同分布于前面的随机向量
。利用训练集和随机向量
生成一棵决策树,得到分类模型
h
(X,
),其中
X
为输入变量(自变量)。在生成许多决策树后,通过投票方法或取平均值作为最后结果,我们称这种方法为随机森林方法。随机森林是一种非线性建模工具,是目前数据挖掘、生物信息学等领域最热门的前沿研究方法之一。
随机森林(Random Forest)分类是由很多决策树分类模型
组成的组合分类模型,且参数集
是独立同分布的随机向量,在给定自变量X下,每个决策树分类模型都有相应的投票权来选择最优的分类结果。
随机森林分类的基本思想是:首先利用bootstrap抽样从原始训练集抽取 k 个样本,且每个样本的样本容量都与原始训练集一样;其次对 k 个样本分别建立 k 个决策树模型,得到 k 种分类结果;最后根据 k 种分类结果,对每个记录进行投票决定其最终分类,其示意图如图2.11所示。
图2.11 随机森林示意图
随机森林算法优点如下:
· 相对其他算法来说,评估效果良好。
· 能够处理高维度的数据,且不用做特征选择。
· 能够给出哪些特征比较重要。
· 模型泛化能力强。
· 训练速度快。
· 对于不平衡的数据集来说,可以平衡误差。
· 部分特征遗失的数据,仍可确保评估准确度。
· 能够解决分类与回归问题。
随机森林算法缺点如下:
· 小数据或者低维数据,评估效果可能比较差。
· 训练模型相对比较慢。
· 对参数选择敏感。
· 模型类似一个黑盒,评估结果难以解释。
人工神经网络是由多个神经元互相连接而成,组成异常复杂的网络,形似一个网络。每个神经元有数值量的输入和输出,形式可以为实数或线性组合函数。
当网络判断错误时,通过学习使其减少犯同样错误的可能性。此方法有很强的泛化能力和非线性映射能力,可以对信息量少的数据进行模型处理。
人工神经网络算法优点如下:
· 非线性映射能力强,数学理论上证明三层的神经网络能够以任意精度逼近任何非线性连续函数。
· 自学习和自适应能力强。
· 模型泛化能力强。
· 模型具备一定的容错能力。
人工神经网络算法缺点如下:
· 局部极小化问题。
· 训练模型相对比较慢。
· 对网络结构选择敏感。
· 模型类似一个黑盒,评估结果难以解释。
下面给出一个神经网络模型示意图,如图2.12所示。
图2.12 神经网络模型示意图
关联规则是用规则去描述两个变量或多个变量之间的关系,是客观反映数据本身性质的方法。它是机器学习的一大类任务,可分为2个阶段,先从资料集中找到高频项目组,再去研究它们的关联规则。其得到的分析结果即是对变量间规律的总结。
其中经典的商业案例,就是啤酒和尿布的故事。经过对超市购物记录的统计分析,发现男士在购买尿布的时候,非常有可能会一同购买啤酒,虽然不知道具体原因,但是实际的统计结果肯定隐含着某种内在联系,因此可以优化货物摆放位置,将尿布和啤酒放一起进行摆放,后期发现二者的销量都有提升。关联规则示例如图2.13所示。
图2.13 关联规则示例图
线性回归(Linear Regression)算法,可以从最小二乘法开始讲起。最小二乘法是一种数学优化技术,它通过最小化误差的平方来寻找数据的最佳函数表达式。利用最小二乘法可以简便地求得未知的数据,并使这些求得的数据与实际数据之间误差的平方和最小。
线性回归算法能用一个方程式较为精确地描述数据之间的关系,因此可以非常方便地预测值。
它的优点如下:
· 算法简单,对于小规模数据来说,建立的数据关系很有效。
· 回归模型容易理解,结果具有很好的可解释性,有利于决策。
· 可用于分类和回归。
它的缺点如下:
· 对于非线性数据难以处理。
· 在高维度的数据上难以保证预测效果。
下面给出一个线性回归示意图,如图2.14所示。
图2.14 线性回归示意图
KNN(K-Nearest Neighbor)算法,即K最近邻算法,是机器学习分类算法中最简单的方法之一。所谓K最近邻,说的是每个样本都可以用它最接近的K个邻近值来代表。
算法的描述如下:
(1)计算测试数据与各个训练数据之间的距离。
(2)按照距离的递增关系进行排序。
(3)选取距离最小的K个点。
(4)确定前K个点所在类别的出现频率。
(5)返回前K个点中出现频率最高的类别,作为测试数据的预测分类。
KNN的主要优点有:
· 理论成熟,思想简单,既可以用来做分类,也可以用来做回归。
· 可用于非线性分类。
· 训练时间复杂度比支持向量机之类的算法低。
· 对数据没有假设,准确度高。
· 对异常点不敏感。
KNN缺点如下:
· 参数K值需要预先设定,而不能自适应。
下面给出一个KNN算法示意图,如图2.15所示。
图2.15 KNN算法示意图
K-Means算法,即K均值聚类算法,是一种迭代求解的聚类分析算法。其步骤是:预先将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。
聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复,直到满足某个终止条件。
K-Means的优点如下:
· 算法速度快。
· 算法简单,易于理解。
K-Means的缺点如下:
· 分组K值需要给定。
· 对K值的选取比较敏感。
下面给出一个K-Means的算法示意图,如图2.16所示。
图2.16 K-Means的算法示意图