机器学习系列(2)——回归
定义
Regression就是找到一个函数function,通过输入特征x,输出一个数值scalar。
应用举例
- 股市预测(Stock market forecast)
- 输入:过去10年的股票变动、新闻资讯、公司并购资讯等
- 输出:预测股市明天的平均值 - 自动驾驶(Self-driving Car)
- 输入:无人车上的各个sensor的数据,例如路况、测出的车距等
- 输出:方向盘的角度 - 商品推荐(Recommendation)
- 输入:商品A的特性,商品B的特性
- 输出:购买商品B的可能性
模型步骤
- 模型假设,选择模型框架(线性模型)
- 模型评估,如何判断众多模型的好坏(损失函数)
- 模型优化,如何筛选最优的模型(梯度下降)
模型假设——线性模型
一元线性模型(单个特征):
以一个特征为例,线性模型假设,所以w和b可以猜测很多模型:
多元线性模型(多个特征)
在实际应用中,输入特征肯定不止这一个。特征会有很多。所以我们假设线性模型Linear model:
- :就是各种特征(feature)
- :各个特征的权重
- :偏移量
模型评估——损失函数
考虑单个特征:
通过真实数据,使用损失函数(Loss function)来衡量模型的好坏,统计原始数据的和,和越小模型越好。
,将,代入得到最终定义损失函数
Loss function:
将w,b在二维坐标图中展示为:
- 图中每一个点代表着一个模型对应的w和b
- 颜色越深代表模型更优
最佳模型——梯度下降
考虑单个特征:
已知损失函数为,需要找到一个令结果最小的,在实际的场景中,我们遇到的参数肯定不止w,b,先从简单的只有一个参数w入手,定义
这里引入一个概念学习率:移动的步长,即图中的
- 随机选取一个
- 计算微分,也就是当前的斜率,根据斜率来判定移动的方向
- 大于0向右移动(增加w)
- 小于0向左移动(减少w) - 根据学习率移动
- 重复步骤2和步骤3,直到找到最低点
步骤1中,我们随机选取一个,我们有可能会找到当前的最小值,并不是全局的最小值,这里我们保留这个疑问。
以上解释完单个模型参数w,引入两个模型参数w和b,其实过程是类似的,需要做的是偏微分,过程如下图:
计算的方法为下图:
我们通过梯度下降gradient decent不断更新损失函数的结果,这个结果会越来越小,但是此过程还会有其他的问题。
- 当前最优(Stuck at local minima)
- 等于0(Stuck at saddle point)
- 趋近于0(Very slow at the plateau)
其实在线性模型里面都是一个山谷形状,梯度下降基本上能找到最优点,但是在其他更复杂的模型里面,就会遇到后两个问题了。
验证模型的好坏
不是能画出直线就是线性模型,各种复杂的曲线也可能是线性模型,因为把看作一个特征,其实也就是线性模型。
在训练集上main表现更为优秀的模型,为什么在测试集上反而变差了?这就是模型在训练集上过拟合的问题。
如图所示,每一个模型结果都是一个集合,3次模型 4次模型 5次模型,所以在4次模型里面知道的最佳模型,肯定不会比5次模型里面找到的更差。
步骤优化:
- 2个input的四个线性模型合并到一个线性模型中
- 增加更多的参数,更多的input
- 加入正则化
- w越小,表示function较平滑的,function输出值与输入值相差不大
- 并不是w越小模型越平滑越好,但是经验值告诉我们w越小大部分情况下都是好的
- b的值越接近于0,对曲线平滑没有影响