美文网首页
(5)回归算法

(5)回归算法

作者: 顽皮的石头7788121 | 来源:发表于2019-03-06 10:38 被阅读0次

        回归的模型均可抽象为多元线性回归,其优化方法一般为最小二乘法与梯度下降法等。一般选择使用梯度下降法求解,因为最小二乘法要求特征变量X必须是列满秩且需要求矩阵的逆,求解困难。

        MLlib实现了分布式的随机梯度下降。其实现方法是:在每次迭代中,随机抽取一定比例的样本作为当前迭代的计算样本,对计算样本中的每一个样本分别计算梯度(在分布式的集群中),将这些样本的梯度进行累加,求得每个样本的平均梯度和损失,根据最新的梯度和损失对权重进行更新。

    (1)线性回归

            线性回归类 LinearRegressionWithSGD 传入RDD(Label,features格式)、迭代次数、步长等参数

            使用 方法:

                    val model = LinearRegressionWithSGD.train(examples,numIterations,stepSize,miniBatchfraction)

                    val prediction = model.predict(examples.map(_.features))

                    val predictionAndlabel  = prediction.zip(examples.map(_.label))

                     predict  = predictionAndlabel (i).-1  ; labels =  predictionAndlabel (i).-2

                    model.save(sc,path)

    (2)逻辑回归

                    逻辑回归是线性回归加上Sigmoid函数。

                    逻辑斯特回归类 LogisticsRegressionWithSGD

                    优化方法来自optimizer.optimize方法

                    梯度计算为gradient.cumpte方法

                    权重更新为 updater.compute方法

                    #划分数据集

                    val data = MLUtils.loadLibSVMFile(sc,"path")

                    val splits = data.randoSplit(Array(0.6,0.4),seed = 11L)

                    val trains = splits(0).cache()

                    val tests = splits(1)

                    #建立模型并训练

                    val model  = new LogisticsRegressionWithLBFGS().setNumClasses(10).run(trains)

                    #测试

                    val predictionAndlabel  = test.map{

                            case LabeledPoint(label,features) => 

                                val prediction = model.predict(features)

                                    (prediction,label)

                    }在使用scala编程时,其语言很大程度上是流式编程。

    (3)保序回归

                    对给定的一个无序数字序列,通过修改每个元素的值,得到一个非递减序列,并是误差最小。

                    IsotonicRegression()

    相关文章

      网友评论

          本文标题:(5)回归算法

          本文链接:https://www.haomeiwen.com/subject/zdvouqtx.html