zoukankan      html  css  js  c++  java
  • 线性回归-理论篇

     【转载】http://blog.csdn.net/pakko/article/details/36641561

     “回归”的由来

    FrancisGalton,英国生物学家,他研究了父母身高与子女身高之间关系后得出,若父母身高高于平均大众身高,则其子女身高倾向于倒退生长,即会比其父母身高矮一些而更接近于大众平均身高。若父母身高小于平均身高,则其子女身高倾向于向上生长,以更接近于大众平均身高。此现象,被Galton称之为回归现象,即regression.

     

    什么是线性回归?

    回归分析是一种统计工具,它利用两个或两个以上变量之间的关系,由一个或几个变量来预测另一个变量。

    回归分析中:

    • 自变量只有一个时,叫做一元线性回归,
    • 自变量有多个时,叫做多元线性回归,

    分类(Classification)与回归(Regression)都属于监督学习,它们的区别在于:

    • 分类:定性输出称为分类,或者说是离散变量预测。如识别正常邮件/垃圾邮件;识别图像中的人脸/非人脸;识别信贷中的正常行为/欺诈行为。(左图)
    • 回归:定量输出称为回归,或者说是连续变量预测。如给定了房子的面积、地段和房间数,预测房子的价格。(右图)

     

    一元线性回归

    问题描述

    我想要一套200平方米的房子价格大概是多少呢?这时在数据表中我又找不到到对应的数据,那么这时就要做线性回归分析了。如图找到这样的一条直线,使图中的所有点到直线的距离最小(即误差最小)。

    下面我们用数学语言来表达“使图中的所有点到直线的距离最小”这句话。

    (1)X与y的关系可以表示为:(b叫偏移,w叫超越平面参数)。

    这样的表达还不够统一,不方便计算,我们把上面改写成向量形式,以便于推广到N维形式,改写成正式:


    (2)“使图中的所有点到直线的距离最小”用数学的语言描述如下:

     

             这里是变量w的函数,故我们的目标就成了获取使值最小时的w的值。


    下图中,该图表示当取各个值时对应的的值,从图中可看出,当分别取特定的某一值时,可达到全局最小值。

     

    解决方法

    梯度下降算法(Gradient Descent)

    循环直到收敛{

     

    }

    对于线性回归模型,成本函数的导数如下:

               

    更通俗化的解释是:

    (1)上图中图形其实像一个碗一样,有一个最低点。找这个最低点的办法就是,先随便找一个,然后沿着这个碗下降的方向找,最后就能找到碗的最低点。

    (2)如何找某一点下降的方向?找那一点导数的反方向。如下图:


    (3)只要将任意一个点,沿着使导数的反方向慢慢移动,那么最终会到达使最小的那一点。(注:最小二乘法是个凸函数,所以局部最优值也即为全局最优值)

    (4)是自定义的,叫学习速率(learning rate)。

    • 值设得太大,可能永远无法收敛;
    • 设得太小,则收敛会很慢很慢。

    一般程序里会写明最多循环次数以及收敛条件。若能自动收敛,甚好,若不能,则循环指定次数后,强行退出。此时,你需要调参数或者重新慎视假设模型!

     

    正规方程组(Normal Equation)

    成本函数写成向量形式如下: 

      

    我们的目标是使最小,上式对W求导得: 

    X是矩阵,代表训练集,每一行是一个样本的各特征值。Y是个向量,对应每个样本的结果值。

     

    梯度下降与正规方程组的对比:

     Gradient Descent

     Normal Equation

     自定义

    不需要定义

     盾环N次才能得到最佳w值

    不需要任何循环操作

     特征个数非常大时,也适用

    X的转阵与逆矩阵的计算量很大,导致特征个数多时,会很慢;

    适用于特征个数小于100000时使用

     需要特征缩放(feature scaling)

    不需要feature scaling

     

    多元线性回归(LinearRegression with Multiple Variables)

    跟一元线性回归的参数回归方式如出一辙,唯一区别在回归函数的假设上:

    多元,故名思义,就是说有多个特征做为输入。那问题就来了,若多个特征的表达值的范围不一样,会有什么影响和后果?

    比如,继续拿预测房价作为例子。现在它的特征增加了,特征1是面积,特征2是房间数,特征3是房子的年龄。很明显,这三个特征的值的范围是有很大差异的。

    • 特征1:100到300之间
    • 特征2: 2到5之间
    • 特征3:20到60年之间

    若不做任何处理,则特征1和3对结果的影响远大于特征2,而可能扭曲了真实情况下各特征在最终结果中所应占的权重比例。

     

    所以,一般情况下,特征与特征之间的值变化范围差异过大时,我们用feature scaling的手段来规范化特征值,使每个特征的特征值都处于-1至1之间。

    如果不同变量之间的大小不在一个数量级,作feature scaling能大大减少寻找最优解的时间;

    NG给的建议:最大变量和最小变量均值差3倍以内为佳;


    注:feature scaling的方法可自定义,常用的有:
    1) rescaling
    (X - mean(X))/max - min

    2) 中值正规化(mean normalization)

    (X-mean(X))/ std,  std是标准方差


    参考链接:

    http://hi.baidu.com/einyboy/item/5ee49dd9c853f1f8cb0c39ae

    http://blog.163.com/phoenixbai@126/blog/static/1086513492013953817839

    http://blog.sciencenet.cn/blog-427701-688352.html

  • 相关阅读:
    Java集合中迭代器
    java 基础归纳总结(三)
    java 基础归纳总结(二)
    java 基础归纳总结(一)
    python之hashlib模块
    python之configparser模块
    Python之time模块
    python之os模块
    python之random模块
    python generator(生成器)
  • 原文地址:https://www.cnblogs.com/haoyy/p/6100452.html
Copyright © 2011-2022 走看看