机器学习-多变量的线性回归模型与实现笔记

0x00 代价函数

多变量的回归问题中,feature有多个,比如房屋价格预测问题,feature除了房屋的面积,还可能有房子的间数、房子的地段、房子的层数等因素所影响。在多变量回归问题中,我们的假设函数如下:

在此基础上,计算回归的代价函数为:

根据上面的公式,在Octave中,一行代码即可实现:

X为feature的矩阵(房子的面积、层面等),y为训练集结果矩阵(即训练集中的真实房价),theta为回归的参数(有多个)。

0x01 梯度下降

我们知道,对于回归模型,其核心是在求合适的各个theta参数。
在求回归模型中合适的参数时,通常使用梯度下降算法,公式如下:

这里需要注意的是,对于n+1个参数,theta1为1是恒定的,不用处理,其余n个参数进行同时更新
对于单变量的梯度下降算法,Octave代码如下:

在求theta(1)theta(2)时,使用了两个temp变量,是为了对两个theta的值进行同时更新操作(先更新后赋值)。
在多变量的梯度下降算法实现中,只需要同时更新各个theta即可:

0x02 验证模型


这里举出单变量拟合的例子,对于多变量回归,其实是一回事儿。可以看到,经过算法运行,求取了合适的参数组合,图中的蓝色直线即拟合的结果。
右图即代价函数的等高线,上的点是最终的minJ取值。

综上所述,对于多变量回归问题,我们的处理思路是寻找feature,求出假设函数,求出代价函数,在代价函数基础上利用梯度下降算法,最后验证模型的效果。实际上,在机器学习算法的逻辑回归模型中,也是这个过程。

[via@ExploitCat-91ri团队]