< 上一个 | 内容 | 下一个 >

3.5.2 分类

1)从学习方式分类

算法对一个问题建模的方式很多,可以基于经历、环境,或者任何我们称之为输入数据的东西。机器学习和人工智能的教科书通常会让你首先考虑算法能够采用什么方式学习。实际上,算法能够采取的学习方式或者说学习模型只有几种,下面我会一一说明。对机器学习算法进行分类是很有必要的事情,因为这迫使你思考输入数据的作用以及模型准备过程,从而选择一个最适用于你手头问题的算法。

监督学习:

输入数据被称为训练数据,并且每一个都带有标签,比如“广告/非广告”,或者当时的股票价格。通过训练过程建模,模型需要做出预测,如果预测出错会被修正。直到模型输出准确的结果,训练过程会一直持续。常用于解决的问题有分类和回归。常用的算法包括逻辑回归和 BP 神经网络。

常用的监督型学习方法举例

K-近邻算法(k-Nearest NeighborsKNN

K-近邻是一种分类算法,其思路是:如果一个样本与特征空间中的K个最相似(

特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别。


image

3.6 K-近邻算法计算流程

如上图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果 K=3,由于红色三角形所占比例为 2/3,绿色圆将被赋予红色三角形那个类,如果 K=5,由于 蓝色四方形比例为 3/5,因此绿色圆被赋予蓝色四方形类。

算法的步骤为:

i)计算测试数据与各个训练数据之间的距离;

ii)按照距离的递增关系进行排序;

iii)选取距离最小的K 个点;

iv)确定前 K 个点所在类别的出现频率;

v)返回前 K 个点中出现频率最高的类别作为测试数据的预测分类。无监督学习:

输入数据没有标签,输出没有标准答案,就是一系列的样本。无监督学习通过推 断输入数据中的结构建模。这可能是提取一般规律,可以是通过数学处理系统地减少 冗余,或者根据相似性组织数据。常用于解决的问题有聚类、降维和关联规则的学习。常用的算法包括 Apriori 算法和 K 均值算法。

Apriori 的算法的应用

下面这个表格显示的是一个事务数据库 D


image

3.7 事务数据库

其中最小支持度为 50%,最小置信度为 70%,求事务数据库中的频繁关联规则。

Apriori 算法的步骤如下所示:

1)生成候选频繁 1-项目集 C1={{面包}{牛奶}{啤酒}{花生}{尿布}}

2)扫描事务数据库 D,计算 C1 中每个项目集在 D 中的支持度。从事务数据库 D 中可以得出每个项目集的支持数分别为 3,3,3,1,2,事务数据库 D 的项目集总数为 4,因此可得出C1 中每个项目集的支持度分别为75%75%75%25%50%。根据最小支持度为 50%,可以得出频繁 1-项目集 L1={{面包}{牛奶}{啤酒}{尿布}}

3)根据 L1 生成候选频繁 2-项目集C2={{面包,牛奶}{面包,啤酒}{面包,尿布}{牛奶,啤酒}{牛奶,尿布}{啤酒,尿布}}

4)扫描事务数据库 D,计算 C2 中每个项目集在 D 中的支持度。从事务数据库 D中可以得出每个项目集的支持数分别为3,2,1,2,1,2,事务数据库D的项目集总数为4,因此可得出C2 中每个项目集的支持度分别为 75%50%25%50%25%50%。根据最小支持度为 50%,可以得出频繁 2-项目集L2={{面包,牛奶}{面包,啤酒}{牛奶,啤酒}{啤酒,尿布}}

5)根据 L2 生成候选频繁 3-项目集C3={{面包,牛奶,啤酒}{面包,牛奶,尿布}{面包,啤酒,尿布}{牛奶,啤酒,尿布}},由于C3 中项目集{面包,牛奶,尿布}中的一个子集{牛奶,尿布}L2 中不存在的,因此可以去除。同理项目集{面包,啤酒,尿布}{牛奶,啤酒,尿布}也可去除。因此 C3={面包,牛奶,啤酒}

6)扫描事务数据库 D,计算 C3 中每个项目集在 D 中的支持度。从事务数据库 D 中可以得出每个项目集的支持数分别为 2,事务数据库 D 的项目集总数为 4,因此可得出C2 中每个项目集的支持度分别为 50%。根据最小支持度为 50%,可以得出频繁 3-项目集 L3={{面包,牛奶,啤酒}}

7L ={{面包}{牛奶}{啤酒}{尿布}{面包,牛奶}{面包,啤酒}{牛奶,啤酒}{啤酒,尿布}{面包,牛奶,啤酒}}

8)我们只考虑项目集长度大于 1 的项目集,例如{面包,牛奶,啤酒},它的所有非真子集{面包}{牛奶}{啤酒}{面包,牛奶}{面包,啤酒}{牛奶,啤酒},分别计算关联规则{面包}>{牛奶,啤酒}{牛奶}>{面包,啤酒}{啤酒}>{

包,牛奶}{面包,牛奶}>{啤酒}{面包,啤酒}>{牛奶}{牛奶,啤酒}>{面包}的置信度,其值分别为 67%67%67%67%100%100%。由于最小置信度为 70%,可得}{面包,啤酒}>{牛奶}{牛奶,啤酒}>{面包}为频繁关联规则。也就是说买面包和啤酒的同时肯定会买牛奶,买牛奶和啤酒的同时也是会买面包。

由这个例子可以看出 Apriori 主要是根据 最小支持度来判断,最后逐步递进。半监督学习:

半监督学习的输入数据包含带标签和不带标签的样本。半监督学习的情形是,有一个预期中的预测,但模型必须通过学习结构整理数据从而做出预测。常用于解决的问题是分类和回归。常用的算法是所有对无标签数据建模进行预测的算法(即无监督学习)的延伸。

2)从功能角度分类

研究人员常常通过功能相似对算法进行分类。例如,基于树的方法和基于神经网 络的方法。这种方法也是我个人认为最有用的分类方法。不过,这种方法也并非完美,比如学习矢量量化(LVQ),就既可以被归为神经网络方法,也可以被归为基于实例 的方法。此外,像回归和聚类,就既可以形容算法,也可以指代问题。

回归算法:

回归分析是研究自变量和因变量之间关系的一种预测模型技术。这些技术应用于预测时间序列模型和找到变量之间关系。回归分析也是一种常用的统计学方法,经由统计机器学习融入机器学习领域。“回归”既可以指算法也可以指问题,因此在指代的时候容易混淆。实际上,回归就是一个过程而已。常用的回归算法包括:

普通最小二乘回归(OLSR)线性回归、逻辑回归、逐步回归、多元自适应回归样条法(MARS)、局部估计平滑散点图(LOESS)。

基于实例的学习算法:

基于实例的学习通过训练数据的样本或事例建模,这些样本或事例也被视为建模所必需的。这类模型通常会建一个样本数据库,比较新的数据和数据库里的数据,通过这种方式找到最佳匹配并做出预测。换句话说,这类算法在做预测时,一般会使用相似度准则,比对待预测的样本和原始样本之间的相似度,再做出预测。因此,基于实例的方法也被称之为赢家通吃的方法(winner-take-all)和基于记忆的学习(memory- based learning)。常用的基于实例的学习算法包括:k-邻近算法(kNN)、学习矢量量

化算法(LVQ)、自组织映射算法(SOM)、局部加权学习算法(LWL)正则化算法:

正则化算法背后的思路是,参数值比较小的时候模型更加简单。对模型的复杂度会有一个惩罚值,偏好简单的、更容易泛化的模型,正则化算法可以说是这种方法的延伸。我把正则化算法单独列出来,原因就是它们十分受欢迎、功能强大,而且能够对其他方法进行简单的修饰。常用的正则化算法包括:

1)岭回归

2LASSO 算法

3Elastic Net

4)最小角回归算法(LARS

5)决策树算法

决策树算法的目标是根据数据属性的实际值,创建一个预测样本目标值的模型。训练时,树状的结构会不断分叉,直到作出最终的决策。也就是说,预测阶段模型会选择路径进行决策。决策树常被用于分类和回归。决策树一般速度快,结果准,因此也属于最受欢迎的机器学习算法之一。常用的决策树算法包括:

1)分类和回归树(CART

2ID3 算法

3C4.5 算法和 C5.0 算法(它们是一种算法的两种不同版本)

4CHAID 算法

5)单层决策树

6M5 算法

7)条件决策树

8)贝叶斯算法

贝叶斯方法指的是那些明确使用贝叶斯定理解决分类或回归等问题的算法。常用的贝叶斯算法包括:

朴素贝叶斯算法、高斯朴素贝叶斯算法、多项式朴素贝叶斯算法、 AODE 算法、贝叶斯信念网络(BBN)、贝叶斯网络(BN

聚类算法:

聚类跟回归一样,既可以用来形容一类问题,也可以指代一组方法。聚类方法通常涉及质心(centroid-based)或层次(hierarchal)等建模方式,所有的方法都与数据固有的结构有关,目标是将数据按照它们之间共性最大的组织方式分成几组。换句话说,算法将输入样本聚成围绕一些中心的数据团,通过这样的方式发现数据分布结构

中的规律。常用的聚类算法包括:K-均值、K-中位数、EM 算法、分层聚类算法关联规则学习。

关联规则学习在数据不同变量之间观察到了一些关联,算法要做的就是找出最能描述这些关系的规则,也就是获取一个事件和其他事件之间依赖或关联的知识。常用的关联规则算法有:Apriori 算法、Eclat 算法、人工神经网络。

人工神经网络是一类受生物神经网络的结构及/或功能启发而来的模型。它们是一类常用于解决回归和分类等问题的模式匹配,不过,实际上是一个含有成百上千种算法及各种问题变化的子集。人工神经网络指的是更加经典的感知方法。常用的人工神经网络包括:反向传播算法(BP 神经网络)Hopfield 网络。

径向基函数网络(RBFN)、深度学习算法:

深度学习算法是人工神经网络的升级版,充分利用廉价的计算力。近年来,深度学习得到广泛应用,尤其是语音识别、图像识别。深度学习算法会搭建规模更大、结构更复杂的神经网络,正如上文所说,很多深度学习方法都涉及半监督学习问题,这种问题的数据一般量极大,而且只有很少部分带有标签。常用的深度学习算法包括:

深度玻尔兹曼机(DBM)、深度信念网络(DBN)、卷积神经网络(CNN)、栈式自编码算法(Stacked Auto-Encoder)。

降维算法:

降维算法和聚类有些类似,也是试图发现数据的固有结构。但是,降维算法采用的是无监督学习的方式,用更少(更低维)的信息进行总结和描述。降维算法可以监督学习的方式,被用于多维数据的可视化或对数据进行简化处理。很多降维算法经过修改后,也被用于分类和回归的问题。常用的降维算法包括:

1)主成分分析法(PCA)、主成分回归(PCR)、偏最小二乘回归(PLSR)、萨蒙映射;

2)多维尺度分析法(MDS)、投影寻踪法(PP)、线性判别分析法(LDA、混合判别分析法(MDA)、二次判别分析法(QDA)、灵活判别分析法(Flexible Discriminant AnalysisFDA)。

模型融合算法:

模型融合算法将多个简单的、分别单独训练的弱机器学习算法结合在一起,这些弱机器学习算法的预测以某种方式整合成一个预测。通常这个整合后的预测会比单独的预测要好一些。构建模型融合算法的主要精力一般用于决定将哪些弱机器学习算法以什么样的方式结合在一起。模型融合算法是一类非常强大的算法。常用的模型融合增强方法包括:

BoostingBaggingAdaBoost、堆叠泛化(混合)、GBM 算法、GBRT 算法、随机森林等。