Overfitting
if we have too many features, the learned Hypothesis may fit training set very well ( J(θ)=12m∑mi=1(hθ(x(i)−y(i))2≈0 ), but fail to generalize to new examples。
如果我们的学习函数有许多的特征, 也许这个函数可以“完美” 的拟合我们的训练数据,但这很有可能对于一个新的样本造成错误的判断。
Generalize
Generalize refer to how well a Hypothesis applies even to new examples。
泛化指学习函数适用于新样本的能力
学习函数不能很好的拟合样本 –> Underfit or High bias
出现过拟合 : Overfit or High variance
Options
- Reduce number of features.
- Manaually select which features to keep.
- Model selection algorithm
- Regularization
- Keep all the features, but reduce magnitude / values of parameters θj
- Works well when we have a lot of features, each of which contributes a bit predicting y 。
为了使得 CostFunction 尽可能的小, 后面的高阶多项式的系数 θ 就会要设置的尽可能的小, 几乎接近于 0, 故我们可以忽略后面的高阶多项式, 来最优化这个 Hypothesis .
为了可以使 θ 尽可能的小。我们要从新定义一下 CostFunction :
在普通的线性回归方程中, 我们用梯度下降算法计算 θ 的步骤如下:
标准方程中, 我们可以用 θ=(XTX)−1×XTY 直接得到 θ 的最优解。
而带正规化的标准方程的式子有一点变化,(根据梯度下降推导)
逻辑回归和线性回归的梯度下降算法中, 式子的形式是一样的,只是其中的 Hypothesis 不一样。
function [jVal, gradient] = costFunction(theta)
jVal = [code to compute (J of theta)]
gradient(1) = [code to compute (gradient1 of the theta_0)]
gradient(2) = [code to compute (gradient1 of the theta_1)]
*
*
gradient(n+1) = [code to compute (gradient1 of the theta_n)]