警告:本文为小白入门学习笔记

在机器学习的过程中我们常常会遇到过拟合和欠拟合的现象,就如西瓜书中一个例子:

如果训练样本是带有锯齿的树叶,过拟合会认为树叶一定要带有锯齿,否则就不是树叶。而欠拟合则认为只要是绿色的就是树叶,会把一棵数也误认为树叶。

过拟合:如果我们的数据集有很多的属性,假设函数会对训练集拟合的非常好,也就是说损失函数J(theta)趋近于零,但是对新的样本却不能较为精确的预测(也就是不能够泛化到一般)。

所以要解决过拟合问题(addressing overfitting):

Options:

1 减少属性的个数

对于那些关联性比较弱的属性可以去掉

2 Regularization(正则化)

过拟合现象的产生可能是我们用这样一个多元方程去拟合实际上是一个一元或二元曲线

所以我们希望theta3,theta4,theta5竟可能的小,想想如果这样的话曲线是不是会变得简单很多,但是在实际情况下,我们不知道要去减小(penalty)哪一个theta,因此干脆去penalty每一个theta,所以在损失函数后面增加一个项来实现,而这一项就是正则化项

这里我们要记住的是,我们希望损失函数竟可能的小。

而 λ 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标。从而来保持假设的形式相对简单,来避免过度的拟合。

首先解决线性回归问题的过拟合:

数据下载:

http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html

使用正规方程去求解正规化线性回归是:

跟随 后面的是一个(n+1)*(n+1)矩阵,n表示属性的个数

使用这个式子就可以计算出theta的值。

MATLAB代码:

function [jVal] = regLinerReg(lamda)
x = load('ex5Linx.dat');
y = load('ex5Liny.dat');
%显示原始数据
plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r');hold on;
x = [ones(length(y), ), x, x.^, x.^, x.^, x.^];
[m,n] = size(x);
n = n - ;
rm = diag([;ones(n,)]);%lamda后面的矩阵
theta = inv(x'*x + lamda .* rm) * x' * y;
disp(theta);
x = load('ex5Linx.dat');
h = theta() + theta()*x + theta()*x.^ + theta()*x.^ + theta()*x.^ + theta()*x.^;
plot(x(:m),h,'g-');hold on;
end

分别使正则化参数设置为以下值:

lamda = 0;

lamda = 1;

lamda = 10;

可以发现当lamda=0 时,相当于没有加正则化项,函数经过每一个点,这就是过拟合。lamda = 1时稍微缓和,lamda=10 时函数平和,如果lamda再设置大些,函数曲线可能会成为一条直线。

Regularized logistic regression:

拿到数据集后,用MATLAB画出图形:

可以看出,这个图并不像前面的可以直接线性分割,所以假设函数是二元,最高次为6次函数。

设u表示x1(也就是数据集ex5Log.dat的第一例数据),v为x2(是第二列数据)。

摘抄自网页  http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html

% Exercise  -- Regularized Logistic Regression

clear all; close all; clc

x = load('ex5Logx.dat');
y = load('ex5Logy.dat'); % Plot the training data
% Use different markers for positives and negatives
figure
pos = find(y); neg = find(y == );
plot(x(pos, ), x(pos, ), 'k+','LineWidth', , 'MarkerSize', )
hold on
plot(x(neg, ), x(neg, ), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', ) % Add polynomial features to x by
% calling the feature mapping function
% provided in separate m-file
x = map_feature(x(:,), x(:,)); %获得一个117*28矩阵 117是数据的条数,28是x [m, n] = size(x); % Initialize fitting parameters
theta = zeros(n, );%* % Define the sigmoid function
g = inline('1.0 ./ (1.0 + exp(-z))'); % setup for Newton's method
MAX_ITR = ;
J = zeros(MAX_ITR, ); % Lambda is the regularization parameter
lambda = ; % Newton's Method
for i = :MAX_ITR
% Calculate the hypothesis function
z = x * theta;
h = g(z); % Calculate J (for testing convergence)
J(i) =(/m)*sum(-y.*log(h) - (-y).*log(-h))+ ...
(lambda/(*m))*norm(theta([:end]))^; % Calculate gradient and hessian.
G = (lambda/m).*theta; G() = ; % extra term for gradient
L = (lambda/m).*eye(n); L() = ;% extra term for Hessian
grad = ((/m).*x' * (h-y)) + G;
H = ((/m).*x' * diag(h) * diag(1-h) * x) + L; % Here is the actual update
theta = theta - H\grad; end
% Show J to determine if algorithm has converged
J
% display the norm of our parameters
norm_theta = norm(theta) % Plot the results
% We will evaluate theta*x over a
% grid of features and plot the contour
% where theta*x equals zero % Here is the grid range
u = linspace(-, 1.5, );
v = linspace(-, 1.5, ); z = zeros(length(u), length(v));
% Evaluate z = theta*x over the grid
for i = :length(u)
for j = :length(v)
z(i,j) = map_feature(u(i), v(j))*theta;
end
end
z = z'; % important to transpose z before calling contour % Plot z =
% Notice you need to specify the range [, ]
contour(u, v, z, [, ], 'LineWidth', )
legend('y = 1', 'y = 0', 'Decision boundary')
title(sprintf('\\lambda = %g', lambda), 'FontSize', ) hold off % Uncomment to plot J
% figure
% plot(:MAX_ITR-, J, 'o--', 'MarkerFaceColor', 'r', 'MarkerSize', )
% xlabel('Iteration'); ylabel('J')

运行结果:

改变lambda = 1

lambda = 10;

我眼中的正则化(Regularization)的更多相关文章

  1. [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...

  2. zzL1和L2正则化regularization

    最优化方法:L1和L2正则化regularization http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化 ...

  3. 7、 正则化(Regularization)

    7.1 过拟合的问题 到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin ...

  4. 斯坦福第七课:正则化(Regularization)

    7.1  过拟合的问题 7.2  代价函数 7.3  正则化线性回归 7.4  正则化的逻辑回归模型 7.1  过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集( ...

  5. (五)用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  6. [笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

    欠拟合(Underfitting)与过拟合(Overfitting) 上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子.可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们 ...

  7. CS229 5.用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  8. [C3] 正则化(Regularization)

    正则化(Regularization - Solving the Problem of Overfitting) 欠拟合(高偏差) VS 过度拟合(高方差) Underfitting, or high ...

  9. 1.4 正则化 regularization

    如果你怀疑神经网络过度拟合的数据,即存在高方差的问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,但是你可能无法时时准备足够多的训练数据,或者获取更多数据的代价很高.但正则 ...

随机推荐

  1. Appium之开发环境搭建

    1.下载Appium 去官方网站下载http://appium.io/# : 本次以appium-desktop-setup-1.8.0.exe 文件为例,使用桌面版就不再需要下载server版本: ...

  2. 前端传递给后端且通过cookie方式,尽量传递id

    前端传递给后端且通过cookie方式,尽量传递id

  3. hdu—3861(tarjan+二分图)

    题意:给你n个城市,每个城市之间有一条有向边,将城市划分为几个区域,问你最小的划分方法, 划分规则为:能相互到达的放在一个区域:然后区域内的a,b两点肯定存在某种方式,使得a能到b或者b能到a(注意, ...

  4. Nginx Epoll事件模型优劣

    L30-31 Epoll 性能优势主要源于它不用遍历 假设有100万个链接 其它事件可能都需要遍历所有链接,而Epoll只要遍历活跃的链接,这样大大提升了效率

  5. 【RNN】资源汇总

    wesome Recurrent Neural Networks A curated list of resources dedicated to recurrent neural networks ...

  6. YUV格式与RGB格式

    YUV420介绍: YUV420格式是指,每个像素都保留一个Y(亮度)分量,而在水平方向上,不是每行都取U和V分量,而是一行只取U分量,则其接着一行就只取V分量,以此重复(即4:2:0, 4:0:2, ...

  7. [51Nod 1584] 加权约数和

    Description 在整理以前的试题时,他发现了这样一道题目:"求 \(\sum\sigma(i)\),其中 \(1≤i≤N\),\(σ(i)\) 表示 \(i\) 的约数之和.&quo ...

  8. BZOJ2281[Sdoi2011]黑白棋&BZOJ4550小奇的博弈——DP+nimk游戏

    题目描述 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小A可以移动白色 ...

  9. [USACO12MAR] 花盆Flowerpot

    类型:二分+单调队列 传送门:>Here< 题意:给出$N$个点的坐标,要求根据$x$轴选定一段区间$[L,R]$,使得其中的点的最大与最小的$y$值之差$\geq D$.求$Min\{R ...

  10. Matplotlib学习---用matplotlib画阶梯图(step plot)

    这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/us-postage.c ...