传统机器学习-正则化(吴恩达机器学习笔记)

解决过拟合的方法

1、减少特征数,降噪          

     人工挑选留下的特征     

     模型选择算法,降低模型复杂度

2、正则化     

会保留所有的特征,但是会控制每一个参数的幅度(参数值较小意味着一个更简单的假设模型。参数值越小,曲线越平滑)。该方法在面对特征很多,且每个特征对预测都会有些影响的时候效果不错。

增加样本数

使用验证集(防止测试集过拟合)

线性回归的正则化

模型定义不变:

        h_{\theta }(x) = \theta _{0} x_{0}+ \theta _{1}x_{1} + \theta _{2}x _{2} + \cdots + \theta _{n}x_{n} = \theta^{T}x

损失函数:加上正则化项,防止系数过大(为了能够尽量减小与样本的误差,拟合的曲线可能非常陡峭,数学表示就是系数非常大),岭回归(L2正则化)

        \begin{aligned} J(\theta) &= \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}) - y^{(i)})^{2}+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2} \\ &=\frac{1}{2m}(X\theta - y)^{T}(X\theta - y)+\frac{\lambda}{2m}\theta^{T}\theta \end{aligned}

梯度下降:梯度下降法的执行过程

        Gradient descent

           Repeat{

              \begin{aligned} \theta_{0} &= \theta_{0} - \alpha\frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{0}^{(i)} \\ \theta_{j} &= \theta_{j} - \alpha[\frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{j}^{(i)} +\frac{\lambda}{m}\theta_{j}]\end{aligned}

             }(同时更新所有的参数\theta )

            \theta_{j} = \theta_{j}(1-\frac{\alpha\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{j}^{(i)}

           其中1-(\alpha\lambda)/m<1,直观上相当于将\theta的幅值缩小了之后,再进行和之前一样的梯度更新操作。

正规方程:

\theta = (X^{T}X + \lambda\Lambda )^{-1}Xy,其中\Lambda = diag(0,1,1,\cdots,1),是(n+1)*(n+1)维向量。之前说过X^{T}X有可能不可逆,但是正则化之后,只要保证\lambda>0,则X^{T}X + \lambda\Lambda一定可逆。

逻辑回归的正则化

模型定义不变

        h_{\theta}(x) = g(\theta^{T}x)

        g(z) = \frac{1}{1 + e^{-z}}h_{\theta}(x) = \frac{1}{1 + e^{-\theta^{T}x}}

损失函数

       J(\theta) =-\frac{1}{m}\sum_{i=1}^{m}[ylog(h_{\theta}x)+(1-y)log(1-h_{\theta}(x)))+\frac{\lambda}{2}\sum_{j=1}^{n}\theta_{j}^{2} ]

梯度下降:梯度下降法的执行过程

        Gradient descent

           Repeat{

              \begin{aligned} \theta_{0} &= \theta_{0} - \alpha\frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{0}^{(i)} \\ \theta_{j} &= \theta_{j} - \alpha[\frac{1}{m}\sum_{i=0}^{n}(h_{\theta}(x^{(i)})-y^{(i)}))\cdot x_{j}^{(i)} +\frac{\lambda}{m}\theta_{j}]\end{aligned}

             }(同时更新参数\theta )

偏差与方差

传统机器学习-正则化(吴恩达机器学习笔记)_第1张图片

模型误差=偏差(Bias)+方差(Variance)+不可避免的误差

导致偏差的主要原因:对问题本身的假设不正确,例如:非线性数据使用线性回归,欠拟合(underfitting)就是高偏差的表现。

高方差:数据的一点点扰动都会较大的影响模型。通常原因,使用的模型太复杂,例如高阶多项式回归,过拟和(overfitting)就是高方差的表现。

有一些算法天生是高方差的算法,例如KNN,非参数学习通常都是高方差算法,因为不对数据进行假设。

有一些算法天生是高偏差算法,例如线性回归,参数学习通常都是高偏差算法,因为对数据具有极强的假设。

大多数算法具有相应的参数,可以调整偏差和方差,如KNN中的k,如线性回归中使用多项式回归。

偏差和方差通常是矛盾的。降低偏差,会提高方差;降低方差,会提高偏差。

岭回归(L2正则)与LASSO回归(L1正则)

传统机器学习-正则化(吴恩达机器学习笔记)_第2张图片传统机器学习-正则化(吴恩达机器学习笔记)_第3张图片

LASSO趋向于使得一部分系数值变为0,故可作为特征选择使用。

传统机器学习-正则化(吴恩达机器学习笔记)_第4张图片传统机器学习-正则化(吴恩达机器学习笔记)_第5张图片

直观考虑:岭回归,每一步\theta都是有值的,故呈现上述下降方式;LASSO回归不可导,用符号函数近似表示,则梯度不是正负1就是0,他不能和岭回归一样通过曲线达到0的位置,只能用规则的方式到达,这种方式就会达到某些轴的零点。

传统机器学习-正则化(吴恩达机器学习笔记)_第6张图片传统机器学习-正则化(吴恩达机器学习笔记)_第7张图片

L0正则:使非零参数个数尽量小,实际上用L1正则替代,因为L0正则化的优化是NP难问题。

J(\theta)=MSE(y,\hat{y};\theta) +min(number-of-non-zero-\theta)

弹性网络:结合了LASSO回归和岭回归。

J(\theta)=MSE(y,\hat{y};\theta) +r\alpha \sum_{i=1}^n|\theta_i| + \frac{1-r}{2}\alpha \sum_{i=1}^n\theta_i^2

你可能感兴趣的:(机器学习)