本讲大纲:
1.朴素贝叶斯(Naive Bayes)
2.神经网络(Neural Networks)
3.支持向量机(Support vector machines)
参考:https://www.zhihu.com/question/21094489
1.朴素贝叶斯
前面讲的主要是是二元值的特征,更一般化的是xi可以取{1,2,3…k},这样的话可以用多项式分布代替伯努利分布对p(x|y)进行建模. 即使一些输入特征是连续值,我们也很容易离散化. 就比如说我们xi表示居住面积,我们可以离散化如下:
Paste_Image.png然后我们可以利用朴素贝叶斯算法,用多项式分布进行建模. 当原始的连续值在多项分布中建模效果不是很好时,离散这些特征然后使用朴素贝叶斯(而不是GDA)常常会得到一个更好的结果.
文本分类的事件模型 在文本分类的特定语境下,朴素贝叶斯使用多变量伯努利事件模型(multi-variate Bernoulli event model).
多项式事件模型(multinomial event model)
为了说明这个模型,换一种记号的方法. xi表示在一封邮件中的第i个词,xi的取值为
,其中 |V| 表示字典的大小. n个词的邮件可以表示为向量 .
假设邮件产生的方式是由垃圾还是非垃圾邮件决定是一个随机的过程,邮件的发送者写的第一个词x1是由服从p(x1|y)的多项式分布产生的,x2是独立与x1的并且来自于同一个多项式分布,同样的,产生x3,x4,一直到xn. 因为所有的这个信息的概率是 这里写图片描述 . 模型的参数为: 注意p(xj|y)对所有的j来说都是一样的,也就是说词的产生和它的位置无关. 似然性:
参数的最大似然估计为:
应用laplace平滑,分子加1,分母加|V|,得到:
</br>
2.神经网络
现在想讨论的问题是非线性分类器(non-linear classifier).
分类算法中用logistic回归画出一条直线把训练集分开,但是有时候并不能被一条直线分开,我们希望:
假设特征是x0,x1,x2,x3,圈圈表示计算节点,最后的输出为hθ(x),得到非线性分界线假设,如图:
输入特征输入到多个sigmoid单元,然后这些单元再输入到一个sigmoid单元,得到神经网络,这些中间节点叫做隐藏层,神经网络可以有多个隐藏层.
其中的参数: a2,a3都是类似的; 最终的输出,
展示通过神经网络识别数字的程序,即使有很多的噪音效果依旧非常好!
</br>
3.支持向量机(SVM)
扩展
1. 贝叶斯定理及其推断
条件概率计算公式:
全概率公式:
将全概率公式带入到条件概率公式:
对条件概率公式进行变形,可以得到如下形式:
我们把P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"似然性"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。
所以,条件概率可以理解成下面的式子:
后验概率 = 先验概率 x 调整因子
这就是贝叶斯推断的含义。我们先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。
在这里,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发生的可能性变大;如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。
2. 贝叶斯算法的应用
贝叶斯算法是分类算法的一种。
假设我们有一个数据集,每一条由属性和他的类型构成,属性用X来表示,类型由Y表示,具体的类型为y1,y2....yn。对于一条新的数据,假如我们只知道他的属性,我们想根据他的属性来分类到具体的yi,这时就可以用贝叶斯算法。
朴素贝叶斯算法的原则就是:对于某一个条件,这个条件下哪个类的个数最多,这个情况就可能是这个类的。其实就是max{P(y1|X),P(y2|X)...P(yn|X)},X是条件(属性),y是类。
有一个人,他的耳朵很大(大中小),每天睡6h(5,6,7,8,9,10),是处女座,有一个女孩,我们来判断他是哪个洲。按贝叶斯统计的方法,我们应该看看所有大耳朵,睡6个小时的,处女座的,有女孩的人中,哪个洲的人最多。但是,尴尬的是,现在出现了这样的情况,我们现在数据记录的所有人中,没有全部满足这四个条件的。我们该怎么办?
根据公式
P(yi|X)都是没有办法算出来的,因为没有一个人满足X的每一个条件。但是看式子右边的每一项,我们发现式子右边的分子的每一项都是可以计算的。
这就是朴素贝叶斯算法,我希望这些算式不只是工具来运算,式子本身也具有含义和可理解的东西,所以就套了一个例子来讲算法。实际上,贝叶斯算法的核心就是比较某条件下,类的概率。这个类的概率可以由独立属性在每个类占比相乘来得到。
朴素贝叶斯算法的局限性在于他只能用于条件全部独立的情况下,事实上,这一点很难达到。基于此,有了贝叶斯网络算法。
3. 支持向量机
是一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。
在样本是两类的情况下,最基本的线性SVM就是学出一个从n维空间到一维空间(Score)的投影。这个投影要求能在一维空间里把两类分开。这个目标这个其实和LDA(线性判别分析)是一致的。不同之处在于SVM使用了Hinge Loss来达到Maximal Margin,而LDA使用类间/类内杂散度矩阵的特征值之比来度量loss。
该模型的优化目标是,最大化分类的超平面和两类数据的间距。为了达到这个目标,和除了最近点以外的点都没有关系。其实从几何上也可以直观地理解,所谓最大化间距,其实就是让超平面距离两个类的数据的最近点,最远。而这些最近点,就被叫做支持向量。
网友评论