Regression
1. 什么是Regression(回归)?
2. 实现Regression的步骤
step1:Model(建立一个模型)——线性模型
step2: Goodness of function(确定评价函数)——损失函数
step3:Best function ——梯度下降法
3. 方法优化(从step1,model入手)
方法1:select another model(选择另一个模型)
方法2:consider the hidden factors(考虑其他隐藏因素)
4. 进一步优化,方式过度拟合(从step2入手,)
方法:Regularization(正则化)
5. 总结和个人理解
1. 什么是Regularization(回归)?
Regression 就是找到一个函数 function,通过输入特征 x ,输出一个数值 Scalar 。
例如:
1. 对于道路交通,输入道路情况,输出方向盘应该旋转的角度;
2. 对于天气预测,输入过去几天的天气情况,输出明天的温度或者湿度等;
2. 实现Regression的步骤(机器学习的步骤)
Framework(框架)
A set of function + training data → goodness of function → pick the best function
以神奇宝贝的进化后的cp值预测为例
step1:Model(建立一个模型)——线性模型
y = b + w*x ,
其中
x 为输入量,即进化前的cp值(先以此为例,后面再加其他因素)
y 为输出量,即进化后的cp值
step2:Goodness of function(确定评价函数)——损失函数
Training data:This is real data (x1,y1) (x2,y2) (x3,y3) (x4,y4)……(x10,y10)
实际进化后的CP值与模型预测的CP值的差值来判断建立的模型的好坏程度。
也就是Loss function,L(f)=L(w, b)是和w,b有关的函数,L(f)越小,说明我们建立的model越好。
L(w,b) = ∑ ( yn - f (xn) )^2
也可以写成
L(w,b) = ∑ ( yn - ( b + w * xn ) )^2
step3:Best function ——梯度下降法
目的:找到一个最合适的参数w,b 使得Loss function的值最小,即误差最小
方法:Gradient Descent(梯度下降法),实际就是求微分。
如何实施:
Gradient Descent(梯度下降) → if only one parameter → w = arg min L(w)
1 (Randomly) Pick an initial value w0 1 随机选其一个初始值w0
2 Compute 𝑑𝐿/𝑑𝑤 |𝑤=𝑤0 → w1 = w0 -η*𝑑𝐿/𝑑𝑤 |𝑤=𝑤0 2 计算Loss function在w0的微分
(η is called “learning rate”) 如果微分为负,则往前继续运算;
3 Compute 𝑑𝐿/𝑑𝑤 |𝑤=𝑤0 → w2 = w1 -η*𝑑𝐿/𝑑𝑤 |𝑤=𝑤1 如果微分为正,则往后继续运算;
4 Many iteration(多次迭代) 3 重复以上步骤,直至找到最低点停止。
Gradient Descent → how about two parameters→ w* , b* = arg min L(w , b)
1 (Randomly) Pick an initial value w0, b0
2 Compute 𝑑𝐿/𝑑𝑤 |𝑤=𝑤0 → w1 = w0 -η*𝜕𝐿/𝜕𝑤 |𝑤=𝑤0 (偏微分)
Compute 𝑑𝐿/𝑑b |b=b0 → b1 = b0 -η*𝜕𝐿/𝜕b |b=b0
3 Compute 𝑑𝐿/𝑑𝑤 |𝑤=𝑤1 → w2 = w1 -η*𝜕𝐿/𝜕𝑤 |𝑤=𝑤1 (偏微分)
Compute 𝑑𝐿/𝑑b |b=b1 → b2 = b1 -η*𝜕𝐿/𝜕b |b=b1
4 [ 𝜕𝐿/𝜕𝑤; 𝜕𝐿/𝜕b] | gradient
5 𝜕𝐿/𝜕𝑤 = 𝜕𝐿𝜕𝑏 =
如果是两个变量,w,b,就求偏微分,过程和一个变量相同,最终找到使得Loss function最小的w*,b*。
总结:至此Gradient Descent就已经完成了,Regression也就完成了。但是存在一些问题,也就是可能找到的结果只是局部最优解。
3. 方法优化(从model入手)
Selecting another Model(选择其他的模型)
前面选择的model为 y = b + w*x
我们可以选择更复杂的model y = b + w1*x + w2*x2
重新使用Gradient Descent确定b,w1,w2的值,并使用Test data计算L(f)。
再次选择更复杂的model y = b + w1*x + w2*x2 + w3*x3
再次使用Gradient Descent确定b,w1,w2,w3的值,并使用Test data计算L(f)。
重复以上步骤,对比得出最好的model(并不是越复杂的model越好)。
A more complex model yields lower error on training data.
A more complex model does not always lead to better performance on testing data
We need to select suitable model
Consider more hidden factors(考虑其他的因素)
如考虑神奇宝贝的种类,种类a、种类b等
If x = a,y1 = b1 + w1 * x + ……
If x = b,y2 = b2 + w2 * x + ……
……
y = y1 + y2 + y3 +……
或者一起更多的因素。
4. 进一步优化,防止overfitting(过度拟合)
Regularization(正则化)
y = b + w*x
L(w,b) = ∑ ( yn - ( b + w * xn ) )^2 + λ ∑ (wi)2
解释:在Loss function后加上与w相关的量之后,如果要使得L(f)最小,则w(斜率)也需要比较小,因此Loss function也就会更加平滑。
缺点:选取合适的λ可以减少过度拟合的情况,但是如果λ选取过大(正则化过度),会使得bias增大。
5. 总结
以Regularization目的,介绍了如何使用Gradient Descent来选择最合适的model,并有一些改进意见。
后续:下次笔记内容有,分析误差的来源,并对 model 选取 做出进一步改善。