Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介 (6)

clip_image029

1.3.11 降低维度算法

像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式,试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis PCA)、偏最小二乘回归(Partial Least Square RegressionPLS)、 Sammon 映射、多维尺度(Multi-Dimensional Scaling, MDS)、投影追踪(Projection Pursuit)等。

clip_image031

1.3.12 集成算法

集成算法用一些相对较弱的学习模型独立地对同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:BoostingBootstrapped AggregationBagging)、AdaBoost、堆叠泛化(Stacked Generalization Blending)、梯度推进机(Gradient Boosting Machine, GBM)、随机森林(Random Forest)。

clip_image033

2Spark MLlib介绍

Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:

1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用HadoopMapReduce计算框架,每次计算都要读/写磁盘以及任务的启动等工作,这回导致非常大的I/OCPU消耗。而Spark基于内存的计算模型天生就擅长迭代计算,多个步骤计算直接在内存中完成,只有在必要时才会操作磁盘和网络,所以说Spark正是机器学习的理想的平台。

2)从通信的角度讲,如果使用HadoopMapReduce计算框架,JobTrackerTaskTracker之间由于是通过heartbeat的方式来进行的通信和传递数据,会导致非常慢的执行速度,而Spark具有出色而高效的AkkaNetty通信系统,通信效率极高。

MLlib(Machine Learnig lib) Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。Spark的设计初衷就是为了支持一些迭代的Job, 这正好符合很多机器学习算法的特点。在Spark官方首页中展示了Logistic Regression算法在SparkHadoop中运行的性能比较,如图下图所示。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxygg.html