1 一道例题
有这么一道中学数学题。总成绩 XXX 和数学成绩 YYY 数据如下:
1 求数学成绩对总成绩的回归方程。
2 如果一个学生总成绩是450,求该学生的数学成绩。
能做出来吗?可以的话就不用看下去了。这个基本上算是目前机器学习的基石了,说起来也算是高中的知识范围,我不知道是不是人人都懂了,我觉得我不是很懂,所以周末抽时间专门写一篇来总结总结。。。
回归方程是Y=a+bX。所以现在要求的就是截距a和回归系数b。
首先计算平均值:
然后计算回归系数b
计算截距a
所以方程是:
Y=14.49+0.1325X
那么第二个问题也很好解了。代入总成绩 X=450X = 450X=450,Y = 14.49+0.1325×450=14.49+59.625=74.115。
上面的过程基本不算难,就是回归系数的推算,看了下是最小二乘法。
然后推断出上面的回归系数公式。
对了,再提一嘴,两个点求函数怎么求呢?这个初中知识。。。
斜率b = (y2 - y1)/(x2 - x1)
截距a = y - ax(任意一个点都行)
在现代计算机中,这部分都是改成矩阵运算了(所以最早搞游戏矩阵运算的老黄接下了这个泼天富贵。。。)
其中,XXX 是自变量矩阵,YYY 是因变量向量。
这里面具体的算法容我后面再看看。。。
2 最小二乘法
再说说最小二乘法,其实这个翻译真的很有问题,弯弯那边翻译成最小平方法,我觉得很贴切。一张图就可以看到这个的本质
本质就是使得绿线的平方和最小,那么这个蓝线就是最优。为什么用平方不用绝对值呢?据说原因有二。1是平方计算可导,更加方便。2是用平方可以放大误差,这样计算效果更好。
所以最小二乘法通过最小化以下目标函数来找到最佳拟合直线。
3 截距公式的推导
再看看截距公式的推导,我的数学不好,所以这部分也是copy并整理的。
误差平方和 S 可以表示为:
为了找到使 S 最小的 m 和 b,我们需要对 S 分别关于 m 和 b 求偏导数,并令它们等于零。
首先,对 S 关于 m 求偏导数:
展开并整理得:
由于 ,我们可以将其提取出来:
从上式,我们可以解出 m 关于 b 的表达式:
接下来,对 S 关于 b 求偏导数并令其为零,以找到 b 的值。但在这里,我们主要关注 m 的推导,因此 b 的具体值不是必需的。
然而,为了完整性,如果我们假设 ∑i=1 n xi=0(即数据点关于 xx 轴对称),那么 b 的项在 m 的表达式中就会消失,从而我们得到:
这就是使用最小二乘法计算直线斜率的公式。
4 最小二乘法和梯度下降
最后再早说说最小二乘法和梯度下降算法。
最小二乘法和梯度下降算法在目标和应用上有所区别,理解它们的关系和差异,有助于选择合适的方法解决具体问题。最小二乘法适用于简单线性回归和小数据集,而梯度下降则更灵活,适用于复杂和大规模数据集。
简而言之,就是最小二乘法只能用在简单的场景。复杂的还是只能用梯度下降。。。
参考: