我眼中的正则化(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
如果你怀疑神经网络过度拟合的数据,即存在高方差的问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,但是你可能无法时时准备足够多的训练数据,或者获取更多数据的代价很高.但正则 ...
随机推荐
- hdu-3374(kmp+最小表示法)
题意:给你一个字符串,这个字符串我们可以把把他变成n个字符串按照以下规则:将当前字符串第一个放到字符串最后一位,字符串的下标依次向前推一位,比如:s[1] s[2 ]s[3] s[4]->s[2 ...
- BZOJ1398Vijos1382寻找主人 Necklace——最小表示法
题目描述 给定两个项链的表示,判断他们是否可能是一条项链. 输入 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). 输出 如果两条项链不可能同构,那么输出 ...
- Quartus prime16.0 与modelsim ae 联调
前言 quartus和modelsim联调对仿真还是很方便的,当然最好是quartus干综合到烧录的活,modelsim单独仿真.而且ae版的性能比se版差. 流程: 1.配置modelsim ae路 ...
- Ionic3新页面去除Tabs的菜单问题总结
问题 要求在[我的]页面,点击[退出登录]按钮,返回到登录页面. 使用 this.navCtrl.setRoot(LoginPage); 或者 this.navCtrl.push(LoginPage) ...
- MT【253】仿射和蒙日圆
如图,设点$M(x_0,y_0)$是椭圆$C:\dfrac{x^2}{2}+y^2=1$上一点,从原点$O$向圆$M:(x-x_0)^2+(y-y_0)^2=\dfrac{2}{3}$作两条切线分别与 ...
- 「HDU6158」 The Designer(圆的反演)
题目链接多校8-1009 HDU - 6158 The Designer 题意 T(<=1200)组,如图在半径R1.R2相内切的圆的差集位置依次绘制1,2,3,到n号圆,求面积之和(n< ...
- Leetcode 209.长度最小的子数组 By Python
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums = [2, ...
- 【BZOJ4331】[JSOI2012]越狱老虎桥(Tarjan)
[BZOJ4331][JSOI2012]越狱老虎桥(Tarjan) 题面 BZOJ 然而BZOJ是权限题QwQ 洛谷 题解 先求出所有割边,那么显然要割掉一条割边. 如果要加入一条边,那么显然是把若干 ...
- vue自定义插件-弹框
<template> <transition name="msgbox"> <div v-if="show" class=&quo ...
- CSS之FLex布局介绍
网页布局(layout)是CSS的一个重点应用. img 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如, ...