【第22期】观点:IT 行业加班,到底有没有价值?

Regularization线性回归练习

原创 2015年07月10日 14:24:14

        监督机器学习问题无非就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。

       本文参考的资料参考网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html 主要是给定7个训练样本点,需要用这7个点来模拟一个5阶多项  式。主要测试的是不同的regularization参数对最终学习到的曲线的影响。

        模型表达式为:

            

         代价函数:

       

 

        模型的normal equation求解为:

   

        实验实现

        %加载数据

        数据下载: ex5Data.zip                                                                                                               

        http://openclassroom.stanford.edu/MainFolder/courses/MachineLearning/exercises/ex5materials/ex5Data.zip

        X = load('ex5Linx.dat');
        y = load('ex5Liny.dat');
        %显示原始数据
        plot(X,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r');

       

           分别对lamda=0,1,10三种情况下拟合,结果如下:

     

          可以看出,当lambda=1时,模型最好,不容易产生过拟合现象,且有对原始数据有一定的模拟。

          实验主要代码如下:

 

         

%参照斯坦福大学提供的练习题
%Exercise: Regularization
%http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html
clc
clear all
close all
%加载数据
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);
diag_r=diag([0; ones(n-1,1)]);
lamda=[0,1,10];
sida=zeros(n,3);
X=linspace(min(X),max(X))';
X1 = [ones(size(X)), X, X.^2, X.^3, X.^4, X.^5];

for i=1:3  %求得参数sida,最后是一个n*3的矩阵
    sida(:,i)=inv(x'*x+lamda(:,i)*diag_r)*x'*y;
    norm_sita=norm(sida);
end

   Y=X1*sida; %向量化求得Y的值,无需放在for循环里
   hold on
   plot(X,Y(:,1),'r--')%lamda=0的情况
   plot(X,Y(:,2),'g--')%lamda=1的情况
   plot(X,Y(:,3),'b--')%lamda=10的情况
   legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意转义字符的使用方法
   hold off


 

 

  

        

       

版权声明:本文为博主原创文章,未经博主允许不得转载 欢迎交流~ 举报

相关文章推荐

(斯坦福机器学习笔记)线性回归练习

代码均使用python3.x题目是:import numpy as np import random import matplotlib.pyplot as pltF64 = 'float64'def...

机器学习之——机器学习中的数学(2)-线性回归,偏差、方差权衡

http://www.cnblogs.com/LeftNotEasy/archive/2010/12/19/mathmatic_in_machine_learning_2_regression_and_bias_variance_trade_off.html     ...
  • kavy
  • kavy
  • 2015-12-17 18:54
  • 239

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

线性回归和正则化(Regularization)

1.线性回归介绍 线性模型的向量形式 为了解决这个问题,我们采用最小二乘估计求解参数Beta, 最小二乘的几何介绍 图来源(ESL p45) 最小二乘的几何解...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)