线性回归
给定500 * 2的表,即500行2列的表,列用xy表示,得到模型并做出预测。
x | y |
---|---|
3.283938217 | 4.902920282 |
0.1234343224 | 1.8292920292 |
5.020202020202 | 10.192929292929 |
9.232343543 | 7.39339393939 |
在平面直角坐标系中,xy可以表示成一个点,得到y=wx+b表达式,使得直角坐标系上的点在这条直线上的距离尽可能短。我们需要不断调整w和b的值,最终得到最优解。
当只有一个 点的时候,过一点可以画出无限条直线,即w和b的值有无限多种
当有两个点的时候,得到唯一一条直线,此时w和b唯一
当三个点的时候(不在一条直线上),无论怎么得到wb,都会存在误差,这时候需要找到减小误差。
任何东西要优化,首先要量化。
方案一
假设最优表达式为y=wx+b,经过任意两点直线,得到y1,y2,…,yn,得到误差之和表达式1/n∑(|y-yi|)2,称之为MSE公式,M指均值,S指平方指数,E指yi。
思考
为什么MSE公式用|y-yi|2,而不用|y-yi|的方式?
因为用平方的方式,当模型解决了大部分容易的点的时候,如果注意力还在容易的点上,收益会变低,因此这时候模型就会把注意力往难的点上转移。
而单单用绝对值的方式,模型的注意力始终在容易的点上,从而忽视了难的点。这样,虽然难的点在训练集上,但是并没有被训练到。
得到的解分两种,有解析解和无解析解。因为数据量上百万,所以基本是无解析解,即无法得到w和b的一个确切值。所以可以使用python,利用机器学习得到解。
机器学习的数据集分两份,训练集(80%)和测试集(20%),在训练集拿到解,放到测试集上看效果。
训练集上的误差和训练集上的误差有什么发现?
在真实的环境,测试集上的误差值一般大于训练集。训练集的误差值可以认为是测试集上的目标。
从上面可以看出,筛选出来的训练集数据,应该尽可能贴合真实数据,所以不建议人工筛选数据。
推广能力:在训练集上得到的效果,在测试集上的推广能力。
面试
测试集上的MSE和训练集上的MSE谁大谁小?
理论上测试集的MSE有可能更高、也有可能更低。但是很难采集到比训练集小的测试集数据。可以通过增大训练集、增大训练集的复杂性。