Regularization线性回归练习

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

       本文参考的资料参考网页: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


 

 

  

        

       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习入门中的线性回归是一种有监督学习方法,用于建立一个线性模型,以预测一个连续的输出变量。线性回归的目标是通过在训练数据上学习到的权重和偏差,使得预测值与实际值之间的差距最小化。 在线性回归中,我们通过拟合一个线性函数来建立模型。这个线性函数可以表示为 y = w*x + b,其中 y 是预测的输出变量,x 是输入变量,w 是权重,b 是偏差。 为了找到最佳的权重和偏差,我们使用了最小二乘法来最小化预测值与实际值之间的平方差。具体地说,我们将训练数据中的每个样本的预测值与实际值之间的平方差相加,然后通过调整权重和偏差来最小化这个总和。 除了基本的线性回归之外,我们还可以引入正则化的概念,例如 L1 正则化和 L2 正则化。这些正则化项可以帮助我们限制模型的复杂度,防止过拟合的发生。L1 正则化通过加上权重的绝对值之和,而 L2 正则化则通过加上权重的平方和来实现。 线性回归是机器学习中最简单也是最常用的方法之一,它被广泛应用于预测和分析任务中。了解线性回归的基本原理和应用可以为进一步学习其他机器学习方法打下基础。 参考资料: http://freemind.pluskid.org/machine-learning/sparsity-and-some-basics-of-l1-regularization/ http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html The Elements of Statistical Learning,ch3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [机器学习方法:回归(一):线性回归Linear regression](https://blog.csdn.net/weixin_30617797/article/details/95509767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值