从零开始的机器学习的学习日记(二)——Regression(回归)

因为是自己刚开始学习的笔记,肯定存在很多理解不对的地方,大佬们如果发现问题,希望能够指出,感谢感谢!

一、一般步骤

步骤1:设置Model

Linear Model:y=b+∑wi×xi(其中:b表示bias; w表示weight)

步骤2:Goodness of Function

收集Training Data

定义Loss Function:L(f) = L(w, b) = ∑(y - ( b + w * x)²

步骤3:Best Function

找到最佳的w,b,记作w*,b*。

  • 具体方法:Gradient Descend

    • 随机选取一个点,向斜率小于0的方向移动,移动距离与斜率的绝对值成正比(多元函数即与偏微分组成的梯度成正比),比例系数即Learning Rate。Linear Regression上没有Local optimal,用这个方法找到的一定是Global optimal,无需担心Local optimal问题。
    • Learning Rate:设置过小效率底下,设置过大会找不到最优解。最好设置成先大后小μt=μ/√(t+1)。
    • Adagrad:learning rate再除一个过去所有微分值的均方根。
    • Stochastic gradient descent:只取一个样本,立即调整,速度较快。
    • Feature scaling:把不同分布范围的变量放缩至范围一致,使其对Loss贡献一致化。常见做法:x减去标准值除以方差。
    • 注意点:微分小容易导致学习效率非常低,例如在plateau上微分很小如何判断是否达到了Global optimization。

步骤4:Generalization——使用Testing Data检测Loss值。

回到步骤1:

  1. 选择更加复杂的Model,例如原函数逐步增加二次项等高次项。在增加复杂度的过程中Training Data的Average Error逐渐降低,但在Testing Data上发现先减小后增大的现象,即overfitting。
  2. 考虑更多的影响因子,加入到Model中。
  3. Regularization(平滑化):
  •    L=∑(y - ( b + w * x)²+\lambda∑(wi)²(期待更小的w,使曲线更加平滑,此处不用考虑bias,对平滑度没有影响)

二、错误分析

来源:

1.bias(偏差)

2.variance(方差)

分析错误:

1 假设均值m是\mu

2 假设x的方差s²是\delta²

3 当样本足够多时,m的期望就是\mu,s²的期望是(n - 1) / n 乘\delta²

5 多组实验:若选择简单的Model,会有小的variance,复杂的Model,会有较小的Bias。故随着Model增大,情形从variance小于bias,即underfitting逐步转向相反方面,即overfitting的原因。

错误处理

bias:使用更复杂的模型,增加变量。

Variance:收集更多数据(条件不允许情况,可以通过各种数据处理获取更多资料,比如图片翻转,变声处理),regularization。

注意点:经过Training Data,Testing Data训练后选择最好的结果,实际使用中往往结果会变差。可以将Training Data分成两部分,一部分用于训练,一部分用于选最好的Model,此时Testing Data的结果与实际情况相近,要管住手不要根据Testing Data的结果调整。

猜你喜欢

转载自blog.csdn.net/wulingyu501/article/details/109046666