机器学习之二-线性回归

1.概述

如 下图,我门已知一些正确的数据:对于房子的大小和对应的价格,我们用图表来表示(画×的地方表示一个数据)我们怎么用一条直线来表示该分布?

我们都知道直线的的方程为 f(x)=a*x+b,关键就是怎么样得出这个方程的假设,然后对应我们的一个输入(比如房子的大小),输出对应的结果(房子的售价)

2.代价函数(Cost Funtion)

对于我们假设的方程 h(x)=θ1*x+θ0  (其实就是直线方程的一般形式),我们怎么找出 θ0,θ1,舍得代价函数(看下图)最小? x^i 表示第几个训练集数据,m是训练集大小

我们想找一个直线模型用来拟合我们的数据,选择不同的θ0,θ1会得到不同的拟合。我们的目标就是找出代价函数的最小值。其对应的参数则可以成为我们建立假设函数的参数

如果有三维图形来表示的话,代价函数类似下图:


3.梯度下降(Gradient Descent)

梯度下降是很常用的算法,不仅是线性回归,其他机器学习领域中也得到广泛应用。

对于已有的一个函数 J(θ0,θ1,....,,) 我们想找出 minJ(θ0,θ1,....,,),就可以用到梯度下降算法,简化起见,我们就用2个参数

算法的思想是:

1.给定参数的初始值

2.通过不断改变参数值,使代价方程的值不断减小,知道我们找到最小值或者说是局部最小值

可以想象成我们在一个丘陵地段,我们怎么找到附近最低的地方? 我们可以一直朝下坡的地方前行,直到我们走到一个周围都比现在的位置高的地方就停下。 

数学的定义为:通过不断的计算θ0和θ1的值,直到收敛。


α表示学习速率,可以理解为我们下坡时候的步子迈多大,如果α太小,可能导致梯度下降的速率慢,或者说计算的次数多,太大可能会错过最小值,甚至不能收敛。

α后面那个式子是偏导数,随着越来越最小值,该值会越来越小(在二维空间可以理解为某点切点的斜率)

:=表示赋值语句

这里需要同步更新,而不是计算了θ0,就赋值,然后用新的θ0去计算θ1

4.在线性回归问题中使用梯度下降


得出结果:


5.多元线性回归

上面的例子房子的价格例子中,只用了一个特征,即房子的大小,如果我们再加入3个特征,房子卧室数目,层数,房子使用了多久,这样就有多个特征值,这样用一个数来表示就不行了,就必须使用矩阵(特征向量)。如下图:


那用假设函数怎么用矩阵表示多个特征呢,如下图




6.多元线性回归梯度下降

对于多特征或者说多变量的多元线性回归中,梯度下降函数如下图:



6.1 梯度下降的缩放

对于多特征量,有些的取值可能很大,比如上述例子中房子的尺寸,有些取值可能很小,比如房子的卧室数,这样就会导致计算的时候,时间过长。
我们可以通过用相同的缩放比例来处理,这样可以使函数收敛得更快,既循环的次数更少。如下图:缩放比例也不是必须要在某个区间(如下图的0~1),只要相差不大就可以了,比如特征1的范围是1~3, 特征2取址是 -1~1 等都是可以的

一般我们可以按照下面公式来缩放特征值:u1表示x1的平均值(大概的),s1表示x1的取址范围

6.2 收敛判断

我们通过画出 min J(Θ) 迭代次数的函数图像,如下图,在300以前,下降是比较明显的,在300-400区间几乎接近于水平,我们就可以认为已经收敛。
对于不同的问题,迭代的次数差距可能很大,所以我们无法判断到底要迭代多少次,但是通过图像可以试着找出收敛。

当然,我们也可以通过设定一定阀值,当一次迭代下降的小于某个值,则认为收敛,但是这个阀值的确定是比较难的。所以还是更多的通过图像来确定。

6.3 学习速率α

有时我们绘制的 min J(Θ) 可能是下面的样子,一般这种情况,再排除代码错误的情况下,我们应该用更小的 学习速率


但是还是那个问题,如果学习速率过大,可能导致不能收敛,过小,导致收敛的循环次数过多。所以到底多大,只有通过不断的试,一般每次大概是3倍,例如 学习效率=1,如果可行,则继续增加,变为3,10,...  如果过大,则变为 0.3, 0.1,0.03......

7.多元线性回归的正规方程解法

7.1 正规方程解法(Normal Equation)

 除了梯度下降算法,我们还可以通过正规方程来解代价方程中θ。可以通过对代价函数中,每个θi 求偏导数,令其等于0,然后联立解方程,但是很麻烦。


我们可以通过矩阵来求;如下图例子:假设只有4个训练集,4个特征值

我们首先建立X矩阵和y矩阵,X矩阵的每一行是一个训练集的一组特征值,y矩阵是其对应的目标值

然后可以通过下面的方法,求出θ


7.2 正规方程和梯度下降

 梯度下降: 特征量即使很大,也能比较良好的进行计算,但是需要选择学习速率α和多次迭代
正规方程:不用选择学习速率(当然也不需要进行变量的缩放),也不用进行迭代,但是当特征量很多的时候,计算就很慢,求nxn的矩阵的逆矩阵,时间复杂度相当于n^3
按照andrew Ng的话,如果小于10000,一般现在正规方程,否则选择梯度下降







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值