机器学习_线性回归,梯度下降算法与正规方程

来源:互联网 发布:angela baby 知乎 编辑:程序博客网 时间:2024/04/30 12:22

个人对这方面的理解,文字纯手打,图片来自于coursera的课件
1.线性回归的定义:给出若干的训练集(训练集中x(j)i表示样本j中第i个项),然后拟合为一条直线,使得cost最小
不妨先看一个例子,拿课程中的例子,卖房
现在已经知道了若干的房子的大小以及卖出去的价格,现在跟着这些信息,来推断一些房子的价格
房子的价格
我们的任务,就是把图中的点尽可能为拟合成一条”花费最小”的直线h(x)=θ0+θ1x
2.”花费”怎么定义呢?使用的是最小二乘法
J(θ1,θ2)=12mmi=1(h(x(i))y(i))2
简单点儿说,就是所有的点到直线上x值相等的点的距离的平方,求平均,就是对应的花费
3.花费的最小怎么求呢,可以想到,这个函数肯定是连续的,那么就可以通过求偏倒解决
这里写图片描述
这就是梯度下降算法

  • 对于例子,迭代方法如下
    θ0=θ0α1mmi=1(h(x(i))y(i))
    θ1=θ1α1mmi=1(h(x(i))y(i))x(i)
  • α被称为learning rate,需要被选择为一个合适的值,如果太大的话,可能会越过最佳的值,然后越变越大,如果太小的话,需要迭代的次数太多
  • 通常的做法就是,先任取一个θ0θ1然后通过多次的迭代,就可以找到一个局部最小值,可以取多组初始的θ0θ1,然后找到其中最好的解,那么有一个很有意思的问题,怎么确定,找到的解肯定就是全局最好的呢
  • 还有一个问题,就是更新时候必须得同步更新,简单点儿说,就是计算出的新的θi,先保存起来,待这一次所有的θj都计算完后,再同时更新所有的θi这里写图片描述

4.接下来考虑多feature的情况,首先梯度下降算法是肯定成立的

  • 如果x1与x2相差很多,但α是固定的,那么可能会出现θ1在最优值附近摆动很大,而θ2却迭代的很慢,这种情况下,通常会对数据做一个初步的处理,先转换为-1~1之间的数,处理方式如下
    这里写图片描述这种方法也会加快寻到最优的速度

5.最后介绍一个更强大Normal Equation(正规方程),直接用矩阵运算就可以得到最优解(证明还没有看)

  • θ=(XTX)(1)XTY,其中X是一个矩阵,每一行都是1+各特征值,Y就是所有的结果值,来分析一下,X是m*(n+1)的矩阵,所以复杂度就是O(n^3)
  • 很强大!但也有弊端,那就是比较慢,如果n=100 0000,那将慢到不可忍受,所以还得用梯度下降算法,但如果处理1000内的数据,将十分的方便

先说这么多,想到接着补充

0 0