zoukankan      html  css  js  c++  java
  • regularized 线性回归练习

    在机器学习中,如果参数很多,而样本数量比较少,很容易产生过拟合问题。因此在函数的损失模型中加入惩罚系数,这些参数一般都会很小,而越小的参数,模型越简单,越不会产生过拟合问题。参考的网页资源为:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html

    实验原理:

        假设对于一个由10个点组成的样本,要拟合一条曲线来表示。如果想采取高次多项式预测表示,如下:

                

        那么现在我们有了模型的六个特征,分别对应的六个预测参数。如果用这个五次多项式去拟合一个只有十个点的样本集,很容易产生过拟合。所以我们引入惩罚参数:

                

      是怎么控制过拟合的呢?它独立于预测参数的平方和,当预测参数很大时,损失函数必然会很大。所以往往预测参数就会很小,在极端情况下,假设第五个参数小到零,则变成四次多项式了,再小呢,最后就有可能接近于二次曲线、乃至直线。这样的话,模型就趋于简单化。有效的控制了过拟合的产生。

    Normal equations方法:

      

    和普通的正则方程法相比,公式左边括号中增加了一个乘以一个(n+1)*(n+1)的矩阵。最左上角是零,剩下的是一个单位对角矩阵。The vector $\vec{y}$ and the matrix $X$unregularized regression的定义是一样的:

              

    使用这个等式,寻求对于以下三个不同的的预测参数:

    a. $\lambda = 0$ (等同于non-regularized linear regression)

    b. $\lambda = 1$

    c. $\lambda = 10$

    实验结果如下:

     等于10的时候的过拟合的可能性最小。

    源代码如下:

    clc,clear
    %加载数据
    x = load('ex5Linx.dat');
    y = load('ex5Liny.dat');
    
    %显示原始数据
    plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r')
    
    %将特征值变成训练样本矩阵
    x = [ones(length(x),1) x x.^2 x.^3 x.^4 x.^5];
    [m n] = size(x);
    n = n -1;
    
    %计算参数sidta,并且绘制出拟合曲线
    rm = diag([0;ones(n,1)]);%lamda后面的矩阵
    lamda = [0 1 10]';
    colortype = {'g','b','r'};
    sida = zeros(n+1,3);
    xrange = linspace(min(x(:,2)),max(x(:,2)))';
    hold on;
    for i = 1:3
        sida(:,i) = inv(x'*x+lamda(i).*rm)*x'*y;%计算参数sida
        norm_sida = norm(sida)
        yrange = [ones(size(xrange)) xrange xrange.^2 xrange.^3,...
            xrange.^4 xrange.^5]*sida(:,i);
        plot(xrange',yrange,char(colortype(i)))
        hold on
    end
    legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意转义字符的使用方法
    hold off
  • 相关阅读:
    iptables操作指令
    最怕问初衷,大梦成空
    kettle官网wiki
    Pentaho Spoon (Kettle) 出现 Timestamp :Unable to get timestamp from resultset at index 30 错误的解决
    win10安装vs2013失败解决方法
    2020 最新 kail 安装教程
    01_docker学习笔记(一)
    数据结构的基础概念
    BOS3
    配置文件添加druid控制台
  • 原文地址:https://www.cnblogs.com/ahujack/p/3022945.html
Copyright © 2011-2022 走看看