【机器学习】线性回归

来源:互联网 发布:c语言中‖是什么意思 编辑:程序博客网 时间:2024/05/15 01:57

监督学习问题(supervised learning)

 

讲线性回归之前先说一下监督学习问题(supervised learning),我们的目标是给定一个训练集(training set)根据一种学习算法(learning algorithm)去训练函数h(function h ),使得h(x)能够较好的预测y的值。

训练集training set)的定义如下:


x(i)为输入样例,y(i)为输出样例。x(i)中上标i代表第几个输入样例,y(i)相应的输出样例。

训练函数h(function h )是一个由输入值X预测输出值Y的函数h(x),其中h(x)里含有不确定的参数。训练的过程即为确定h(x)参数的过程。

学习算法(learning algorithm)是一种由训练集作为输入,h(x)的参数作为输出的一种方法。可以把学习算法(learning algorithm)当成一个函数来看待。

监督学习的过程如下:


 

y的值是连续的我们称之为回归问题(regression problem),当Y的值只能取离散的值我们称之为分类问题(classification problem)。

线性回归问题(linear regression

称为线性的原因是因为我们在监督学习问题中所用的训练函数(function h)是一个线性函数,称为回归的原因是因为h(x)是一个连续的函数。

我们定义这个线性函数如下:


 

其中xi为训练集(training set)中一个输入样例,i代表输入样例中的第i个特征,为相应的参数,为不确定的量。

 

为了求出这些不确定的量,或者说求出使得预测值h(x)最接近真值y的参数。我们首先要有一个评判标准,或者有一个可以作为评判的值,这个值可以用来表示取不同的值时,h(x)y的接近程度。代价函数(cost function)就是作为评判用的,它的定义如下:

 

从式子中可以看出,如果的值取得不好,预测值与真实值的值相差就会越大,最后导致的值就会越大。相反,如果的值取得好,就会很小。我们的目的在于寻求最优的,使得的值最小。

梯度下降算法(gradient descent algorithm)

在机器学习:线性回归(2)中,讲到了代价函数(cost function)。这个函数可以评价值取得好坏,但是我们无法计算每个的取值,即使我们令为0,因为有多个值,一个方程多个未知数是解不出来的。另外一个原因是这个方程还不一定有解。下面就介绍梯度下降算法(gradient descent algorithm),这个算法可以根据训练集(training  set)求得最优的,使得的值最小。算法的思想是,首先给每个取一个随机或者统一的初始值,然后根据更新规则将每个的值进行更新,直到每个的值趋向于最优。

更新规则的推导过程:

代价函数(cost function)的定义如下:

                                                                                                                                                                                  式(1)       

假设我们只有一个训练样例(x,y),这样我们可以忽略式(1)等号右边的求和符号。然后我们对式(1)两边对求导:


因此对于只有一个训练样例的情况,更新规则是这样的:

                                                          式(2)

式(2)中,alpha称为学习率(learning rate),它决定了theta的更新速率。alpha后面的部分是cost function对求偏导的相反的值。接下来解释为什么更新规则要写成这样的形式。

首先,当只有一个训练样例的时候,关于是一个二次函数,而且是开口向上的二次函数,也就是说有极小值,当然这个极小值不一定等于0。我们的目的在于寻求使得取极小值时的的值。这个求的过程根据式(2)是通过不断更新的值求得的一个相对稳定的

当cost function对的偏导数大于0时,说明此时的是在取得极小值时的位置的右面,也就是取得的太大了,所以要减少的值。减少的速率是由alpha控制的。当cost function对的偏导数小于0时,说明此时的是在取得极小值时的位置的左面,也就是取得的太小了,所以要增加的值。减少的速率是由alpha控制的。

的变化速率不仅要看alpha,还要看的大小,因为当的值差距很小的时候,说明此时的已经迭代的很好了,所以就趋向于0,所以的更新速率就会较慢。当的值差距较大的时候,说明此时的不太好,所以的绝对值就会较大,所以的更新速率就会较快。


0 0