目前在学习Coursera的Machine Learning课程,决定做一份笔记以便记录学习情况。
这是机器学习的第一章第一节:Cost Function(代价函数)
通过这一节的学习将会了解到以下两个函数公式的含义:
函数1.1.1-Hypothesis:\(h_\theta (x)=\theta _0+\theta_1x\)
函数1.1.2-Cost function:\(\displaystyle J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)^2\)
对于机器学习的问题主要有两大分类:1. Supervised learning 2. Unsupervised learning. 代价函数的目标在于对于给出的一组数据(training set),根据其变化规律(函数1.1.1),来计算函数1.1.1对于给定这组数据的相近程度,即代价(函数1.1.2)。因此代价函数属于第一类,Supervised learning。
首先介绍函数1.1.1,函数1.1.1称为Hypothesis,即我们所假设的这组数据的理想的变化规律,是计算代价函数的基础。
对于该函数:\(h_\theta (x)=\theta _0+\theta_1x\),这是我们学习机器学习所用到的基本假设函数,即存在一个变量\(x\),对应一个结果\(h_\theta (x)\),存在两个系数\(\theta_0\)和\(\theta_1\)。
对应一个简单的例子:假设\(h_\theta (x)\)是房价,房价的影响因素只有一个房屋面积\(x\),同时存在一个基础价格\(\theta_0\),那么我们就可以根据函数1.1.1来预测一个任意大小的房子对应的房价。此时我们就会想到,房价的影响因素还有地理位置(如果我们可以将其量化),还有已建设时间等等,而且地理位置与房价是正相关的,已建设时间与房价是负相关的,同时其相关关系也不一定是一次函数关系等等。因此我们的函数1.1.1可以写成各种各样的形式。
仍以文章所示函数1.1.1为例,这个函数仍然可被简化,也就是\(\theta_0=0\)或\(\theta_1=0\)两种情形:
对于\(\theta_0=0\),函数1.1.1简化为:\(h_\theta (x)=\theta_1x\),此时函数图像过原点;对于\(\theta_1=0\),函数1.1.1简化为:\(h_\theta (x)=\theta_0\),此时函数图像为一条与x轴平行的直线。图像如下所示:
然后介绍函数1.1.2,函数1.1.2叫做Cost function,即标题中所提到的代价函数,代价函数的值反应了所使用的函数1.1.1与给出的这组数据(training set)的贴合程度。
对于该函数:\(\displaystyle J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)^2\),由于比较复杂,我们分成以下四步来理解:
1、我们将右半部分看作\(\frac{1}{2}\cdot \bar{x}\),其中\(\bar{x}\)称为Squared error function(或 Mean squared error),也就是函数1.1.1给出的预测值\(h_\theta (x)\)与这组数据的真实值\(y\)的差的平方的平均值(m表示这组数据共有m项);
2、平方项中,\(x\)和\(y\)均有角标\(i\),有时我们也会看到这样的形式:\((h_\theta(x^{(i)})-y^{(i)})^2\),它们的意思是一样的,\(i\)表示的是给出的这组数据(training set)的第\(i\)项,也称作索引,\(x_i\)即表示training set的第\(i\)个自变量的值,\(y_i\)则对应第\(i\)个因变量的值;
3、系数"\(\frac{1}{2}\)"能够简化Gradient descent的计算(梯度下降法计算代价函数最小值),因为在计算过程中要对函数1.1.2进行求导,可知该系数能够在求导后与后半部分的平方进行抵消,从而达到简化计算的效果;
4、我们的目标是使该函数最小,即最符合真实的变化规律,因此需要通过不断调整\(\theta_0\)和\(\theta_1\)的值来实现。
对应具体例子中,需要引入函数1.1.1,我们首先从函数1.1.1的简化形式来计算函数1.1.2,即\(\theta_0=0\)的情况。在此假设我们的training set有三组数据:\((1,1)\),\((2,2)\)和\((3,3)\),如图所示:
![]() | ![]() |
函数1.1.1为过原点的直线,方程为:\(h_\theta (x)=\theta_1x\),我们很容易能够想到,当\(\theta_1=1\)时,函数\(h_\theta (x)\)完全符合training set,那么它的代价应该是最小的。根据函数1.1.2,因为\(h_\theta (x_i)\)与\(y_i\)相等,那么二者之差为\(0\),所以函数1.1.2的结果也为\(0\),那么此时对应的\(J-\theta\)图像如上所示,此时仅有点\((1,0)\)。当我们引入\(\theta_1=0.5\)和\(\theta_1=0\)时,分别计算它们在函数1.1.2下的结果,可得到如下图所示点:
![]() | ![]() |
由此不难推断,函数1.1.2将呈现为一个二次函数的形式,最小值在\(\theta_1=1\)处。
至此我们讨论的是\(\theta_0=0\)的情况,上例的\(h_\theta(x)-x\)图像和\(J(\theta_1)-x\)图像可直接画出。
对于\(\theta_0\)不为\(0\)的情况,仍可作出\(h_\theta(x)-x\)图像,不过由于\(J(\theta_0,\theta_1)\)将变为两个自变量,因此会成为三维图像。但是,想到地理中我们所见过的等高线地图,我们同样也可以将其拍扁并用二维图像来表示。以下分别展示了三维情况下函数1.1.2对应的图像和用二维表示的函数1.1.2对应的图像:
![]() | ![]() |
此时,我们用Contour(轮廓线)表示\(J(\theta_0,\theta_1)\)值相等的位置,\(x\),\(y\)轴对应为\(\theta_0\),\(\theta_1\),通过改变\(\theta_0\)和\(\theta_1\),将由\(h_\theta (x)\)得到对应\(J(\theta_0,\theta_1)\)图像。
end~