【MindSpore:跟着小Mi一起机器学习】单变量线性回归(一)
几天不见,动力不减!话说回来,我们要正式开始挑起大梁干大事了,前面一段时间,小Mi已经带大家初步了解了机器学习,复习了机器学习中需要用到的线性代数知识点,这次我们就要开始正式学习监督学习下的单变量线性回归(那么后面是不是还有多变量线性回归?Bingo!答对了!)啦。那就废话不多说,抓紧时间跟小Mi一起机器学习吧~
1 模型描述
在介绍篇中,小Mi就已经给大家大致介绍过监督学习下的线性回归算法了,我们所参考的例子依旧是之前提到的预测住房价格模型:有这么一个数据集,包含了房屋面积大小以及其对应的价格,首先根据这组数据我们可以在图像中先把它标出来。那么,我们需要做的就是构建一个模型进行数据拟合,这个模型也许是条直线,也许是条抛物线等等,然后根据这个数据模型预测房价,从而给我们提供了一个相对比较合理并且符合房价市场的参考。这就是一个监督学习算法线性回归的整个过程。
这个算法模型被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子的实际价格是多少,而且更具体来说,这是一个回归问题。回归一词指的是,根据之前的数据预测出一个准确的输出值,对于这个例子来说就是价格,当然啦,想要预测离散的输出值时,小Mi之前也提到过,这就是分类问题啦。
更正式地,在监督学习中我们称数据集为训练集。以房价为例,我们就有一个房价的训练集,我们的工作就是从这个训练集中学习如何预测房价,符号m表示训练样本的数量,x表示输入变量/输入特征,y表示输出变量/要预测的目标变量,(x,y)表示一个训练样本,表示特定的训练样本,也就是第i个训练样本,h(hypothesis)则表示学习算法的解决方案或函数也称为假设。
从上图我们可以了解到学习算法的任务就是输出一个函数h,那么怎么表示这个函数h呢?我们再来好好捋一下,要解决房价预测问题,我们实际上是要将训练集传送给我们的学习算法,进而学习得到一个假设h,然后将我们要预测的房屋大小作为输入变量输入给h,预测出该房屋的交易价格作为输出变量输出为结果。一句话,参考h根据输入的x值来得出y值,y值对应房子的价格,最可能的表达方式:,因为只含有一个特征/输入变量,而且又是线性函数的表达关系,这样的问题就叫做单变量线性回归问题。单变量就是指单一变量,接下来,我们就可以知道如何手动实现上述学习算法模型咯!
2 代价函数
在线性回归中,我们有这样的一个训练集,m代表了训练样本的数量,比如m=47。而我们的假设函数,也就是用来预测的函数模型,是这样的线性函数形式:。我们需要做的就是要为我们的模型选择合适的参数和,在房价问题这个例子中便是直线的斜率和在y轴上的截距。我们需要做的就是弄清楚如何把最可能的直线与我们的数据相拟合。
我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是指建模误差。得出两个参数的值,来让假设函数表示的直线尽量地与这些数据点很好地拟合。
那么又如何确定参数的值呢?现在提出的想法就是,要选择能使h(x),也就是输入x时我们预测的值最接近该样本对应的y值的两个参数,数学上来说就是要解决一个最小化的问题 ,使得h(x)与y之间的差值尽可能的小。于是就选取了可以使得建模误差的平方和能够最小的模型参数。即:使得最小,这样的一个函数我们也称之为代价函数。
代价函数也被称为平方误差函数,或平方误差代价函数。之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
2.1 代价函数图形解释(一)
为了方便理解,小Mi带领大家从特殊情况到标准形式一起过一遍,首先我们先看下特殊形式下的代价函数以及如何获取其最小值的。
取多个不同值,求出不同的对应J值,…..在进行描点之后,我们可以发现当只有这一个参数的时候,其实代价函数的图像是一个抛物线的形式。
2.2 代价函数图形解释(二)
在标准形式下, 小Mi觉得大家可以想象一下,既然一维参数是抛物线,那么二维参数是不是就是一个立体空间上的碗状形式?没错,下图可以参考下,高度即为代价函数的值,可以看到它仍然有着最小值的,而到达更多的参数的时候就无法像这样可视化了,但是原理都是相似的。
我们还可以把上面的这个三维图像映射到二维平面上,这样的图像叫做等高图像,每一条颜色线上的点都具有相同的值。
通过这些图形,我们能够更好地理解这些代价函数J所代表的值是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点,更接近于代价函数J的最小值。
当然,我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数J取最小值的参数来。小Mi认为编个程序把这些点画出来,然后人工的方法来读出这些点的数值,这依然无法真正实现机器学习,隔靴搔痒一样。我们也会遇到更复杂、更高维度、更多参数的情况,而这些情况是很难画出图的,因此更无法将其可视化,因此我们真正需要的是编写程序来找出这些最小化代价函数的的值。
在下一节,小Mi将介绍一种算法,能够自动地找出能使代价函数J最小化的参数的值,是不是很开心,这才是真正的机器学习嘛!好了,今天小Mi带着大家学习了单变量线性回归算法的模型表示,并且从数形结合的角度描述了代价函数的存在意义,但是更精彩的还在等着大家,我们下期再见~