Stanford机器学习笔记-3.Bayesian statistics and Regularization

时间:2022-09-13 10:36:18

3. Bayesian statistics and Regularization

Content

  3. Bayesian statistics and Regularization.

    3.1 Underfitting and overfitting.

    3.2 Bayesian statistics and regularization.

    3.3 Optimize Cost function by regularization.

      3.3.1 Regularized linear regression.

      3.3.2 Regularized logistic regression.

    3.4 Advanced optimization.

key words: underfitting, overfitting, regularization, bayesian statistic

3.1 Underfitting and overfitting

前面已经学习了线性回归模型logistic回归模型,它们在很多方面都有应用,例如利用线性回归模型(也可以是多项式)进行房价预测,logistic回归模型垃圾邮件分类等。但是,在应用过程中可能存在一些问题,例如过拟合(overfitting),与之相对的就是欠拟合(underfitting)

所谓过拟合,简单的说就是我们设计的学习模型对训练样本的学习能力太强大了,导致对训练样本拟合的太好。此时可能同学就有疑问:拟合得很好不是好事吗,为什么还是问题呢?注意,我们设计学习模型的目的并不是对训练样本拟合就ok了,我们训练模型是为了它能够对不在训练集中的数据有较好的预测。训练集是我们所研究的全体数据集的一个子集,我们认为它应该有像其他属于全体数据集的特征,但同时,它也通常有它自己独有的特征。所以,如果学习模型的学习能力太强,学到了训练集独有的特征,对训练样本拟合得太好,也就是过拟合,那么它可能对不属于训练集但属于我们研究的数据集的数据预测得不好,也就是泛化能力(generalization)下降。而欠拟合,就是对训练样本拟合得太差,连我们所研究的数据集都具有的特征都没有学到。从数学上分析,欠拟合将会导致很大的偏差(bias),而过拟合将会导致很大的方差(variance)。

下面通过图3-1线性回归中预测房价的例子和图3-2Logistic回归中0-1分类的例子直观感受欠拟合和过拟合。

Stanford机器学习笔记-3.Bayesian statistics and Regularization

图3-1 线性回归中的欠拟合与过拟合

Stanford机器学习笔记-3.Bayesian statistics and Regularization

图3-2 Logistic回归处理0-1分类问题中的欠拟合与过拟合

通常来说,欠拟合是比较好解决的,例如在线性回归和Logistic回归中,我们可能通过增加新的特征或者用较高次数的多项式。但过拟合是比较难以控制的,因为它非常的矛盾: 我们认为选出的训练集可以在很大程度上代表所研究的全体数据集,所以我们希望模型能够较好的拟合,但是,我们又知道训练集不可避免的有无法泛化的特征。所以或多或少我们的学习模型都会学到训练集所独有的特征。虽说如此,但还是有一些措施来减少过拟合的风险。

  1. 减少特征的数量
    • 尽量选择我们认为具有一般化的特征,除去可能只有训练集才有的特征。(人工的)
    • 采用模型选择算法(Model selection algorithm)
  2. 正则化(Regularization)

3.2 Bayesian statistics and regularization

正则化的基本思想是保留所有的特征量,但通过减少参数θ来避免某个特征量影响过大。

下面从Bayesian statistics(贝叶斯统计)学派来理解正则化。

在之前,我们通过利用极大似然法(maximum likelihood: ML)对参数θ进行估计,进而得到代价函数,认为θ的取值应使得似然函数最大,也就使得代价函数最小,即有

Stanford机器学习笔记-3.Bayesian statistics and Regularization

所以极大似然估计中认为θ是我们不知道的参数,而不是一个变量,这就是频率学派(frequentist statistics)的观点。这种观点认为,θ不是随机的(自然也就没有随机分布这一说法),它是常量,理应等于某些值。所以我们的工作是用比如极大似然这样统计学的方法来估计它。

但是贝叶斯学派认为,θ是未知的随机变量,所以在我们对训练集进行训练之前,θ就可能服从某种分布p(θ),我们称之为先验概率(prior distribution)。对于一个训练集 Stanford机器学习笔记-3.Bayesian statistics and Regularization,如果我们要对新的进行预测,我们可以通过贝叶斯公式算出θ的后验概率(posterior distribution),即:

Stanford机器学习笔记-3.Bayesian statistics and Regularization

上面就是完整的贝叶斯预测,但是事实上很难计算出θ的后验概率,因为(1)式要求对θ进行积分,而θ往往是高维的,所以很难实现。

因此在实际应用中我们常常是近似θ的后验概率。一种常用的近似方式就是一个点的估计来代替(2)式。The MAP(maximum a posteriori)估计如下:

Stanford机器学习笔记-3.Bayesian statistics and Regularization

我们发现(3)式相较于极大似然估计,只是后面乘了θ的先验概率。

在实际应用中,通常假设Stanford机器学习笔记-3.Bayesian statistics and Regularization(当然也有其他的假设方式)。在实际中,The Bayesian MAP estimate比极大似然估计更好的减少过拟合。例如,用Bayesian Logistic 回归算法可以用来处理特征数远大于训练样本数文本分类问题。

3.3 Optimize Cost function by regularization

下面说明如何利用正则化来完善cost function. 首先看一个直观的例子。如图3-3所示,一开始由于多项式次数过高导致过拟合,但是如果在cost function后加上1000*theta3^2+1000*theta4^2, 为了使cost function最小,那么在优化(迭代)过程中,会使得theta3和theta4趋近于0,这样多项式后两项的高次作用就减少,过拟合得到了改善。这就相当于对非一般化特征量的惩罚。

Stanford机器学习笔记-3.Bayesian statistics and Regularization

图3-3 正则化的直观感受

3.3.1 Regularized linear regression

一般的,对于线性模型正则化后的cost function如下:

Stanford机器学习笔记-3.Bayesian statistics and Regularization(注意正则化不包括theta0)

Lambda的取值应该合适,如果过大(如10^10)将会导致theta都趋于0,所有的特征量没有被学习到,导致欠拟合。后面将会讨论lambda的取值,现在暂时认为在0~10之间。

既然cost function改变了,那么如果采用梯度下降法来优化,自然也要做相应的改变,如下:

Stanford机器学习笔记-3.Bayesian statistics and Regularization

作为线性回归的另一种模型,正规方程(the normal equations)也可以正则化,方式如下:

Stanford机器学习笔记-3.Bayesian statistics and Regularization

通过1.2.3节,我们知道,如果训练样本数m小于等于特征数n,那么X’X是不可逆的(使用matlab中pinv可以得到其伪逆),但是如果lambda > 0,则加上lambda乘以上图形式的矩阵后就可逆了。

3.3.2 Regularized logistic regression

Stanford机器学习笔记-3.Bayesian statistics and Regularization

Stanford机器学习笔记-3.Bayesian statistics and Regularization

3.4 Advanced optimization

在实际的应用中,我们通常不会自己实现梯度下降法来优化目标函数,而是使用编程语言函数库。例如使用matlab中的fminunc函数。所以我们只需要编写出求cost function以及其导数的函数就可以了,以Logistic regression如下所示,(注意在matlab中向量下标以1开始,所以theta0应为theta(1))。

Stanford机器学习笔记-3.Bayesian statistics and Regularization

matlab实现Logistic regression的该函数代码如下:

function [J, grad] = costFunctionReg(theta, X, y, lambda)
%COSTFUNCTIONREG Compute cost and gradient for logistic regression with regularization
% J = COSTFUNCTIONREG(theta, X, y, lambda) computes the cost of using
% theta as the parameter for regularized logistic regression and the
% gradient of the cost w.r.t. to the parameters. m = length(y); % number of training examples
n = size(X,); % features number J = ;
grad = zeros(size(theta)); h = sigmoid(X * theta); % sigmoid function J = sum((-y) .* log(h) - (-y) .* log(-h)) / m + lambda * sum(theta(:n) .^ ) / (*m); grad() = sum((h - y) .* X(:,)) / m;
for i = :n
grad(i) = sum((h - y) .* X(:,i)) / m + lambda * theta(i) / m;
end end

调用时的matlab代码片段如下:

% Initialize fitting parameters
initial_theta = zeros(size(X, ), );
% Set regularization parameter lambda to (you can vary this)
lambda = ;
% Set Options
options = optimset('GradObj', 'on', 'MaxIter', );
% Optimize
[theta, J, exit_flag] = ...
fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options);

Stanford机器学习笔记-3.Bayesian statistics and Regularization的更多相关文章

  1. Stanford机器学习笔记-5.神经网络Neural Networks (part two)

    5 Neural Networks (part two) content: 5 Neural Networks (part two) 5.1 cost function 5.2 Back Propag ...

  2. Stanford机器学习笔记-6. 学习模型的评估和选择

    6. 学习模型的评估与选择 Content 6. 学习模型的评估与选择 6.1 如何调试学习算法 6.2 评估假设函数(Evaluating a hypothesis) 6.3 模型选择与训练/验证/ ...

  3. Stanford机器学习笔记-10. 降维(Dimensionality Reduction)

    10. Dimensionality Reduction Content  10. Dimensionality Reduction 10.1 Motivation 10.1.1 Motivation ...

  4. Stanford机器学习笔记-9. 聚类(Clustering)

    9. Clustering Content 9. Clustering 9.1 Supervised Learning and Unsupervised Learning 9.2 K-means al ...

  5. Stanford机器学习笔记-8. 支持向量机(SVMs)概述

    8. Support Vector Machines(SVMs) Content 8. Support Vector Machines(SVMs) 8.1 Optimization Objection ...

  6. Stanford机器学习笔记-7. Machine Learning System Design

    7 Machine Learning System Design Content 7 Machine Learning System Design 7.1 Prioritizing What to W ...

  7. Stanford机器学习笔记-4. 神经网络Neural Networks (part one)

    4. Neural Networks (part one) Content: 4. Neural Networks (part one) 4.1 Non-linear Classification. ...

  8. Stanford机器学习笔记-9. 聚类(K-means算法)

    9. Clustering Content 9. Clustering 9.1 Supervised Learning and Unsupervised Learning 9.2 K-means al ...

  9. Stanford机器学习笔记-2.Logistic Regression

    Content: 2 Logistic Regression. 2.1 Classification. 2.2 Hypothesis representation. 2.2.1 Interpretin ...

随机推荐

  1. sql游标的使用

    转载:http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263988.html 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集 ...

  2. Apache源码分析资源

    关于作者张中庆, 目前主要的研究方向是嵌入式浏览器,移动中间件以及大规模服务器设计.目前正在进行Apache的源代码分析,计划出版<Apache源代码全景分析>上 下册.Apache系列文 ...

  3. phpMyAdmin导入本地数据库

    phpMyAdmin导入本地数据库 在PHPMyAdmin导入数据时,点击导入--执行后出现错误: 您可能正在上传很大的文件,请参考文档来寻找解决方法. 可能就是因为数据库太大的原因. 那么如何 才能 ...

  4. Xcode6中如何修改文件中自动创建的Created by和Copyright

    转自: http://blog.csdn.net/bjourney/article/details/46832159 在Xcode6创建问的时候,会自动生成注释 //  Created byxxx o ...

  5. codefroce D&period; Powerful array&lbrack;初识块状数组&rsqb;

    codefroce D. Powerful array[初识块状数组] 由于是初始所以,仅仅能先用别人的分析.囧... 题目: 给定一个数列:A1, A2,--,An,定义Ks为区间(l,r)中s出现 ...

  6. android sql Cursor

    Cursor 是每行的集合. 使用 moveToFirst() 定位第一行. 你必须知道每一列的名称.你必须知道每一列的数据类型.Cursor 是一个随机的数据源. 所有的数据都是通过下标取得. Cu ...

  7. Python数据分析&lpar;二&rpar;&colon; Numpy技巧 &lpar;2&sol;4&rpar;

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性.   昨天晚上发了第一 ...

  8. Tensorflow 免费中文视频教程,开源代码,免费书籍&period;

    Free-Tensorflow Tensorflow 免费中文视频教程,开源代码,免费书籍. 官方教程 官方介绍 https://tensorflow.google.cn/ 安装教程 https:// ...

  9. aspnetcore&period;webapi实战k8s健康探测机制 - kubernetes

    1.浅析k8s两种健康检查机制 Liveness k8s通过liveness来探测微服务的存活性,判断什么时候该重启容器实现自愈.比如访问 Web 服务器时显示 500 内部错误,可能是系统超载,也可 ...

  10. Shell命令-文件及内容处理之iconv、dos2unix

    文件及内容处理 - iconv.dos2unix 1. iconv:转换文件的编码格式 iconv命令的功能说明 iconv 命令是 linux 下用于文件转编码的常用命令,对于同时使用 window ...