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

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

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

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

matlab程序:

  1. 1: x = load('ex5Linx.dat');

  1. 2: y = load('ex5Liny.dat');

  1. 3: plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r')

  1. 4: %如果不加'o','MarkerEdgeColor','b','MarkerFaceColor','r'这些那么自动会把这些点连起来。

  1. 5: x = [ones(length(x),1) x x.^2 x.^3 x.^4 x.^5];%制作矩阵X,前面讲了怎么变换。

  1. 6: [m, n] = size(x);

  1. 7: n = n -1;

  1. 8: rm = diag([0;ones(n,1)]);%lamda后面的对角矩阵

  1. 9: lamda = [0 1 10]';%正则项系数分别取0,1,10

  1. 10: colortype = {'g','b','r'};%不同的曲线不同的颜色

  1. 11: sida = zeros(n+1,3);%初始化θ,每一列代表不同的正则项系数得到的参数向量

  1. 12: xrange = linspace(min(x(:,2)),max(x(:,2)),100)';

  1. 13: %生成一个从x最小值到最大值之间有均匀的100个元素的向量

  1. 14: hold on;

  1. 15: for i = 1:3

  1. 16:     sida(:,i) = inv(x'*x+lamda(i).*rm)*x'*y;%计算参数sida

  1. 17:     norm_sida = norm(sida)

  1. 18:     yrange = [ones(size(xrange)) xrange xrange.^2 xrange.^3,...

  1. 19:         xrange.^4 xrange.^5]*sida(:,i);%xrange是一个100维的向量,

  1. 20:     %xrange.^2是对这个向量每一个元素都进行平方

  1. 21:     plot(xrange,yrange,char(colortype(i)))

  1. 22:     hold on

  1. 23: end

  1. 24: legend('traning data', '\lambda=0', '\lambda=1','\lambda=10')%注意转义字符的使用方法

  1. 25: hold off

结果:

deep learning (五)线性回归中L2范数的应用的更多相关文章

  1. deep learning (六)logistic(逻辑斯蒂)回归中L2范数的应用

    zaish上一节讲了线性回归中L2范数的应用,这里继续logistic回归L2范数的应用. 先说一下问题:有一堆二维数据点,这些点的标记有的是1,有的是0.我们的任务就是制作一个分界面区分出来这些点. ...

  2. [Deep Learning] 深度学习中消失的梯度

    好久没有更新blog了,最近抽时间看了Nielsen的<Neural Networks and Deep Learning>感觉小有收获,分享给大家. 了解深度学习的同学可能知道,目前深度 ...

  3. matlab的Deep Learning的toolbox 中的SAE算法

    最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的 ...

  4. Deep Learning基础--word2vec 中的数学原理详解

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...

  5. 《Neural Network and Deep Learning》_chapter4

    <Neural Network and Deep Learning>_chapter4: A visual proof that neural nets can compute any f ...

  6. 机器学习——深度学习(Deep Learning)

    Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,近期研究了机器学习中一些深度学习的相关知识,本文给出一些非常实用的资料和心得. Key W ...

  7. [Deep Learning] 常用的Active functions & Optimizers

    深度学习的基本原理是基于人工神经网络,输入信号经过非线性的active function,传入到下一层神经元:再经过下一层神经元的activate,继续往下传递,如此循环往复,直到输出层.正是因为这些 ...

  8. (转)机器学习——深度学习(Deep Learning)

    from:http://blog.csdn.net/abcjennifer/article/details/7826917 Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立 ...

  9. paper 126:[转载] 机器学习中的范数规则化之(一)L0、L1与L2范数

    机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...

随机推荐

  1. vim常用快捷键记录

    yy复制一行 2yy复制2行 同理 3yy复制3行 p粘贴复制 dd删除一行 ctrl+f 翻页 ctrl+b 上翻 shift+a 跳到行尾进入insert模式 shift+i 跳到行首进入inse ...

  2. 【转】python面向对象中的元类

    type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello.py模块: class Hel ...

  3. 深入浅出Node.js(上)

    (一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...

  4. Adaptive Execution如何让Spark SQL更高效更好用

    1 背  景 Spark SQL / Catalyst 和 CBO 的优化,从查询本身与目标数据的特点的角度尽可能保证了最终生成的执行计划的高效性.但是 执行计划一旦生成,便不可更改,即使执行过程中发 ...

  5. 架构在APP和前端里的应用和演进

    架构设计相关的理念.技术.实践,比如存储高可用.微服务.异地多活等,都是后端系统才会涉及.事实上确实也是如此,通常情况下我们讲架构设计,主要聚焦在后端系统,但这并不意味着 App.前端就没有架构设计了 ...

  6. springboot-数据库

    Spring-data-jpa jpa定义了一系列持久化的标准,比如hibernate就实现了这一标准. Springboot 的jpa就是hibernate的整合. 在pom文件中增加配置: < ...

  7. libhdfs的配置和使用

    测试环境:centos6.10,hadoop2.7.3,jdk1.8 测试代码:HDFSCSample.c #include "hdfs.h" #include <strin ...

  8. MySQL运维问题集锦

    1.莫名的慢查询问题.解决思路:http://hidba.org/?spm=5176.153233.793262.6.d75LDx&p=1119

  9. hadoop实战项目:查找相同字母组成的字谜

    前面我们学习了MapReduce编程思想和编程示例,那么本节课程同学们一起操练操练,动手完成下面的项目. 项目需求 一本英文书籍包含成千上万个单词或者短语,现在我们需要在大量的单词中,找出相同字母组成 ...

  10. 九度oj-题目1103:二次方程计算器

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2799 解决:633 题目描述: 设计一个二次方程计算器 输入: 每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式. 输 ...