regression 输出是数值
如:股票预测,自动驾驶(输入是各种sensor,输出方向盘角度),推荐系统
source : http://www.openintro.org/stat/data/?data=pokenman
哈,真的,听课很开心~~)
input( x x ):某一只宝可梦 ( xs,xhp,xw,xh,xcp x s , x h p , x w , x h , x c p )
output( xcp x c p ):进化之后的CP值
Step2: Goodness of Function
通过定义loss function(input:function;output:function的效果)来评估模型好坏。
https://img-blog.csdn.net/20180802210445490?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzE5NjI4MTQ1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70” alt=”1533195175604” title=”” />)
loss function的画图:
从function set中挑选最好的function
* Gradient Descent
假设一个简单的task
L(w) 有一个参数的简单Loss Function(可微分),找到一个w,使得L(w)最小
1 . 1 随机选择初始点。(存在方法更好的选择初始点)
1 . 2 计算w对Loss的微分(负值增加w,正值减少w)逐步更新 w w
(linear regression 没有局部最优。)
2.1随机选取两个初始值
2.2在 w=w0,b=b0 w = w 0 , b = b 0 的偏微分,并反复更新 w,b w , b
可视化2这个过程:(越蓝,loss越小。)
随机选取初始值(左下角的红色)
计算偏微分,并计算乘上 η η 之后的偏微分,进行更新
在linear regression(右图)中Loss Function L 是convex的,是没有局部最优的。因为就是如图只有等高线。
用model 在training data上进行训练,testing data来计算 Average Error
model:1次->2次->3次->4次
model 越复杂,包含越多的function(training data中下图,右侧圆圈的颜色是左侧的式子,橙色的圆包含绿色),可以找到function使得loss在training data上 越低
过拟合
收集更多的数据之后:
观察,跟物种 xs x s 有关,只考虑cp不对,重新设计
将不同物种的上式if改写成Linear regression:
Average Error :14.6
考虑CP数值是不是和其他的属性有关系。
不是大木博士怎么办:把所有属性都放进去。
没用的特征太多,很容易overfitting。做regularization
Regularization 重新定义Loss Function ,放入knowledge让我们可以找到比较好的Function
在原来的loss基础上加上额外的式子。
加上之后=>要找到的function的参数越小越好。也就是参数值比较接近0,是比较平滑。即当input有变化时,output的变化是不明显的。
xi=xi+δxi x i = x i + δ x i ,变化是 wi(xi+δxi) w i ( x i + δ x i ) , wi w i 越小,变化越小,输出对于输入就不会更加敏感。
wi w i 越小,预测值越接近 y y
红框中没有 b b ,因为不需要调整bias,bias只会上下移动, wi w i 会影响平滑
一个比较平滑的Function会受到比较好的影响。对noise不会特别敏感
但是太平滑会产生不好的影响。=>需要调整 λ λ