zoukankan      html  css  js  c++  java
  • CS229 Lecture 02

    最近忙成狗,各种意义上。第二章其实之前已经看过了但是已经完全忘记了,于是重新看了一遍当复习。

    判别学习算法:直接学习$p(y|x)$,或学习一个假设$h_{ heta}(x)$输出结果

    生成学习算法:对$p(x|y)$进行建模(feature, class label),然后根据$p(y|x)=frac{p(x|y)p(y)}{p(x)}$和$p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)$计算结果。

    高斯判别分析

    假设p(x|y)服从多元高斯分布$z~N(mu,Sigma)$。其中$mu$为均值,$Sigma=E[(x-mu)(x-mu)^{T}]$为协方差矩阵。

    假设y服从伯努利分布。即$p(y)=phi^{y}(1-phi)^{1-y}$。

    则其服从高斯分布的模型:

    $p(x|y=0)=frac{1}{(2pi)^{n/2}|Sigma|^{1/2}}exp(-frac{1}{2}(x-mu_0)^TSigma^{-1}(x-mu_0))$

    $p(x|y=1)=frac{1}{(2pi)^{n/2}|Sigma|^{1/2}}exp(-frac{1}{2}(x-mu_1)^TSigma^{-1}(x-mu_1))$

    则其似然函数为:$l(phi, mu_0, mu_1, Sigma)=logprod p(x^{(i)},y^{(i)})=logprod p(y^{(i)}|x^{(i)}, heta)$

    与此相比,logistic回归的似然函数为:$logprod p(y^{(i)}|x^{(i)}, heta)$

    此时,各参数结果如下:

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

    $mu_0=frac{sum_{i=1}^{m}1{y^{(i)}=0}x^{(i)}}{sum_{i=1}^{m}1{y^{(i)}=0}}$

    $mu_1=frac{sum_{i=1}^{m}1{y^{(i)}=1}x^{(i)}}{sum_{i=1}^{m}1{y^{(i)}=1}}$

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

    预测公式如下:$argmax_y p(y|x)=argmax_y frac{p(x|y)p(y)}{p(x)}=argmax_y p(x|y)p(y)$

    当y服从均匀分布时,p(y)相同,公式可简化为$argmax_y p(x|y)$

    高斯分布模型与Sigmoid函数的对比:

    对于$P(y=1|x)=frac{p(x|y=1)p(y=1)}{p(x)}$来说,其越接近一侧时,值越接近0;越接近另一侧时,值越接近1。这与Sigmoid函数的情况是类似的。

    这里$P(x)=P(x|y=1)p(y=1)+P(x|y=0)p(y=0)$。

    相比与logistic,高斯分布是一个更强的假设。即,对于未知的数据,如果假设其服从高斯分布,但是其实际是服从泊松分布的。那么此时logistic回归仍然能取得不错的效果。但如果数据确实服从高斯分布,则利用高斯分布模型可以取得更好的效果。

    事实证明,生成算法的优点在于需要更少的数据,logistic回归的优点在于假设更少,模型更健壮。

    另,若x|y=1和x|y=0均服从指数分布族,那么p(y=1|x)为logistic回归函数。

    朴素贝叶斯

    应用:垃圾邮件分类。

    若假设y=0或1,1表示是垃圾邮件,0表示不是垃圾邮件。那么首先问题在于,如何确定一封邮件的特征向量。

    遍历词典,若该词出现则为1,未出现则为0。

    对于一个50000词的词典,其模型应该如下:$p(x|y), xin{0, 1}^n, n=50000$。那么若采用多项式模型,其共有$2^{50000}-1$个参数(所有参数的和为1)。

    若使用朴素贝叶斯模型,则需要做一个非常强的假设(朴素贝叶斯假设):给定y的时候,$x_i$是条件独立的。

    即$p(x_1,...,x_{50000}|y)=p(x_1|y)p(x_2|y, x_1)...p(x_{50000}|y, x_1, x_2,...,x_{49999})$

    $=p(x_1|y)p(x_2|y)...p(x_{50000}|y)=prod_{i=1}^{n}p(x_i|y)$

    这个假设意味着:某个单词在邮件中是否出现,对其他单词是否出现没有影响。这个假设显然是不符合实际的,但是其仍然是一个有效的算法。这个模型跟贝叶斯网络类似。

    模型参数如下:$phi_{i|y=1}=p(x_i=1|y=1)$,$phi_{i|y=0}=p(x_i=1|y=0)$,$phi_y=p(y=1)$。

    joint似然性:$L(phi_y,phi_{i|y=0},phi_{i|y=1})=prod_{i=1}^{m}p(x^{(i)},y^{(i)})$。

    则极大似然的参数为:$phi_{j|y=1}=frac{sum_{i=1}^{m}1{x_{j}^{(i)}=1wedge y^{(i)}=1}}{sum_{i=1}^{m}1{y^{(i)}=1}}$(垃圾邮件中某词出现的比例)

    $phi_{j|y=0}=frac{sum_{i=1}^{m}1{x_{j}^{(i)}=1wedge y^{(i)}=0}}{sum_{i=1}^{m}1{y^{(i)}=0}}$(非垃圾邮件中某词出现的比例)

    $phi_{y}=frac{sum_{i=1}^{m}1{y^{(i)}=1}}{m}$(垃圾邮件占所有邮件的比例)

    若预测一封邮件是否为垃圾邮件,即需要计算p(y=1|x)

    $p(y=1|x)=frac{p(x|y=1)p(y=1)}{p(x)}=frac{(prod_{i=1}^{n}p(x_i|y=1))p(y=1)}{(prod_{i=1}^{n}p(x_i|y=1))p(y=1)+(prod_{i=1}^{n}p(x_i|y=0))p(y=0)}$

    Laplace平滑

    对于$p(y=1)=frac{#"1"s}{#"0"s+#"1"s}$, 对每一项都加1,即$p(y=1)=frac{#"1"s+1}{#"0"s+1+#"1"s+1}$

    更一般的,如果y可以取k种值,则$p(y=j)=frac{sum_{j=1}^{m}1{y^{(i)}=j}+1}{m+k}$

    朴素贝叶斯的一个变种

    $xin{1,2,...,k}$,此时$p(x|y)=prod_{i=1}^{k}p(x_i|y)$,这里的$x_i$服从多项式分布(代替伯努利分布)。

    对于连续的数据,可以先将其离散化。

    对于词汇序列的分类(多元伯努利事件模型)

    之前的对垃圾邮件的分类方法,丢失了单词出现次数的信息。

    多项式事件模型

    对于第i个数据(邮件),其特征向量为${x_1^{(i)},...,x_{n_i}^{(i)}}$,其中$x_i$为第i个数据的单词个数。$x_jin{1,2,...,50000}$为单词在字典中的索引。

    此时,$p(x,y)=p(y)prod_{i=1}^{n}p(x_i|y)$,n是邮件的长度。

    其参数为:$phi_{k|y=1}=p(x_j=k|y=1)$

    $phi_{k|y=0}=p(x_j=k|y=0)$

    $phi_y=p(y=1)$

    其极大似然函数为$phi_{k|y=1}=frac{sum_{i=1}^{m}1{y^{(i)}=1}sum_{j=1}^{n}1{x_{j}^{(i)}=k}}{sum_{i=1}^{m}1{y^{(i)}=1}cdot n}$(垃圾邮件中词k出现的次数占总垃圾邮件长度的百分比)

    $phi_{k|y=0}=frac{sum_{i=1}^{m}1{y^{(i)}=0}sum_{j=1}^{n}1{x_{j}^{(i)}=k}}{sum_{i=1}^{m}1{y^{(i)}=0}cdot n}$(非垃圾邮件中词k出现的次数占总非垃圾邮件长度的百分比)

    $phi_y=frac{sum_{i=1}^{m}1{y^{(i)}=1}}{m}$(垃圾邮件占总邮件数的百分比)

    上述极大似然估计也可以使用Laplace平滑。 

    非线性分类器:

    对于logistic回归$h_{ heta}(x)=frac{1}{1+e^{- heta^{T}x}}$,可以认为假设值大于0.5时分类为1,小于0.5时分类为0.

    根据之前提到的指数分布族的知识,服从指数分布族的分布都可以看作logistic后验分布。朴素贝叶斯也属于这类模型,所以其本质还是线性分类器。

    神经网络:多个Sigmoid函数,value函数与反向传播。

  • 相关阅读:
    SpringMVC返回JSON数据时日期格式化问题
    elementUI-tree组件 懒加载
    vue elementUi tree 懒加载使用详情
    Mybatis ResultMap Collection 复合主键
    ElasticSearch-IK分词
    Spring中的InitializingBean接口的使用
    ContextLoadListener & DispatcherServlet 加载顺序以及加载过程
    Spring中查看加载配置文件中 加载类的个数及详情
    DispatcherServlet 被加载顺序
    JetBrainsIDEA-structure结构继承的图标说明
  • 原文地址:https://www.cnblogs.com/wangzhao765/p/7886994.html
Copyright © 2011-2022 走看看