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

判别学习算法:直接学习$p(y|x)$,或学习一个假设$h_{\theta}(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}{(2\pi)^{n/2}|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0))$

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

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

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

此时,各参数结果如下:

$\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), x\in{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)}=1\wedge y^{(i)}=1\}}{\sum_{i=1}^{m}1\{y^{(i)}=1\}}$(垃圾邮件中某词出现的比例)

$\phi_{j|y=0}=\frac{\sum_{i=1}^{m}1\{x_{j}^{(i)}=1\wedge 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}$

朴素贝叶斯的一个变种

$x\in\{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_j\in\{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_{\theta}(x)=\frac{1}{1+e^{-\theta^{T}x}}$,可以认为假设值大于0.5时分类为1,小于0.5时分类为0.

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

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

CS229 Lecture 02的更多相关文章

  1. CS229 笔记02

    CS229 笔记02 公式推导 $ {\text {For simplicity, Let }} A, B, C \in {\Bbb {R}}^{n \times n}. $ ​ $ {\bf {\t ...

  2. ML Lecture 0-2: Why we need to learn machine learning?

    在Github上也po了这个系列学习笔记(MachineLearningCourseNote),觉得写的不错的小伙伴欢迎来给项目点个赞哦~~ ML Lecture 0-2: Why we need t ...

  3. CS229 Lecture 01

    CS229 Lecture notes 01 机器学习课程主要分为4部分:监督学习:学习理论:无监督学习:增强学习. $x^{(i)}$表示特征,$y^{(i)}$表示目标,$i=1...m$.m是训 ...

  4. 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  5. [Stats385] Lecture 01-02, warm up with some questions

    Theories of Deep Learning 借该课程,进入战略要地的局部战斗中,采用红色字体表示值得深究的概念,以及想起的一些需要注意的地方. Lecture 01 Lecture01: De ...

  6. K-Means 聚类算法

    K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Clus ...

  7. 【十大经典数据挖掘算法】EM

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 极大似然 极大似然(Maxim ...

  8. 在线最优化求解(Online Optimization)之一:预备篇

    在线最优化求解(Online Optimization)之一:预备篇 动机与目的 在实际工作中,无论是工程师.项目经理.产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的 ...

  9. 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

    本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 闲话:二项Logistic回归是我去年入门机器学习时学的第一个模 ...

随机推荐

  1. “开源、共享、创新” 2020 中国.NET开发者大会小结

    大会的新闻稿在2020年12月31日正式发布:开源·共享·创新|2020年中国.NET开发者大会圆满收官! , 本文是这篇新闻的补充性文章,仅代表个人对大会的各方面分享内容的一个小结. 在2019年上 ...

  2. 第14章节 BJROBOT karto 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】

    建地图前说明:请确保你的小车已经校正好 IMU.角速度.线速度,虚拟机配置好 ROS 网络的前提进行,否则会造成构建地图无边界.虚拟机端无法正常收到小车主控端发布的话题数据等异常情况!! 1.把小车平 ...

  3. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...

  4. 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写

    摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...

  5. JWT初识记录

    因为前一段时间做了一个系统持续操作期间自动刷新token有效性的需求,然后就想着找一个空闲时间总结一下JWT,所以今天就简单的记录一下自己了解的内容. JWT是什么 JWT全称是JSON Web To ...

  6. Docker一秒进阶

    tar包: 从tar包导入:docker load < xxxx.tar docker run -d -p 8080:80 --name [名字] -v `pwd`:/usr/share/ngi ...

  7. 【Java集合】HashSet源码解析以及HashSet与HashMap的区别

    HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...

  8. 深入理解MySQL索引(下)

    先创建一个T表. mysql> create table T ( ID int primary key, k int NOT NULL DEFAULT 0, s varchar(16) NOT ...

  9. 基于 MapReduce 的单词计数(Word Count)的实现

    完整代码: // 导入必要的包 import java.io.IOException; import java.util.StringTokenizer; import org.apache.hado ...

  10. [USACO2011 Feb] Cow Line

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3301 康拓展开和逆展开的模板题. #include<iostream> #in ...