一.实验目标
掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟合的方法(如加惩罚项、增加样本)
二.实验要求和实验环境
实验要求
- 生成数据,加入噪声;
- 用高阶多项式函数拟合曲线;
- 用解析解求解两种loss的最优解(无惩罚项和有惩罚项)
- 优化方法求解最优解(梯度下降,共轭梯度);
- 用你得到的实验数据,解释过拟合。
- 用不同数据量,不同超参数,不同的多项式阶数,比较实验效果。
- 语言不限,可以用matlab,python。求解解析解时可以利用现成的矩阵求逆。梯度下降,共轭梯度要求自己求梯度,迭代优化自己写。不许用现成的平台,例如pytorch,tensorflow的自动微分工具。
实验环境
- Microsoft win10 1809
- python 3.7.0
- Sublime Text 3
三.设计思想
1.算法原理
(0)数据的产生
- x为 之间的随机数.
- 噪音由一个标准正态分布函数 *0.1 产生
- y = sin(x) +
- 利用循环, 根据x产生范德蒙德矩阵X
- 将 X, y 都转为矩阵类型
(1) 解析解(不带惩罚项)
误差函数:
将上式写成矩阵形式:
通过将上式求导我们可以得到式
令 得到
(2) 解析解(带惩罚项)
为了防止参数多时具有较大的绝对值,即过拟合。在优化目标函数式中增加的惩罚项,因此我们得到了:
同样我们可以将上式写成矩阵形式, 我们得到:
对上式求导我们得到: