zoukankan      html  css  js  c++  java
  • deep learning (五)线性回归中L2范数的应用

    cost function 加一个正则项的原因是防止产生过拟合现象。正则项有L1,L2 等范数,我看过讲的最好的是这个博客上的:机器学习中的范数规则化之(一)L0、L1与L2范数。看完应该就答题明白了。

    这里我们说一下线性回归中L2范数的应用。假设我们的imageimage各维度变量(这里每一个样本image只有一维x)关系的模型是:imageimageimageimage表示是模型根据image各维度变量预测的image。    注意这个模型表明我们这里假设image与各维image度变量的关系不是线性的,如果是线性的那么就是h(X)=ax1+bx2+…,样本image每一维都是一次平方,然后叠加,这里只有一维,线性的话就应该是Y=ax。而这里有x的高阶,所以不是。 我们的cost function 采用的是最小均方误差法:image.如果我们加上L2的正则项,那么就是:

    image。(注意是加了正则项再1/m,但是不管是是加不加1/m、1/2m 都不改变求θ的那个公式,自己可以推一下,这里的系数只是影响cost function的值)。不加正则项的求θ的公式是: image,这里X,y分别是按行包含所有样本的矩阵和向量。按理说这个模型不能用前面的那个公式,因为前面的那个公式只是在image得到的,这里关系并不是那种线性关系。但是这里我们可以变换一下,θ0就是常数项,θ1就是x1,θ2就是x2…因为你看这里的h(x)的形式跟那个差不多,所以可以替代。也就是说还是用θ那个公式,只是公式里面的X的第一列是1第二列是每一个样本的x本身(这里样本只有一维),第三列是每一个样本的x平方…                

    加上L2正则项以后的求参数的公式是image.对角矩阵的维度是X的列数。

    matlab程序:

       1: x = load('ex5Linx.dat');
       2: y = load('ex5Liny.dat');
       3: plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r')
       4: %如果不加'o','MarkerEdgeColor','b','MarkerFaceColor','r'这些那么自动会把这些点连起来。
       5: x = [ones(length(x),1) x x.^2 x.^3 x.^4 x.^5];%制作矩阵X,前面讲了怎么变换。
       6: [m, n] = size(x);
       7: n = n -1;
       8: rm = diag([0;ones(n,1)]);%lamda后面的对角矩阵
       9: lamda = [0 1 10]';%正则项系数分别取0,1,10
      10: colortype = {'g','b','r'};%不同的曲线不同的颜色
      11: sida = zeros(n+1,3);%初始化θ,每一列代表不同的正则项系数得到的参数向量
      12: xrange = linspace(min(x(:,2)),max(x(:,2)),100)';
      13: %生成一个从x最小值到最大值之间有均匀的100个元素的向量
      14: hold on;
      15: for i = 1:3
      16:     sida(:,i) = inv(x'*x+lamda(i).*rm)*x'*y;%计算参数sida
      17:     norm_sida = norm(sida)
      18:     yrange = [ones(size(xrange)) xrange xrange.^2 xrange.^3,...
      19:         xrange.^4 xrange.^5]*sida(:,i);%xrange是一个100维的向量,
      20:     %xrange.^2是对这个向量每一个元素都进行平方
      21:     plot(xrange,yrange,char(colortype(i)))
      22:     hold on
      23: end
      24: legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意转义字符的使用方法
      25: hold off
    结果:

    image

  • 相关阅读:
    今日SGU 5.27
    今日SGU 5.26
    今日SGU 5.25
    软件工程总结作业
    个人作业——软件产品案例分析
    个人技术博客(α)
    结对作业二
    软工实践 二
    软工实践 一
    《面向对象程序设计》六 GUI
  • 原文地址:https://www.cnblogs.com/happylion/p/4182909.html
Copyright © 2011-2022 走看看