上期回顾
应用场景--->向量化--->模型-->结果
人工智能主要围绕模型展开,模型可以理解为公式
模型之一:线性回归
模型是直线,让直线拟合这些点,所以叫线性回归
需求:给出一组数据x,y,给出点的分布情况(给出一个公式),类似于y=ax+b
也就是说,通过调整a,b的值,让直线拟合这些点
(调整w,b的值就是机器在学习的过程,要知道,不管怎么调整,都是由误差的,机器学习的目的
就是找到合适w,b让误差最小)
优化之后,我们得到w=2,b=1的值,得到此模型(公式)
y_prodict=2x+1 mse=(y_prodict-y)*2 误差最小,就是求mse最小
代码展示:
x,y=通过查表读取出来de 百分之80
model=line(建立线性回归的模型)
model.fit(x,y) 训练模型
model.w
model.b
模型做出来之后,使用训练数据和测试数据分别得出预测值和真实值去比较,求出平方值的最小值
mse只有相对意义
推广能力:能在测试集上表现很好的能力
mse的最小值
mse=(y_prodict-y)^2现在的目的就是不断地调整w,b让mse最小即可
也就是说求mse的最小值
解决方案:先求导数,判断单调型,一旦单调性发生改变,图像就会转弯
mse/w=2(wx+b-y)*x
先随机给w0,w1=w0-&*mse/w,w2=w1-mse/w1 一直找最小值,这叫梯度下降法 因为要震动的浮动,所以增加一个参数&,控制震动的小
问题
问题一:测试机的误差和训练集的误差谁大谁小
测试机的mse有可能比训练集大,也有可能比训练集小
但是,因为很难取到训练集的数据,所以,在工程上,测试集的数据要比训练集mse大
解决办法:增大训练集;增大训练集的多样性
模型是针对训练集的,很难渠道压在训练集上的数据
问题二:为什么使用方差
方差:把容易测得测完之后,mse下降一定值,就会注意到一些
难测得一些数据
绝对值:只训练简单的,不做难题
问题三:训练集的mse是不是越小越好
不能越小越好,过度拟合的话,就学过头了
怎么判断学过头?
将训练集的数据分成训练和有效的,1h的时候看一下mse,2h的时候
看一下mse,当发现mse变大的时候,说明学过头l
总结一点:线性回归就是通过不断的去调整w,使得mse最小
多元线性
y=wx=b
y=w1x+w2x+w3x...
简称:x=(1,x1,x2,x3) w=(w0,w1,w2,w3) y=w^t*x
使用线性回归的条件是数据尽可能在一条直线上
若是抛物线:y=w1x^2+w2x+w0
更复杂一点:y=w1x+w2x^2+w3x^3...