zoukankan      html  css  js  c++  java
  • 机器学习之三:过拟合与正则化

    欠拟合、过拟合

    用线性回归拟合曲线,或者用逻辑回归确定分类边界时,选择的曲线有多种。

    以分类问题为例,给定如下样本:

    image

    所取的边界,可以是这样(当然并不止这些):

    image

    不同曲线,对于样本的表达能力,各不相同,上图的几根曲线中:

    曲线1,使用一阶曲线,即直线模型,过于简单,出现大量的错误分类,此时的误差较大,模型欠拟合。

    曲线2,使用高阶曲线,几乎是完美的完成拟合任务,但如此严格的模型,当新的样本与训练样本稍有不同,极有可能出现误判,此时模型过拟合。

    而曲线3,一条相对平滑的曲线,基本能完成拟合任务,同时对于个别噪点也没那么敏感。是一个较为理想的模型。

    如何得到曲线3 ?

    高阶项的引入,可以构建更为复杂的模型。但从曲线2的形态来看,显然高阶项的影响过大了,需想办法做削减。

    假设曲线2的方程为:

    ( h_ heta(x) = heta^{T}x = heta_0 + heta_1x + heta_2x^2 + heta_3x^3 +...+ heta_nx^n )

    如果要减弱高阶项 (x^n) 的影响,可以通过减小 ( heta_n) 的值做到。

    即是在求取 ( heta) 矩阵时,同时要使矩阵内的元素值,尽量的小。

    ( heta) 是通过最小化误差函数计算出来,故而,对J函数做改造——正则化。

    正则化误差函数

    在原有的误差函数的基础上,增加一个正则项,如下:

    ( J = J + frac{lambda}{2m}sum_{j=1}^{n} heta_j^2 )

    该正则项,是所有 ( heta) 参数的平方和。(lambda) 是正则化参数,可以使用不同的 ( heta) 值训练模型,对比最后的误差来确定该值。

    加上正则项后,求误差函数最小值时,要能得到最优解,不仅要使样本的误差要最小,同时,( heta) 值也要最小才行。

    这样就达到了上一节的要求了。

    而相对应的梯度,通过求导可得到:

    ( grad_0 = grad_0, (j = 0) )
    ( grad_j = grad_j+frac{lambda}{m} heta_j, (j > 0) )

    注意:

    正则项有一点需要注意,该项中并没有将 ( heta_0) 计入。

    因为 ( heta_0) 这一项的特征为恒为1((x_0 = 1)),即为0次方。它只会影响曲线的位置高低,对于模型的曲折程度没有影响,故而不需要做正则化处理。

    是否只能过通正则化解决过拟合现象?

    答案:非也。

    首先需要说明的一点,过拟合的出现的根本原因,是模型中较多的变量,却没有足够多的训练样本,来约束这些变量。

    也就是,当训练样本逐渐增多的时候,那么曲线2也会慢慢的往曲线3变化,但要拟合到接近曲线2的状态,需要的样本量将是非常的庞大,而最终训练时的运算量也会很庞大,不是很必要。

    正则化的误差函数、及其偏导数实现

    只列关键部分代码

    1 线性回归

    h = X*theta;
    theta_tmp = theta(2:length(theta),1); 
    J = 1/(2*m)*(h-y)'*(h-y) + lambda/(2*m) * sum(theta_tmp.^2);
    grad = 1/m * x' * (h- y) + (lambda/m)*[0;theta_tmp];
    

    2 逻辑回归

    h = sigmoid(X*theta);
    theta_tmp = theta(2:length(theta),1); 
    J = 1/m * sum(-y.*log(h) - (1-y).*log(1-h)) + lambda/(2*m) * sum(theta_tmp.^2);
    grad = 1/m .* X' * (h-y) + (lambda/m)*[0;theta_tmp];
    
  • 相关阅读:
    jvm基本结构和解析
    多态的意思
    java中对象的简单解读
    double类型和int类型的区别
    python 解析xml文件
    win10不能映射Ubuntu共享文件
    Qt程序打包
    Ubuntu boot分区文件误删,系统无法启动,怎么解
    ubuntu Boot空间不够问题“The volume boot has only 5.1MB disk space remaining”
    Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
  • 原文地址:https://www.cnblogs.com/Fordestiny/p/8654965.html
Copyright © 2011-2022 走看看