我眼中的正则化(Regularization)
警告:本文为小白入门学习笔记
在机器学习的过程中我们常常会遇到过拟合和欠拟合的现象,就如西瓜书中一个例子:
如果训练样本是带有锯齿的树叶,过拟合会认为树叶一定要带有锯齿,否则就不是树叶。而欠拟合则认为只要是绿色的就是树叶,会把一棵数也误认为树叶。
过拟合:如果我们的数据集有很多的属性,假设函数会对训练集拟合的非常好,也就是说损失函数J(theta)趋近于零,但是对新的样本却不能较为精确的预测(也就是不能够泛化到一般)。
所以要解决过拟合问题(addressing overfitting):
Options:
1 减少属性的个数
对于那些关联性比较弱的属性可以去掉
2 Regularization(正则化)
过拟合现象的产生可能是我们用这样一个多元方程去拟合实际上是一个一元或二元曲线
所以我们希望theta3,theta4,theta5竟可能的小,想想如果这样的话曲线是不是会变得简单很多,但是在实际情况下,我们不知道要去减小(penalty)哪一个theta,因此干脆去penalty每一个theta,所以在损失函数后面增加一个项来实现,而这一项就是正则化项
这里我们要记住的是,我们希望损失函数竟可能的小。
而 λ 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标。从而来保持假设的形式相对简单,来避免过度的拟合。
首先解决线性回归问题的过拟合:
数据下载:
使用正规方程去求解正规化线性回归是:
跟随 后面的是一个(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(是第二列数据)。
% 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)的更多相关文章
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...
- zzL1和L2正则化regularization
最优化方法:L1和L2正则化regularization http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化 ...
- 7、 正则化(Regularization)
7.1 过拟合的问题 到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin ...
- 斯坦福第七课:正则化(Regularization)
7.1 过拟合的问题 7.2 代价函数 7.3 正则化线性回归 7.4 正则化的逻辑回归模型 7.1 过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集( ...
- (五)用正则化(Regularization)来解决过拟合
1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...
- [笔记]机器学习(Machine Learning) - 03.正则化(Regularization)
欠拟合(Underfitting)与过拟合(Overfitting) 上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子.可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们 ...
- CS229 5.用正则化(Regularization)来解决过拟合
1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...
- [C3] 正则化(Regularization)
正则化(Regularization - Solving the Problem of Overfitting) 欠拟合(高偏差) VS 过度拟合(高方差) Underfitting, or high ...
- 1.4 正则化 regularization
如果你怀疑神经网络过度拟合的数据,即存在高方差的问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,但是你可能无法时时准备足够多的训练数据,或者获取更多数据的代价很高.但正则 ...
随机推荐
- Vue之变量、数据绑定、事件绑定使用举例
vue1.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/19 ...
- 一、IntelliJ IDEA创建java项目
一.IntelliJ IDEA创建java项目 二.IntelliJ IDEA下载并包含jdbc包 1.下载zip格式的驱动包:https://dev.mysql.com/downloads/conn ...
- hdu-2072(字典树)
字典树模板题 代码 #include<iostream> #include<algorithm> #include<cstdio> #include<cstr ...
- python绘制图形
python能快速解决日常工作中的小任务,比如数据展示. python做数据展示,主要用到matplotlib库,使用简单的代码,就可以很方便的绘制折线图.柱状图等.使用Java等,可能还需要配合 ...
- Eclipse环境配置与快捷命令
1.VS.Chrome.Eclipse调试命令对比: VS: F5: 继续运行 F10: 单步执行 F11: 进入函数内部 Shift + F11: 由函数内部返回调用处 Chrome: F8: 继续 ...
- java读取excel获取数据写入到另外一个excel
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- centos安装桌面,下面的几个包缺一不可
yum groupinstall “X window system” yum groupinstall “Desktop” yum groupinstall “Chinese Support” 不然的 ...
- BZOJ2242[SDOI2011]计算器——exgcd+BSGS
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...
- HDU5745-La Vie en rose-字符串dp+bitset优化
这题现场的数据出水了,暴力就能搞过. 标解是拿bitset做,转移的时候用bitset优化过的操作(与或非移位)来搞,复杂度O(N*M/w) w是字长 第一份标程的思路很清晰,然而后来会T. /*-- ...
- [APIO 2009] Atm
传送门:>Here< 题意:给出一个有向图(有环),每个点有点权.从点S出发,经过每个点Tot可以加上点权,点可以经过多次,然而点权不能重复加多次.先要求走到某个终点E时点权最大.先要求在 ...