原理
已知测得的点 xi = [x1, x2, x3 ...]
,yi = [y1, y2, y3 ...]
利用梯度下降
法,使得代价函数(即误差)取最小值,求得此时的参数值
举个例子,假设要拟合的函数为y = ax + b
,代价函数为 J(a, b)
,现在要使代价函数最小
不妨想,在登山的过程中,东西方向为 a
, 南北方向为b
,函数值y
为山的高度。我们要下山,找到山的最低点的过程,就是梯度下降。现在理一理我们下山的步骤:
- 先向东西方向看,下降最大的方向是哪边(这个步骤叫求 a 的偏导)
- 再向南北方向看,下降最大的方向是哪边(这个步骤叫求 b 的偏导)
- 向确定的方向跨 α 步 (这个 α 叫做步长)
- 不断重复步骤123,确定四周已经足够平滑(设置 误差 ,表示已经到最低点了)
代码实现
// 一元线性回归
// _a, _b —— 需求的参数值
// xi, yi —— 样本数组
// _step —— 步长设置
//