Machine learning Under fit and over fit
基本概念
欠拟合指模型不佳,不足以准确对 train 分类。
过拟合是指对 train 非常好,但是泛华能力很差,一般来说,当特征数 n 大于样本数 n 时,容易出现过拟合,即需要求解的参数个数 n 也比较多时。
如何解决过拟合问题?
-
特征选择,筛选去掉无用特征. 如何筛选?.. 算法来筛选特征
-
正则化
正则化就是代价函数再加一个惩罚项,不合适的参数将惩罚
增加代价,从而迫使选择更合理
的参数是代价最小。一般用到的思路是 L1/L2 正则化。
注意正则化并不减少参数个数,而是让参数更合理。
L1 正则后的解是稀疏解,意味着很多$\theta$为 0。
L2 正则后意味着很多$\theta$值会比较小.因为大的值容易造成扰动
。
正则参数过大,问题将变成欠拟合
问题,因为过大的参数导致$\theta$趋于 0,才能保证代价函数不过大,$\theta$都为 0 了,那就是欠拟合了,压根没用。
回归问题的正则化
- 梯度下降法
对于 linear 和 logistic, gradient descent 形式几乎是一样的,只是假设函数$h_{\theta}(x)$不同,
增加 L2 正则化后,梯度下降法为:
\[\theta_{j} &=\theta_{j} - \frac{\alpha}{m}\sum_{i=1}^{m}(\left ( h_{\theta}(x^{(i)} - y^{(i)}) \right )\cdot x^{(i)}_{j} +\frac{\lambda}{m}\theta_{j}) \\ &=\theta_{j}(1-\frac{\alpha\lambda}{m}) - \frac{\alpha}{m}\sum_{i=1}^{m}(\left ( h_{\theta}(x^{(i)} - y^{(i)}) \right )\cdot x^{(i)}_{j} \end{align*}\]可以看出随着迭代,我们希望$\theta_{j}$是在减少的. 因为有约束: $$
编程时间时,对 costFunction 的代价函数和梯度做对应修改即可。
直观上,希望一点点的减少$\theta$.
- 线性回归的正规方程
最终求解为:
\[\theta = (X^{T}X+I\lambda)^{-1}X^{T}y ,\ where \ I \ as\ a \ (n+1)x(n+1) \ unit \ matrix\]很神奇的加了正则项后,原不可逆的$(X^{T}X)^{-1}$变为$(X^{T}X)^{-1}+I\lambda$后,将变得可逆.
线性的理解
常碰到线性
两字, 比如线性回归
,也就是尽量用直线拟合数据.
更多的是:
某个样本集线性可分
,在三维以下很直观,即是通过直线,平面可将样本区分开来。要分类这样的样本有很多算法,感知机
,logistic 回归
,SVM
等。
当然,对线性不可分
的数据,也有很多更复杂的算法。(神经网络..)
但是也可以从简单的线性回归通过feature mapping
到非线性回归.
如果训练集无法线性划分,可以考虑将特征的映射成为更复杂的函数。 如:
$x^{T}\theta=x_{0}theta_{0}+x_{1}\theta_{1} + x_{2}\theta_{2}$
无法做到的,可以使用:
$x^{T}\theta=x_{0}theta_{0}+x_{1}\theta_{1} + x_{2}\theta_{2} + x_{2}^{2}\theta_{3} + x_{1}^{2}\theta_{4}$
新的特征由原特征构造,需要求解新的参数.即求解更复杂的多项式解。
如何选择特征映射?这是个好问题…
SVM
是通过核函数
来实现内集运算从低维到高维的映射。
- 由决策边界想到的
决策边界就是$X^{T}\theta=0$的地方.这是 ex2 最后的结果:
难道也可以用来做图像的识别?马上打脸了..特征太多 没法算