zoukankan      html  css  js  c++  java
  • 【机器学习笔记三】回归分析

    参考资料

    【1】    http://blog.csdn.net/google19890102/article/details/27228279

    【2】    讲讲共线性问题 http://www.jianshu.com/p/ef1b27b8aee0?from=timeline

    【3】    最小二乘法的矩阵形式推导 http://blog.csdn.net/monsterhoho/article/details/46753673

    【4】    Spark MLlib 机器学习实践

    1、共线性及多重共线性问题

    对于最小二乘法,我们有矩阵形式的推导如下:

    此时对x求导,有,得到

    对于上述解,当x中存在二个或多个线性相关形式,就会接近于0,造成很大的误差,因此为了解决这个误差我们在代价函数中增加了扰动项,类似矩阵形式变为:

    2、岭回归模型

    所谓的岭回归就是在线性回归的基础上增加了正则项,通常为lasso回归(L1回归)和岭回归(L2回归)。岭回归公式如下:

    3、岭回归Spark Mlib下例子

    package com.fredric.spark.lr
    
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.mllib.regression.{RidgeRegressionWithSGD, LinearRegressionWithSGD, LabeledPoint}
    import org.apache.spark.{SparkContext, SparkConf}
    
    import scala.util.Random
    
    /*-
     * 回归分析 岭回归
     * Fredric 2017
     */
    object lrl2 {
      def main(args:Array[String]): Unit ={
        val conf = new SparkConf().setMaster("local").setAppName("Rr01")
        val sc   = new SparkContext(conf)
    
        //以二元线性回归y = 7*x1 + 5*x2 + 3为例,初始化数据
        val Array = new Array[LabeledPoint](500)
    
        for(t <- 1 to 500){
    
          val random = new Random();
    
          val x1 = random.nextInt(4) + random.nextDouble()
          val x2 = random.nextInt(3) + random.nextDouble()
          val y = 7 * x1 + 5 * x2 + (new Random()).nextDouble() + 3
    
          Array(t-1) = new LabeledPoint(y,  Vectors.dense(x1, x2, 1))
        }
    
        val data = sc.makeRDD(Array)
        
        //采用岭回归模型
        val model = new RidgeRegressionWithSGD()
        model.optimizer.setNumIterations(100);//迭代100次
    
        val res = model.run(data)
    
        //输出结果为 [7.016836776795048,5.045698277235657,3.3398441790354525]
        println(res.weights)
      }
    }
  • 相关阅读:
    管道通讯
    C++类型转换
    自定义数组容器MyArray框架
    vue 转场动画
    身份证信息 获取年龄性别生日
    element ui +vue 输入 身份证号获取 性别 年龄 籍贯
    获取地理位置
    post 下载二进制pdf文件
    post 文件下载二进制流
    遍历对象的几中方法
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/8495999.html
Copyright © 2011-2022 走看看