Machine Learning Notes Ⅵ

朴素贝叶斯的两种变化

  1. 将朴素贝叶斯一般化:

    \(x_{i} \in \lbrace 1,2,\ldots,k \rbrace\)。这样的话同样有\(P(x \mid y)=\prod{P(x_i \mid y)}\),其中\(x_i\)满足多项式分布。

    如果\(x_i\)是连续变量,我们可以把它分段映射到k个整数,通常情况下这里的k取10。

  2. 对序列分类:

    不妨假设是数字序列,我们让\(n_i\)表示第\(i\)个样本的长度,\(x^{(i)}_j\)等于第\(i\)个样本的第\(j\)个数字\((x^{(i)}_j \in \lbrace 1,\ldots ,k \rbrace )\),这样我们就可以假设\(x^{(i)}_j\)服从多项式分布。假设\(x^{(i)}_j\)彼此条件独立,这样就有\(P(x^{(i)} \mid y^{(i)})=\prod_{j=1}^{n_i}{\phi(x^{(i)}_j\mid y^{(i)})}\),然后对于一组样本,它的对数似然函数

    \[\begin{align*} l(\phi_y,\phi(i\mid y=0),\phi(i\mid y=1))&=\log{\prod_{i=1}^m{P(x^{(i)},y^{(i)})}} \\ &=\log{\prod_{i=1}^m{P(x^{(i)}\mid y^{(i)})*\phi_y^{y^{(i)}}*(1-\phi_y)^{1-y^{(i)}}}} \end{align*} \]

    最大化对数似然函数后,有

    \[\begin{align*} \phi_y&=\cfrac{\sum_{i=1}^m{1\lbrace y^{(i)}=1\rbrace}}{m} \\ \phi(t\mid y=1)&=\cfrac{\sum_{i=1}^m{1\lbrace y^{(i)}=1\rbrace \sum_{j=1}^{n_i}{1\lbrace x^{(i)}_j=t\rbrace }}}{\sum_{i=1}^m{1\lbrace y^{(i)}=1 \rbrace n_i}} \\ \phi(t\mid y=0)&=\cfrac{\sum_{i=1}^m{1\lbrace y^{(i)}=0\rbrace \sum_{j=1}^{n_i}{1\lbrace x^{(i)}_j=t\rbrace }}}{\sum_{i=1}^m{1\lbrace y^{(i)}=0 \rbrace n_i}} \end{align*} \]

    同样可以使用拉普拉斯平滑

    但上面的分类方法同样无法识别上下文的关系,一个序列在改变了顺序后识别的效果是相同的。

神经网络(Neural Network)

神经网络算法可以解决非线性分类问题,也就是使用一条曲线来进行分类。

神经网络的大概模型如下图

输入层用来接收特征。隐藏层中其实包含许多层,层与层之间有数据的传递。最终数据到达输出层,从而得到结果。

每个小圆圈是一个Sigmoid单元,每个单元都有自己的输入来源。每一个单元还有一个自己的参数组\(\theta\),它会根据\(\theta\)以及输入的数据计算出自己的输出数据。我们令\(a_i\)为第\(i\)个单元的输出,\(\theta_i\)为第\(i\)个单元的参数组,\(x_i\)为第i个单元的输入数据,那么有\(a_i=g(x^T\theta)\),并且\(g(z)=\cfrac{1}{1+e^{-z}}\)

为了训练神经网络,一种方法是设\(J(\theta)=\cfrac12\sum_{i=1}^m{h_\theta(x^{(i)}-y^{(i)})^2}\),通过梯度下降来不断更新每个节点的参数,从而最小化\(J(\theta)\),这被称为反向传播。

在之后的课程里我们会学习如何构建神经网络。

两种对于分类的直观理解

这里回到线性分类问题,并且假设样本都是可以线性分类的。

  1. 类比Logistic回归,对于一个输入,我们会得到答案是1的概率。我们在保证分类正确的前提下,会想让分类尽量有保证,也就是让对应的概率更大。

    在Logistic回归中,\(P(y=1|x)=g(x^T\theta)\),其中\(g(z)=\cfrac1{1+e^{-z}}\)。所以我们就是让\(y^{(i)}=1\)\(\theta^Tx^{(i)}\)尽可能大,让\(y^{(i)}=0\)\(\theta^Tx^{(i)}\)尽可能小。

  2. 从图象上看,我们会想让分割两个点集的那条直线到两个点集的距离尽可能地远。

一些改变

\[y \in \lbrace -1,+1\rbrace \]

\[h \in \lbrace -1,+1 \rbrace \]

\[g(z)=\begin{cases} -1, &\text{if $z\lt 0$} \\ +1, &\text{if $z\ge 0$} \end{cases} \]

\[h_{w,b}(x)=g(w^Tx+b) \\ x重新变成一个n维向量(原来我们补充了一个x_0=1) \]

定义

  • 超平面\((w,b)\)是在\(n\)维空间中,分割空间的一个平面。

  • 函数间隔:

    一个超平面\((w,b)\)关于一个训练样本的函数间隔被定义为\(\hat \gamma^{(i)}=y^{(i)}(w^Tx^{(i)}+b)\),里面的\(y^{(i)}\)用来调节符号。此时,之前的第一种理解就是让每个样本的\(\hat \gamma^{(i)}\)尽可能的大。同时,只要\(\hat \gamma^{(i)} \gt 0\)就可以保证第\(i\)个样本分类正确。

    超平面\((w,b)\)关于整个训练集合的函数间隔被定义为\(\hat \gamma=min \lbrace \hat \gamma^{(i)} \rbrace\)

    到目前为止,我们可以通过把\(w,b\)扩大一个倍数来无限增大\(\hat \gamma\)。所以我们需要添加一个正规化的条件:\(\left| w \right| = 1\)

  • 几何间隔:

    一个训练样本的几何间隔等于\(x^{(i)}\)所对应的那个点到超平面\((w,b)\)的几何距离。经过计算可以得到\(x^{(i)}\)\((w,b)\)的有向距离等于\(\cfrac{w^Tx^{(i)}+b}{\left |w \right|}\),如果点在直线左侧为正,在直线右侧为负。

    所以我们定义几何间隔:\(\gamma^{(i)}=y^{(i)}\cfrac{w^Tx^{(i)}+b}{\left| w \right|}\)

    同样对于整个训练集合有$\gamma=min\lbrace \gamma^{(i)} \rbrace $

    并且我们可以发现函数间隔与几何间隔的关系:\(\hat \gamma=\left| w \right| \gamma\)

  • 最大间隔分类:选择\(w,b\)最大化几何间隔,同时满足\(\left| w \right|=1\)

posted @ 2016-12-18 20:26  LincHpin  阅读(127)  评论(0编辑  收藏  举报