http://antkillerfarm.github.io/

高斯判别分析(续)

将上面三个分布的概率密度函数代入第二节公式7,可求得argmaxyp(y|x)\arg\max_yp(y\vert x),然后进行最大似然估计,可得该GDA的最大似然估计参数为:(过程略)

ϕ=1m∑i=1m1{y(i)=1}

\phi=\frac{1}{m}\sum_{i=1}^m1\{y^{(i)}=1\}

μ0=∑mi=11{y(i)=0}x(i)∑mi=11{y(i)=0}

\mu_0=\frac{\sum_{i=1}^m1\{y^{(i)}=0\}x^{(i)}}{\sum_{i=1}^m1\{y^{(i)}=0\}}

μ1=∑mi=11{y(i)=1}x(i)∑mi=11{y(i)=1}

\mu_1=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}x^{(i)}}{\sum_{i=1}^m1\{y^{(i)}=1\}}

Σ=1m∑i=1m(x(i)−μy(i))(x(i)−μy(i))T

\Sigma=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu_{y^{(i)}})(x^{(i)}-\mu_{y^{(i)}})^T

上图中的直线就是分界线

p(y=1|x)=0.5

p(y=1\vert x)=0.5。

GDA vs 逻辑回归

p(y=1|x)=p(x|y=1)p(y=1)p(x|y=1)p(y=1)+p(x|y=0)p(y=0)=1Aexp(f(μ0,Σ,x))ϕ1Aexp(f(μ0,Σ,x))ϕ+1Aexp(f(μ1,Σ,x))(1−ϕ)=11+exp(f(μ1,Σ,x))(1−ϕ)exp(f(μ0,Σ,x))ϕ=11+exp(f(μ1,Σ,x)+log(1−ϕ)−f(μ0,Σ,x)−log(ϕ))=11+exp(−θTx)

\begin{align}p(y=1\vert x)&=\frac{p(x\vert y=1)p(y=1)}{p(x\vert y=1)p(y=1)+p(x\vert y=0)p(y=0)} \\&=\frac{\frac{1}{A}\exp(f(\mu_0,\Sigma,x))\phi}{\frac{1}{A}\exp(f(\mu_0,\Sigma,x))\phi + \frac{1}{A}\exp(f(\mu_1,\Sigma,x))(1-\phi)} \\&=\frac{1}{1+\frac{\exp(f(\mu_1,\Sigma,x))(1-\phi)}{\exp(f(\mu_0,\Sigma,x))\phi}} \\&=\frac{1}{1+\exp(f(\mu_1,\Sigma,x)+\log(1-\phi)-f(\mu_0,\Sigma,x)-\log(\phi))} \\&=\frac{1}{1+\exp(-\theta^Tx)} \end{align}

从上面的变换可以看出,GDA是逻辑回归的特例。

一般来说,GDA的条件比逻辑回归严格。因此,如果模型符合GDA的话,采用GDA方法,收敛速度(指所需训练集的数量)比较快。

而逻辑回归的鲁棒性较好,对于非GDA模型或者模型不够准确的情况,仍能收敛。

互不相容事件、独立事件与条件独立事件

如果P(AB)=0P(AB)=0,则事件A、B为互不相容事件。

如果P(AB)=P(A)P(B)或P(A)=P(A|B)P(AB)=P(A)P(B)或P(A)=P(A\vert B),则事件A、B为独立事件。

如果P(AB|R)=P(A|R)P(B|R)P(AB\vert R)=P(A\vert R)P(B\vert R),则事件A、B为条件R下的独立事件。

可见,这三者是完全不同的数学概念,不要搞混了。

朴素贝叶斯方法

这里以文本分析(Text Classification)为例,讲解一下朴素贝叶斯(Naive Bayes)方法。

文本分析的一个常用方法是根据词典建立特征向量x。x中的每个元素代表词典里的一个单词,如果该单词在文本中出现,则对应的元素值为1,否则为0。

这里假设我们的目标是通过文本分析,判别一个email是否是垃圾邮件。y=1y=1表示是垃圾邮件,y=0y=0表示不是垃圾邮件。显然,在这里一封邮件就是一个样本集。

相比之前的应用领域,文本分析的特殊之处在于词典中的单词数量十分庞大,从而导致x的维数巨大(比如50000个单词,就是50000维),以至于之前的方法,根本无法计算。

为了简化问题,我们假设p(xi|y)p(x_i\vert y)是条件独立的。这个假设被称为朴素贝叶斯假设(Naive Bayes (NB) assumption)。使用这个假设的算法被称为朴素贝叶斯分类器(Naive Bayes classifier)。

从数学角度,NB假设是个很严格的条件,但是实际使用中,即使样本集不满足NB假设,使用NB方法的效果一般还是不错的。

p(x1,…,x50000|y)=p(x1|y)p(x2|y,x1)p(x3|y,x1,x2)⋯p(x50000|y,x1,…,x49999)(条件概率的乘法公式)=p(x1|y)p(x2|y)p(x3|y)⋯p(x50000|y)(NB假设)=∏i=1np(xi|y)

\begin{align}p(x_1,\dots,x_{50000}\vert y)&=p(x_1\vert y)p(x_2\vert y,x_1)p(x_3\vert y,x_1,x_2)\cdots p(x_{50000}\vert y,x_1,\dots,x_{49999})(条件概率的乘法公式) \\&=p(x_1\vert y)p(x_2\vert y)p(x_3\vert y)\cdots p(x_{50000}\vert y)(NB假设)=\prod_{i=1}^np(x_i\vert y) \end{align}

因此:

p(y=1|x)=p(x|y=1)p(y=1)p(x)=(∏ni=1p(xi|y=1))p(y=1)(∏ni=1p(xi|y=1))p(y=1)+(∏ni=1p(xi|y=0))p(y=0)(1)

\begin{align}p(y=1\vert x)&=\frac{p(x\vert y=1)p(y=1)}{p(x)} \\&=\frac{(\prod_{i=1}^np(x_i\vert y=1))p(y=1)}{(\prod_{i=1}^np(x_i\vert y=1))p(y=1)+(\prod_{i=1}^np(x_i\vert y=0))p(y=0)}\tag{1} \end{align}

最大似然估计值为:

ϕj|y=1=p(xj=1|y=1)=∑mi=11{x(i)j=1∧y(i)=1}∑mi=11{y(i)=1}

\phi_{j\vert y=1}=p(x_j=1\vert y=1)=\frac{\sum_{i=1}^m1\{x_j^{(i)}=1\land y^{(i)}=1\}}{\sum_{i=1}^m1\{y^{(i)}=1\}}

ϕj|y=0=p(xj=1|y=0)=∑mi=11{x(i)j=1∧y(i)=0}∑mi=11{y(i)=0}

\phi_{j\vert y=0}=p(x_j=1\vert y=0)=\frac{\sum_{i=1}^m1\{x_j^{(i)}=1\land y^{(i)}=0\}}{\sum_{i=1}^m1\{y^{(i)}=0\}}

ϕy=p(y=1)=∑mi=11{y(i)=1}m

\phi_y=p(y=1)=\frac{\sum_{i=1}^m1\{y^{(i)}=1\}}{m}

NB算法还可以扩展到y有多个取值的情况。对于y为连续函数的情况,可以采用区间离散化操作,将之离散化为多个离散值。

拉普拉斯平滑

对于样本集中未出现的单词,在其首次出现时,由于先验概率p(xi|y=1)=0,p(xi|y=0)=0p(x_i\vert y=1)=0,p(x_i\vert y=0)=0,这时公式1会出现00\frac{0}{0}的情况。

为了避免这种情况,我们假定先验概率至少为1次,也就是

ϕj=p(y=j)=∑mi=11{y(i)=j}+1m+k

\phi_j=p(y=j)=\frac{\sum_{i=1}^m1\{y^{(i)}=j\}+1}{m+k}

这种方法叫做拉普拉斯平滑(Laplace Smoothing)。注意这里ϕ\phi的定义和上面略有不同,上面的公式中,y是二值分布,而这里是多值分布(值为k)。为了满足概率和为1的条件,分母上需要加k。

文本分类的事件模型

文本分类的事件模型有两类:

1.多值伯努利事件模型(multi-variate Bernoulli event model)。

在这个模型中,我们首先随机选定了邮件的类型(垃圾或者普通邮件,也就是p(y)p(y)),然后翻阅词典,随机决定一个词是否要在邮件中出现,出现则xix_i标示为1,否则标示为0。然后将出现的词,组成一封邮件。一个词是否出现的概率为p(xi|y)p(x_i\vert y),整封邮件的概率为p(y)∏ni=1p(xi|y)p(y)\prod_{i=1}^np(x_i\vert y)。

2.多项事件模型(multinomial event model)。

令xix_i表示邮件的第i个词在字典中的位置,那么xix_i的取值范围为1,2,...∣V∣{1,2,...\lvert V\rvert},∣V∣\lvert V\rvert表示字典中单词的数目。这样一封邮件可以表示成(x1,x2,…,xn)(x_1,x_2,\dots,x_n),这里n为邮件包含的单词个数,显然每个邮件的n值一般是不同的。

这相当于重复投掷∣V∣\lvert V\rvert面的骰子,将观察值记录下来就形成了一封邮件。每个面的概率服从p(xi|y)p(x_i\vert y),而且每次试验条件独立。这样我们得到的邮件概率是p(y)∏ni=1p(xi|y)p(y)\prod_{i=1}^np(x_i\vert y)。

需要注意的是,上面两个事件模型的概率公式虽然一致,但含义却有很大差异,不要弄混了。

支持向量机

支持向量机(SVM,Support Vector Machines)是目前最好的监督学习算法。它由Vladimir Naumovich Vapnik与Alexey Ya. Chervonenkis于1963年提出。

注:Vladimir Naumovich Vapnik,1936年生,乌兹别克国立大学学士,莫斯科控制科学学院博士,后成为该学院计算机科学研究部门负责人。1990年代末移民美国,先后供职于AT&T Bell、NEC、Facebook,伦敦大学和哥伦比亚大学教授。

Alexey Yakovlevich Chervonenkis,1938~2014,俄罗斯数学家。俄罗斯科学院院士,伦敦大学教授。

我们首先来看一幅图:

上图中的x和o分别代表y的两种不同取值(1和0)。前面提到逻辑回归的预测函数为hθ(x)=g(θTx)h_\theta(x)=g(\theta^Tx),那么图中直线的解析方程就是θTx=0\theta^Tx=0。这条直线被称作分割超平面(Separating Hyperplane),也就是预测值的分界线。

图中的三个点A、B、C,虽然都在线的上方,然而从直觉来说,A离分界线最远,我们对它的值为1的信心也最足。反观C点,由于离分界线比较近,我们对其值的预测,实际上并没有多大把握。因为这种情况下,样本集的少许调整,就会导致分界线的移动,从而导致预测值的改变。B点的情况介于A和C之间。

和逻辑回归不同,SVM更关心靠近分界线的点,让他们尽可能地远离分界线,而不是在所有点上都达到最优。

为了便于后续讨论,我们对hθ(x)h_\theta(x)进行改写:hw,b(x)=g(wTx+b)h_{w,b}(x)=g(w^Tx+b)。其中b为常数项,即x0x_0的系数项,w为其余的xix_i的系数项。

同时对g(z)g(z)的定义也调整为:

g(z)={1,−1,z≥0z<0

g(z)=\begin{cases} 1, & z\ge 0 \\ -1, & z

这个定义的好处在于g(z)g(z)的取值,只和z的符号相关,而和其绝对值的大小无关。

函数边距和几何边距

为了定义样本点和边界线的距离,我们引入函数边距(functional margin)和几何边距(geometric margins)的定义。

函数边距的定义如下:

γ^=mini=1,…,mγ^(i),γ^(i)=y(i)(wTx(i)+b)

\hat\gamma=\min_{i=1,\dots,m}\hat\gamma^{(i)},\hat\gamma^{(i)}=y^{(i)}(w^Tx^{(i)}+b)

几何边距的几何意义如上图所示。w是分界线的法向量,A的坐标是x(i)x^{(i)},它到分界线的距离是γ(i)\gamma^{(i)},根据解析几何知识可知,A到分界线的垂足B的坐标为x(i)−γ(i)w∥w∥x^{(i)}-\gamma^{(i)}\frac{w}{\|w\|}。将其代入分界线方程wTx+b=0w^Tx+b=0,可得:

wT(x(i)−γ(i)w∥w∥)+b=0⇒wTx(i)−γ(i)wTw∥w∥+b=0

w^T\left(x^{(i)}-\gamma^{(i)}\frac{w}{\|w\|}\right)+b=0\Rightarrow w^Tx^{(i)}-\gamma^{(i)}\frac{w^Tw}{\|w\|}+b=0

⇒wTx(i)+b=γ(i)∥w∥2∥w∥⇒γ(i)=wTx(i)+b∥w∥=(w∥w∥)Tx(i)+b∥w∥

\Rightarrow w^Tx^{(i)}+b=\gamma^{(i)}\frac{\|w\|^2}{\|w\|}\Rightarrow \gamma^{(i)}=\frac{w^Tx^{(i)}+b}{\|w\|}=\left(\frac{w}{\|w\|}\right)^Tx^{(i)}+\frac{b}{\|w\|}

正是A在边界线上方时的情况,扩展到整个坐标系的话,上式可改为:

γ(i)=y(i)⎛⎝(w∥w∥)Tx(i)+b∥w∥⎞⎠

\gamma^{(i)}=y^{(i)}\left(\left(\frac{w}{\|w\|}\right)^Tx^{(i)}+\frac{b}{\|w\|}\right)

同理,可得几何边距的定义为:

γ=mini=1,…,mγ(i)

\gamma=\min_{i=1,\dots,m}\gamma^{(i)}

从函数边距和几何边距的定义可以看出,如果等比例缩放w和b的话,其几何边距不变,且当∥w∥=1\|w\|=1时,函数边距和几何边距相等。

最优边距分类

SVM算法的本质,就是求能使几何边距最大的w和b的取值,用数学语言描述就是求解问题:

maxγ,w,bs.t.γy(i)(wTx(i)+b)≥γ,i=1,…,m∥w∥=1

\begin{align} &\operatorname{max}_{\gamma,w,b}& & \gamma\\ &\operatorname{s.t.}& & y^{(i)}(w^Tx^{(i)}+b)\ge\gamma,i=1,\dots,m\\ & & & \|w\|=1 \end{align}

注:上式中的s.t.\operatorname{s.t.}是subject to的缩写,表示极值问题的约束条件。

这个问题等价于:

maxγ,w,bs.t.γ^∥w∥y(i)(wTx(i)+b)≥γ^,i=1,…,m

\begin{align} &\operatorname{max}_{\gamma,w,b}& & \frac{\hat\gamma}{\|w\|}\\ &\operatorname{s.t.}& & y^{(i)}(w^Tx^{(i)}+b)\ge\hat\gamma,i=1,\dots,m \end{align}

如果能通过比例变换使γ^=1\hat\gamma=1,则问题化解为:

minγ,w,bs.t.12∥w∥2y(i)(wTx(i)+b)≥1,i=1,…,m

\begin{align} &\operatorname{min}_{\gamma,w,b}& & \frac{1}{2}\|w\|^2\\ &\operatorname{s.t.}& & y^{(i)}(w^Tx^{(i)}+b)\ge 1,i=1,\dots,m \end{align}

这个问题实际上就是数学上的QP(Quadratic Programming)问题,采用这种方案的分类被称为最优边距分类(optimal margin classifier)。

拉格朗日对偶

QP问题是有约束条件的优化问题(constrained optimization problem)的一种,下面让我们讨论一下解决这类问题的通用方法。

假设我们求解如下问题:

minws.t.f(w)gi(w)≤0,i=1,…,khi(w)=0,i=1,…,l

\begin{align} &\operatorname{min}_w& & f(w)\\ &\operatorname{s.t.}& & g_i(w)\le 0,i=1,\dots,k\\ & & & h_i(w)=0,i=1,\dots,l \end{align}

这里将约束条件分为两类:

1.hi(w)=0h_i(w)=0代表的是约束条件为等式的情况。

2.gi(w)≤0g_i(w)\le 0代表的是约束条件为不等式的情况。

上述约束优化问题也被称为原始优化问题(primal optimization problem)。为了求解这个问题,我们定义广义拉格朗日(generalized Lagrangian)函数:

L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)

\mathcal{L}(w,\alpha,\beta)=f(w)+\sum_{i=1}^k\alpha_ig_i(w)+\sum_{i=1}^l\beta_ih_i(w)

利用这个函数可以将约束优化问题转化为无约束优化问题。其中的αi\alpha_i、βi\beta_i也被称作拉格朗日乘子(Lagrange multiplier)。

θP(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)

\theta_\mathcal{P}(w)=\underset{\alpha,\beta:\alpha_i\ge 0}{\operatorname{max}}\mathcal{L}(w,\alpha,\beta)=\underset{\alpha,\beta:\alpha_i\ge 0}{\operatorname{max}}f(w)+\sum_{i=1}^k\alpha_ig_i(w)+\sum_{i=1}^l\beta_ih_i(w)

其中,P\mathcal{P}代表原始优化问题,maxα,β:αi≥0\underset{\alpha,\beta:\alpha_i\ge 0}{\operatorname{max}}表示在α,β\alpha,\beta变化,而其他变量不变的情况下,求最大值。

机器学习(三)——朴素贝叶斯方法、SVM(1)相关推荐

  1. 【机器学习】朴素贝叶斯、SVM和数据分布检验分析

    [机器学习]朴素贝叶斯.SVM和数据分布检验分析 文章目录 1 朴素贝叶斯 2 SVM2.1 线性可分2.2 最大间隔超平面2.3 SVM 最优化问题 3 数据分布检验方法3.1 数据分布检验3.2 ...

  2. 机器学习之朴素贝叶斯方法(Naive Bayes)原理和实现

    目录 一.贝叶斯理论 二.实战朴素贝叶斯 实战朴素贝叶斯1 实战朴素贝叶斯3 三.scikit-learn中朴素贝叶斯的分类算法的适用 四.贝叶斯算法的优缺点 一.贝叶斯理论 贝叶斯模型 现在我们来看 ...

  3. 机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

    本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序.1 方法概 ...

  4. 机器学习实验二:朴素贝叶斯和SVM——肿瘤分类与预测(朴素贝叶斯)

    实操项目 1--肿瘤分类与预测(朴素贝叶斯) 实验要求 采用朴素贝叶斯方法,对美国威斯康星州的乳腺癌诊断数据集进行分类,实现针对乳腺癌检测的分类器,以判断一个患者的肿瘤是良性还是恶性. [实验要求] ...

  5. 用朴素贝叶斯和SVM进行文本分类

    写在前面的感悟: 测试集文件删除一定要shift+delete!!!!!要不然回收站直接爆炸,用几个小时打开,然后再用几个小时清空.文本分类的数据集看似只有几个G那么大,但是架不住文件数量多,导致各种 ...

  6. 机器学习:朴素贝叶斯

    机器学习:朴素贝叶斯 1 朴素贝叶斯应用场景 2 朴素贝叶斯相关公式 3 sklearn库中朴素贝叶斯运用 3.1 伯努利朴素贝叶斯 3.2 多项式朴素贝叶斯 3.3 高斯朴素贝叶斯 4 代码 4.1 ...

  7. 机器学习实验 - 朴素贝叶斯分类器

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  8. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  9. 机器学习实战 朴素贝叶斯分类器

    基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...

  10. 人工智能基础-机器学习3-朴素贝叶斯方法

    机器学习中的线性回归算法,这一算法解决的是从连续取值的输入映射为连续取值的输出的回归问题.今天我分享的算法则用于解决分类问题,即将连续取值的输入映射为离散取值的输出,算法的名字叫作"朴素贝叶 ...

最新文章

  1. python文件读取输出-python分批定量读取文件内容,输出到不同文件中的方法
  2. 开发常见错误解决(7)连接到SQL Server 2005出错
  3. 备份 CSDN 博客(上)
  4. 甲亢php,甲亢还是甲低,真亢还是真低?
  5. java语言如何跳转界面_在java中spring mvc页面如何跳转,详细图解
  6. Discuz!NT - 在线显示列表 游客 bug 修复
  7. cartographer学习笔记--如何保存cartagrapher_ros建好的地图
  8. 预科教育计算机基础知识重点归纳,民族预科班计算机教育论文
  9. winform窗体MaximizeBox
  10. javascript 搜索并高亮显示
  11. C#开发移动应用 - 环境搭建
  12. HTTP协议学习总结三(常见http响应头)
  13. 拉普拉斯变换部分公式证明
  14. python语音地图定位_python 利用高德地图定位小区名字
  15. 软件项目经理应具备的素质和条件_一个合格的软件项目经理应该具备哪些条件?...
  16. Java实现 蓝桥杯VIP 算法提高 彩票
  17. “极地测绘之父”鄂栋臣逝世,曾签下生死状首征南极
  18. educoder平台+大数据从入门到实战+14个模块习题
  19. 服务器机柜可放多大显示器,一个标准服务器机柜究竟能够放多少服务器
  20. 921天,从小厂到入职阿里

热门文章

  1. 安装Tomcat6.0
  2. phpstudy+dvwa搭建
  3. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....
  4. Github用户注册流程
  5. 手机端网站测试用什么软件,3款优秀的移动webAPP网站在线测试工具推荐
  6. this.$nextTick()的使用场景
  7. Redis的入门(一)安装,设置密码
  8. 基本类型数组转包装类型数组工具类
  9. OpenCV: kalman滤波的代码段
  10. mysql数据库优化课程---13、mysql基础操作