zoukankan      html  css  js  c++  java
  • Andrew Ng机器学习课程6

    Andrew Ng机器学习课程6


    说明

      在前面跟随者台大机器学习基石课程和机器学习技法课程的设置,对机器学习所涉及到的大部分的知识有了一个较为全面的了解,但是对于没有动手写程序并加以使用的情况,基本上是不可能掌握好的。特别是我的学习进程是突击式的,因此,会很快忘掉,心中只剩下一个基本的纲要,所以后面要通过讲解更为详细的Andrew Ng教授的机器学习课程进行回顾和总结,希望能够抓住它的来龙去脉。所以总结的内容主要是推导的思路,只要能够把握住思路,就能保持长久的记忆。

    主要内容

    朴素贝叶斯分类器

    1. 垃圾邮件特征提取方法

      通过垃圾邮件的筛选,介绍了朴素贝叶斯分类器。对于垃圾邮件,建立一个垃圾邮件中经常出现的词的字典,用于将一封邮件通过这个字典转换为特征向量,这个特征向量的长度等于字典中词的个数N=5000,且其每一个位置上的值仅取“1”或“0”,表示对应位置上是否出现了垃圾词。

    2. 朴素贝叶斯假设与朴素贝叶斯分类器

      已经得到了特征矢量,我们要构建一个generative model。这里先说明一下先验概率与后验概率的含义:

    先验概率是指基于先验知识所得到某一件事情发生或出现的概率,通常采用大数据统计就可以得到先验概率。比如罹患肝癌(y)的概率,通过统计医院的资料,可以计算出先验概率p(y)来。而后验概率则是指当某一件事情已经发生或出现,回推导致这件事情发生的因素的概率。比如某人已经查出罹患肝癌(y),而导致肝癌发生的因素有x={},即后验概率就是指p(x|y)

      然后再说明一下机器学习中两种不同的model:

    discrimination modelgenerative model, 两者的区别在于对概率密度的建模上:以二分类问题为例,样本特征矢量为x,样本标签为yy{1,+1}discrimination model是直接对p(y|x)进行建模,类似logistic regression,思路就是从已知的样本集(x,y)中直接学习出给定x,输出y为1的概率是多少。等于说是直接构建以x为输入参数的y的概率模型。而generative model则是先分别对p(x|y=0)p(x|y=1)进行建模,然后再通过后验概率公式(贝叶斯公式)计算得到:

    p(y=1|x)=p(x|y=1)×p(y=1)p(x)
    p(y=0|x)=p(x|y=0)×p(y=0)p(x)
    ,这样就考虑了样本的产生模型p(y),同时除去分母是不影响判断的,所以实际上generative model是对联合概率密度进行的建模p(y,x)=p(x|y)×p(y)。而对于discrimination model则没有考虑样本的生成模型,或者说是认为样本生成模型是均匀分布的。通常对于generative model要求样本无穷大或尽可能大,而discrimination model则不需要。

      为了对p(x|y)进行建模,引入了一个非常强的假设,即假设给定y的情况下,xi是条件独立的,即每个xi之间是没有约束关系的。这个假设叫做朴素贝叶斯假设(Naive Bayes assumption),而这样得到的学习算法就叫做朴素贝叶斯分类器。

    3. 垃圾邮件的朴素贝叶斯分类器
      接着对垃圾邮件进行建模,有:

    p(x1,...,x50000|y)=p(x1|y)p(x2|y,x1)p(x3|y,x1,x2)...p(x50000|y,x1,x2,...,x49999)=p(x1|y)p(x2|y)p(x3|y)...p(x50000|y)=i=1np(xi|y)

      很显然,建立的模型的参数为p(xi|y)p(y)。联合概率密度的似然函数为:
    L(ϕy,ϕj|y=0,ϕj|y=1)=i=1mp(x(i),y(i))

      通过最大化联合似然函数,可以得到模型参数的最大似然估计,从而构建出如下模型:
    p(y=1|x)=p(x|y=1)×p(y=1)p(x)=(ni=1p(xi|y=1))×p(y=1)p(x)
    p(y=0|x)=p(x|y=0)×p(y=0)p(x)=(ni=1p(xi|y=0))×p(y=0)p(x)

      选择具有最高后验概率的class作为判定依据。

    Ng教授绘制了一种通常的情况用于说明通过典型的generative model :GDA(Gaussian Discrimination Analysis model)方法建立的两类后验概率,生成分类边界实际上与logistic regression的边界一样。这说明了两种模型实际上是有共通之处的,就是上面说过的如果忽略了样本的产生模型p(y)两者基本上是类似的。

    拉普拉斯平滑

      在处理一些还没有出现或发生过的事件A时,如果采用上面那种联合似然函数估计出来的p(A)=0,这是不合理的,因为只是在有限的训练集中没有看到这个事件发生,并不代表它一定不发生,即p(A)=0。这个时候采用laplace smoothing会有更好的估计效果。以估计一个多项随机变量z{1,2,...,k}的均值情况为例,多项分布的参数为ϕi=p(z=i),假定m个独立的观测值{z(1),...,z(m)},很简单地得到最大似然估计为:

    ϕi=mi+11{z(i)=j}m

      如前面所讲,如果使用最大似然估计,很有可能一些ϕi=p(z=i)会是0。为了克服这个问题,使用laplace smoothing取代上面的估计:
    ϕi=mi+11{z(i)=j}+1m+k

      laplace smoothing的效果就是使在观测值中没有出现的事件的概率估计保持一定的小概率出现,而不是直接认定概率为0。

    事件模型

      对于上面构建垃圾邮件分类器,实际上丢掉了一些信息,即没有考虑文本的上下文。Naive Bayes采用multi-variable Bernoulli event model可以解决这样的问题。认为邮件是这样产生的:首先根据先验概率p(y)随机生成邮件或垃圾邮件,然后发送邮件的人遍历这个垃圾邮件的字典,根据概率p(xi=1|y)=ϕi|y独立决定是否包含第i个word。所以,这个message的概率为:

    p(y)i=1np(xi|y)

      而multinomial event model是一个不同的模型,将具有n个words的email表示为(xi)(n),不同的邮件的words的长度n可以不同。xi表示的是这个email的第i个word是字典中的第x_i个word的索引index。所以message的概率为:
    p(y)i=1np(xi|y)

      虽然multi-variable Bernoulli event model与multinomial event model得到的概率模型在公式上表现了相同,但是具体的含义却差别很大,multinomial event model中的xi|y表示的是一个多项分布,而ulti-variable Bernoulli event model中的xi|y表示的是一个bernoulli分布。

    神经网络模型

      Ng教授通过两个视频的例子说明了神经网络模型的力量,一个是手写体的识别,另一个是模拟小孩说话声音。都表现出了很好的性能。神经网络是在logistic regression的基础上引入的,采用sigmoid函数作为激活函数。神经网络最大的缺点就是变量太多,导致很容易陷入局部最优。神经网络的部分,可以参看我的其他博客文章神经网络模型的总结,有很深入的介绍。

    支持向量机的开篇

      Ng教授对支撑向量机(support vector machine)是从线性可分问题入手的,介绍了怎样的分类边界是好的。对于logistic regression,当θTX远大于0时,就有很大的confidence认为y=+1,而当θTX远小于0时,就有很大的confidence认为y=1。从而引入了两个margin,一个是function margin,另一个是geometry margin。定义了点(xi,yi)到超平面(w,b)的距离作为function margin: function margin=y(i)(wTx+b),我们求取所有点到决策平面的距离中的最小值作为样本到决策平面的距离。剩下要做的就是maximize 这个margin。样本是固定的,而决策超平面是不定的,是由参数(w,b)决定的。我们所要做的就是调整(w,b),而如果参数同时放大时,这个margin也会放大,这样最大化就没意义了。所以,定义了geometric margins,约束||w||=1,从而得到了如下的公式化的优化问题:

    max(w,b){min y(i)(wTx+b)}, s.t.||w||=1


    2015-8-23
    艺少

  • 相关阅读:
    简单区分Vmware的三种网络连接模式(bridged、NAT、host-only)
    linux创建账户并自动生成主目录和主目录下的文件
    EF 通用数据层类
    html在线美化网站
    图片在页面中居中显示
    __dopostback的用法
    rdlc报表集锦
    .NET开源免费的功能强大控件库
    使用webclient上传下载实例
    消息队列将并发变串行
  • 原文地址:https://www.cnblogs.com/huty/p/8519223.html
Copyright © 2011-2022 走看看