简介
回归的步骤实际上就是:
- 预设定相应的函数模型-Model
- 设定损失函数 -Loss function
- 求解最优的函数模型 -Find the best function
- 通过函数对未知数据的进行预测
一、函数模型以及误差函数的定义
- 定义线性模型:
- 定义误差函数:
%3D%5Csum%7Bi%3D1%7D%5En(%5Chat%7By%7D%5Ei-%5Csum%7Bj%3D1%7D%5Ek%5Comegaj%5Ccdot%5C%20x_j%5Ei-b)%5E2%0A#card=math&code=L%28f%29%3D%5Csum%7Bi%3D1%7D%5En%28%5Chat%7By%7D%5Ei-%5Csum_%7Bj%3D1%7D%5Ek%5Comega_j%5Ccdot%5C%20x_j%5Ei-b%29%5E2%0A)
代表用来预测函数的第
组数据的目标值
表示用来预测函数的第
组数据的第
个参数值
为第
个参数值的权重
二、求解函数参数
- 设置函数模型为一个参数值的简单模型:
- 可得误差函数为:
%3D%5Csum%7Bi%3D1%7D%5En(%5Chat%7By%7D%5Ei-(%5Comega%5Ccdot%20x%5Ei%2Bb))%5E2%0A#card=math&code=L%28%5Comega%2Cb%29%3D%5Csum%7Bi%3D1%7D%5En%28%5Chat%7By%7D%5Ei-%28%5Comega%5Ccdot%20x%5Ei%2Bb%29%29%5E2%0A)
- 很显而易见的是
#card=math&code=L%28f%29) 是关于
和
的函数。我们要做的就是调整
和
让误差函数最小。
- 采用梯度下降法求解
)%5Ccdot%20(-x%5Ei)%0A#card=math&code=%5Cfrac%7B%5Cpartial%7BL%7D%7D%7B%5Cpartial%7B%5Comega%7D%7D%3D2%5Csum_%7Bi%3D1%7D%5En%28%5Chat%7By%7D%5Ei-%28%5Comega%5Ccdot%20x%5Ei%2Bb%29%29%5Ccdot%20%28-x%5Ei%29%0A)
)%5Ccdot%20(-1)%0A#card=math&code=%5Cfrac%7B%5Cpartial%7BL%7D%7D%7B%5Cpartial%7Bb%7D%7D%3D2%5Csum_%7Bi%3D1%7D%5En%28%5Chat%7By%7D%5Ei-%28%5Comega%5Ccdot%20x%5Ei%2Bb%29%29%5Ccdot%20%28-1%29%0A)
则有:
其中 ,
为学习率 (自己设定),写成矩阵的形式如下:
则有:
注:以上均采用简单的线性模型进行推导,非线性函数推导过程类似
三、评价求解出的模型
- 最直观的方法是采用优化完成之后误差函数的稳态值的大小来直接估计模型的好坏,一般来说,误差函数值越小,模型越好,但是由于过拟合问题的存在导致该值不适合作为标准.所以一般使用测试集的误差来对模型进行评估.
- 选择测试集的三种方法: 留出法,交叉验证法,自助法
- 问题之一 overfitting 把训练样本自身的一些特点当做了所有潜在样本的一般性质,导致泛化性能下降,他也是机器学习中所遇到的关键障碍.
- 实质是模型的 variance 偏大.一般现象是在 training_data 上有较好的效果,而在 testing_data上却效果不佳.
- 解决方法之一: Regularization (正则化)
也就是改写损失函数为:
%3D%5Csum%7Bi%3D1%7D%5En(%5Chat%7By%7D%5Ei-(%5Comega%5Ccdot%20x%5Ei%2Bb))%5E2%2B%5Clambda%5Csum%7Bi%3D1%7D%5En%5Comega%5E2%0A#card=math&code=L%28%5Comega%2Cb%29%3D%5Csum%7Bi%3D1%7D%5En%28%5Chat%7By%7D%5Ei-%28%5Comega%5Ccdot%20x%5Ei%2Bb%29%29%5E2%2B%5Clambda%5Csum%7Bi%3D1%7D%5En%5Comega%5E2%0A)
注: 不需要考虑b项,但是正则化在消除 variance 的过程中会损伤到 bias
- 问题之二 underfitting 是指训练样本自身的特点没有学习到位.
- 实质上是模型的 bias 偏大.一般现象为模型对 training_data 的拟合就效果不好.
四、优化梯度下降法的技巧
- Adagrad: 优化
值
- 由于一般来说
会随着像最优点的靠近越来越小所以:
- 用对一次微分的二范数来代替难以计算的二次微分
%5E2%7D%7D%5Cnabla%7BL%7D%5Et%0A#card=math&code=%5Comega%5E%7Bt%2B1%7D%3D%5Comega%5Et-%5Cfrac%7B%5Ceta%7D%7B%5Csqrt%7B%5Csum_%7Bi%3D0%7D%5Et%28%5Cnabla%7BL%7D%5Ei%29%5E2%7D%7D%5Cnabla%7BL%7D%5Et%0A)
- SGD: 每次只取一个或一部分样本进行优化,来增加计算速度
- Feature_Scaling 让
的值归一化,使他们的尺度保持一致,一般采取方式为计算标准分数
%7D%7Bstd(xj)%7D%0A#card=math&code=x%7Bij%7D%3D%5Cfrac%7Bx_%7Bij%7D-mean%28x_j%29%7D%7Bstd%28x_j%29%7D%0A)
#card=math&code=mean%28x_j%29) 为对第
组参数取平均值
#card=math&code=std%28x_j%29) 为对第
组参数取标准差


图片取自知乎
