线性回归
好记性不如烂笔头,梳理了一下知识点,方便自己忘记时,巩固知识
首先是机器学习的三个步骤:
Step1: Model
Step2: Goodness of Function
Step3: Find the best function
Step1:
本次是分析宝可梦(神奇宝贝!!!)进化前的CP值对进化后的CP值的预测。
线性回归的分析,这里先假设model是f(xncp) = b + w * xncp
Step2:
建立一个随时函数来判断方法的好不好
L(f) = ∑10n =1(y’n - f(xncp))
转化一下变成w,b的Loss函数
L(w,b) = ∑10n =1(y’n - (b + w * xncp))
接下来要做的事情就是找到一组w,b是的L(w,b)最小
w*,b* = argminw,bL(w,b)
Step3:
这里使用的是梯度下降(爬山法)的方法
这里使用一元的介绍一下梯度下降
1,随机选出w0
2,计算该点在L(w)上的斜率,就是算这一点的微分,结果记为d,
如果d > 0向左移,减小w;如果d < 0向右移,增大w
3,w1 = w0 - λ * ∂L(w)/∂w(w0代入计算)
4,直到wT = 0时结束,得到w值
该方法存在一个问题,就是局部最优解。比如在你实际例子中当wT 无限趋近与0了,你有可能认为它要到最终目的地了,就停止了。但是它可能与最终点还有一段距离(函数太过平滑)。或者函数有好几个谷值,可能这个谷值不是真正的最小点是一个局部最小点。
二元的计算方法也是类似的,无非就是对w,b分别微分,知道两者都等于0.得到结果。
以下是程序计算的结果:
w = 2.668084232234726
b = -187.67102850934788
当然可以计算一下误差(我计算的平均误差):
误差值平均为:
89.74
下面是实验图