Spark MLlib中分类和回归算法

Posted ltolstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark MLlib中分类和回归算法相关的知识,希望对你有一定的参考价值。

Spark MLlib中分类和回归算法:

  • -分类算法:

              pyspark.mllib.classification

                     -朴素贝叶斯 NaiveBayes

                     -支持向量机(优化:随机梯度下降)SVMWithSGD

                     -逻辑回归  LogisticRegressionWithSGD

                            // 从Spark 2.0开始,官方推荐使用BFGS方式优化LR算法

                            LogisticRegressionWithBFGS

                            // 针对流式数据实时模型训练算法

                            StreamingLogisticRegressionWithSGD

  • -树Tree相关分类算法:

              pyspark.mllib.tree

                -决策树 DecisionTree

                  -随机森林算法 –集成学习算法-Bagging方式   RandomForest

                  -梯度提升决策树算法 –集成学习算法 –Boosting方式  GradientBoostedTrees

            Spark MLlib中从底层源码来看,无论是DT 还是RF还是GBT算法,底层都是RF算法实现的。

  • -分类算法的类别:

          树相关的算法,既可以做二分类,又可以做多分类算法:

                 numClass: Number of classes for classification

          -二分类

                 NB、SVM、LR

          -多分类

                 NB、LR

 

 

监督学习算法:

        数据集RDD[LabeledPoint]

               标签向量 LabelPoint = feature: Vector + label: Float

        类比:

               RDD 类似 矩阵

               数组 类比  Vector

        无论是矩阵还是向量分为两种类型:

               -稀疏类型

                      稀疏矩阵,稀疏向量

               -稠密类型

                      稠密矩阵,稠密向量

 

       Spark MLlib中回归算法(基于RDD 实现算法库):

              -a. 线性回归算法相关:

                     LinerRegressionWithSGD

                     LassoWithSGD

                            L1-regularization

                     RidgeRegressionWithSGD

                            L2-regularization

              -b. 树算法相关

            -决策树 DecisionTree

              -随机森林算法 –集成学习算法-Bagging方式   RandomForest

              -梯度提升决策树算法 –集成学习算法 –Boosting方式  GradientBoostedTrees

 

基于DataFrame实现机器学习库,几个重要的概念:

    -a. DataFrame

        类似Pandas中dataframe,将算法所有的数据集存储在DataFrame数据结构中。

        DataFrame = RDD + Schema(字段名称、字段类型)

    -b. Estimator

        模型学习器,就是算法,比如ALS,DecisionTree,将数据应用到模型学习器中会得到一个模型Model。

        每个模型学习器中有个一个方法(训练模型):

            fit(dataframe) -> Model

    -c. Transformer

        转换器,就是模型Model或者算法,比如ALSModel,将针对数据集中某一列或某几列数据生成预测另外一列新数据。

        ALSModel.transform(dataframe)

            userId,itemId  -> predictRating

    -d. Parameters

        封装算法训练时参数或者模型预测时参数,底层是字典Dic(Map集合),其中字典的Key就是参数名称,字典的Value就是参数的值。

        比如:使用ALS模型学习器训练模型,设置参数:特征数rank和迭代次数iterations,可以使用Parameters组合封装设置。

    -e. Pipeline

        管道,Spark ML机器学习库从SK-Learn中借鉴

        由很多Stage组成:

            一个序列的Stages组成,每个Stage要么是转换器Estimator(模型),要么是模型学习器Estimator(算法)

        本身来说:

            Pipeline就是一个模型学习器,相当于算法,所以里面有一个fit函数,应用数据训练以后得到PipelineModel转换器,可以进行预测数据。

        功能:

            将某个机器学习应用中整个流程进行串联起来,方便部署测试使用。

以上是关于Spark MLlib中分类和回归算法的主要内容,如果未能解决你的问题,请参考以下文章

spark.mllib源码阅读-分类算法1-LogisticRegression

spark.mllib源码阅读-回归算法2-IsotonicRegression

Spark中常用的算法

资料推荐:Spark-mllib 源码分析之逻辑回归

Spark Random Forest classifier 随机森林分类

十spark MLlib的scala示例