监督学习——线性回归(一)

来源:互联网 发布:小学生作文辅导书 知乎 编辑:程序博客网 时间:2024/06/05 07:41
监督学习问题根据预测的输出值是连续的还是离散的,我们将其划分为回归(Regression)问题和分类(Classification)问题。即输出值是连续的则为回归问题,而输出值是在有限的离散值中取值,则为分类问题。接下来,我们先来了解回归问题。
    上篇博客中,我们列举了居住地和房子价格的例子,为了让这个例子更加丰富有趣点,我们在数据集中加入另一个元素,即每个房子中有几个房间。如下图所示:
    监督学习——线性回归(一)
    输入特征有两个,所以x为一个二维的向量。x1(i)表示第i个训练集实例的居住地,而x2(i)表示房子的房间个数。一般来说,当设计某个学习问题的算法时,输入特性的选择随设计者的需要,它可以是多维的
    为了利用监督学习,我们需要决定函数h的形式。作为一个初始选择,我们可以假定输出yx的线性函数。即:
    监督学习——线性回归(一)
    这里,θi为参数,也称为权值(weights)。为了简化上述表示,我们假定x= 1。因此上述可以表示为矩阵形式:
    监督学习——线性回归(一)
    上式中n表示输入变量的个数,θx都为列向量(为与普通变量区分开,我们将其格式设为斜体)。
    通过上面的数学表述,也就说说,给定某个训练集后,我们的工作就是如何选择或者说学习参数θ了。为了定义预测输出与相应真实输出值之间的差异,接下来我们引入代价函数(cost function),其定义如下:
    监督学习——线性回归(一)
    
    1)LMS算法
    我们的目标是,通过选择参数θ的取值,尽可能的使得上述代价函数的值最小。为了达到这个目标,我们可以首先通过初始猜测(initial guess)来初始化参数θ,然后不断改变参数θ的值,使得的值参数J(θ)尽可能小,直到最终得到最小化的J(θ)。特别的,让我们考虑一下梯度下降(gradient descent)算法。它初始化θ后,然后重复执行如下公式来更新θ的值。
    监督学习——线性回归(一)
    这里,α表示学习速率(learning rate)。值得一提的是,α取值太小会使得最终汇聚很缓慢,即梯度下降很慢,而取值太大,会使得最终汇聚很快,即梯度下降很快;而且不同的初始值α,有可能导致最终使的J(θ)最小的参数θ的值不相同。接下来我们需要关心的是最右边的那个偏导数的求解,对于上述我们的例子,我们可以得到:
    监督学习——线性回归(一)
    所以前面的更新等式可以简化为:
    监督学习——线性回归(一)
    上式就是我们所熟知的最小均方(Least mean squares, LMS)更新规则,或者也称作Widrow-Hoff学习规则。通过上式我们可以看到更新的幅度正比于误差项(括号中的那一项,它表示真实值和预测值之间的差异)的值。
    上面我们得到的只是对于一个训练集实例的关系式,对于多个训练集实例的情况下,我们还需要对上式做出一点修改,有两种方法:(1)批梯度下降(batch gradient descent);(2)统计梯度下降(stochastic gradient descent)。这里先给出二者的算法步骤。
    对于批梯度下降,其算法为:
    监督学习——线性回归(一)

    对于统计梯度下降,其算法为:
    监督学习——线性回归(一)

    也许乍一看下,没有觉得二者有什么区别,而实质则不然。对于批梯度下降算法,它在每一次更新上都要搜索真个训练数据集;而对于统计梯度下降算法,针对每一个训练集的单一实例,它都做出更新,即可以立刻做出反应。所以通常我们都会选择统计梯度下降算法。
    通过运行上述算法,我们可以得到找到参数θ的值来满足给定的训练集。对于上一个博客中的例子,运用批梯度下降算法,可以得到θ0 = 71.27θ1 = 0.1345。可以得到如下图结果:
    监督学习——线性回归(一)
    得到该函数h后,对于新加入的实例,我们就可以对其输出值做一个预测。有一个地方值得注意的是,参数θ的值有可能不能汇聚,而只是在使J(θ)最小化的附近震荡,但实际上,靠近该值θ的已经可以满足要求了。所以在程序实现的时候应该对这种情况加以考虑。
0 0
原创粉丝点击