8.4 MLlib
MLlib是构建在Spark上的分布式机器学习库,充分利用了Spark的内存计算和适合迭代型计算的优势,使性能大幅度提升,同时Spark算子丰富的表现力,让大规模机器学习的算法开发不再复杂。在正式介绍ML1ib之前,先介绍一个拓展知识——数据挖掘组件化思想。
知识拓展:数据挖掘组件化思想
针对不同的数据挖掘任务,研究人员设计了各种各样的数据挖掘算法。与此同时,每年仍有大量新的数据挖掘算法产生。对于数据挖掘初学者来说,弄清算法之间的联系和区别很困难。可以通过数据挖掘组件化思想(Hand et al,2001)来拆分和理解数据挖掘算法,理清其中的脉络。问题可拆解,意味着问题组件解耦,每个组件都可以重新设计组合,从而衍生出多种多样的新算法。该思想认为,许多数据挖掘算法由5个“标准组件”构成,即模型模式、模数据挖掘任务、数据挖掘任务、评分函数、搜索和优化方法、数据管理策略。每一种组件都含有一些通用的方法或者模型。例如,模型模式中包括马尔科夫链、贝叶斯网络、神经网络等。理解了每一个组件的基本原理,再来理解多个组件组合起来的算法会更加容易,而且不同算法之间进行比较能更加容易地看出异同。下面介绍这5个组件。
1.模型或者模式结构
训练数据相当于数据挖掘算法的输入,而模型(model)或者模式(pattern)结构相当于数据挖掘算法的输出,如决策树模型、频繁序列模式。
模型是对数据集合全局整体的描述,模式是对数据集合局部集合的描述。模型与模式也是联系的。例如,聚类算法用于异常点检测的原理就是异常点监测的局部模式只有和全局的正常模型比较,才能暴露出异常。模型和模式都含有参数,例如,Y=aX2+bX+c参数是a、b、c,模式X>d、Y<e的概率为p的参数为d、e、p。把参数不确定的模式(如d、e、p取不同的值)叫模式的结构。当参数确定,就说明这个模型或者模式已经拟合。结构的参数不确定,是一般形式,拟合的模型模式是具有了特定参数值的特殊形式。
2.数据挖掘任务
根据对全局集合的描述状况可以将数据挖掘任务分为模式挖掘、回归分类、描述建模。
(1)模式挖掘
模式是对某个数据集中部分结构的描述,可以是一个子集合、一个子序列、一个子树和一个子图。例如,交易数据中的啤酒、尿布就是频繁项集,是一个子集合。
(2)回归分类
回归分类根据现有数据建立模型,然后应用这个模型对未来数据进行预测。在预测模型中,一个变量表达为其他变量的函数。因此,可以把预测建模的过程看做是学习一种映射或函数Y=f(X)。相当于在整个数据集合看,数据集合分为现有数据和未来待处理数据,回归分类是对现有数据集合的描述,然后估计近似认为整个数据集的描述,待处理数据会根据历史数据得出模型进行处理。
(3)描述建模
描述建模要获取对现有数据集合的全局结构的描述。
3.评分函数
当确定了模型或者模式的结构之后,下一步就是需要确定结构中的参数,将结构拟合到数据。由于模型或者模式的结构是函数的一般形式,参数的空间很大,可选择的参数非常多,所以需要一个评分函数作为评价指标,确定哪个参数组合才能达到最优的结果。常用的评分函数有误差平方和、准确率召回率和ROC等。
4.搜索和优化方法
确定了评分函数,也就有了衡量数据和模型或者模式拟合程度的标准。搜索和优化方法就是为了确定模型模式结构的参数值。如果模型模式结构没有确定,则需要使用搜索方法(如贪婪法、深度优先遍历等),从模型模式的集合中发现最优的模型模式结构,还需要确定最优的结构参数。对于固定的模型模式结构,搜索就在参数空间进行,使用的是优化方法(如爬山法、期望最大化法等)。
5.数据管理策略
通常在大数据环境下,数据不能被单机容纳,需要分布式存储。这就需要设计好数据管理策略优化提升算法性能。针对大数据可以采用、近似、压缩、索引等技术提升机器学习算法效率。
组件化思想十分重要。将算法分解,揭示了算法的本质。这样学习相应机器学习算法,就不再是无穷无尽的算法,机器学习人员应该面对新应用,根据需求决定选取哪个组件中的哪个方法来组合出一个新的算法,而不是考虑选用哪个现成的算法。