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

判别学习算法:直接学习$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. UNraid学习随手记:显示主板、CPU传感器温度

    话不多说直接开始 首先安装NerdTools 地址: https://raw.githubusercontent.com/dmacias72/unRAID-NerdPack/master/plugin ...

  2. Linux 设置静态IP

    由于工作需要,安装一套Linux系统.安装完成后发现这个家伙居然不能上网,然后看了下IP,(命令 ip a)发现是127.0.0.1 下面是我的界面: inet 是127.0.0.1/8 还有6个网卡 ...

  3. 不吹不黑,jupyter lab 3.0客观使用体验

    1 简介 jupyter lab于近期发布了其具有里程碑意义的3.0版本,随之带来的一些重要新特性,想必广大读者朋友已在各大公众号所翻译转载的jupyter lab团队官方介绍文章中知晓了很多. 图1 ...

  4. 剑指offer 面试题2:实现Singleton模式

    转自:https://blog.csdn.net/liang19890820/article/details/61615495 Singleton 的头文件(懒汉式/饿汉式公用): // single ...

  5. mysql的安全问题

    mysql 用户目录下,除了数据文件目录,其他文件和目录属主都改为root 删除空账号 drop user ''@'localhost'; 给root 设置口令 在[client]中写入user='' ...

  6. 【Linux】fdisk -l发现有加号"+"

    今天分区不够了,打算扩下分区,想起当时创建机器的时候还有大约80多个G没有用,今天打算重新利用上 就用了fdisk /dev/sda 创建了两个分区,但是发现分区下面有加号,感到而别的困惑 最后在很多 ...

  7. IE浏览器直接在页面中显示7z文件而不是下载问题解决

    IE浏览器中输入7z文件的完整下载URL后,不是保存文件,而是直接在页面中显示(当然是乱码) 这是因为浏览器对不同的资源文件处理的方式不同,例如图片文件,一般会直接打开,所以我们可以不用7z,使用zi ...

  8. CS_WHERE_USED_MAT 反查BOM的成品CS15

    可能很多人都用过BOM展开的函数,但是有的时候,需要通过组件去反查BOM的成品,而这时候就需要用到函数 CS_WHERE_USED_MAT来实现,而对于CS_WHERE_USED_MAT只能反查到上一 ...

  9. Request&Response总结

    Request&Response Request 请求对象的类视图 请求对象常用方法 获取请求路径 返回值 方法名 说明 String getContextPath() 获取虚拟目录名称 St ...

  10. [Usaco2016 Dec]Moocast

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4749 可以对于每个点\(i\),往跟\(i\)距离小于等于\(p[i]\)的点\(j\)都 ...