贝叶斯与em算法
A. 基于EM算法的高斯混合密度估计与k均值算法之间的关系。
建议看一下 机器学习中的贝叶斯学习部分中的EM算法。EM算法可应用于k均值问题,目的是搜索一个极大似然的假设不断地再估计隐藏层变量的期望值,然后用这些隐藏层变量的期望值重新计算极大似然假设。EM算法可用来推到k均值算法
B. 情感分析器的研究方法
监督学习
目前,基于监督学习的情感分析仍然是主流,除了(Li et al.,2009)基于非负矩阵三分解(Non-negative Matrix Tri-factorization),(Abbasi et al.,2008)基于遗传算法(Genetic Algorithm)的情感分析之外,使用的最多的监督学习算法是朴素贝叶斯,k最近邻(k-Nearest Neighbor,k-NN),最大熵和支持向量机的。而对于算法的改进主要在对文本的预处理阶段。
基于规则/无监督学习
和基于监督学习的情感分析相比,基于规则和无监督学习方面的研究不是很多。除了(Turney,2002)之外,(朱嫣岚 et al.,2002)利用HowNet对中文词语语义的进行了情感倾向计算。(娄德成 et al.,2006)利用句法结构和依存关系对中文句子语义进行了情感分析,(Hiroshi et al.,2004)通过改造一个基于规则的机器翻译器实现日文短语级情感分析,(Zagibalov et al.,2008)在(Turney,2002)的SO-PMI算法的基础上通过对于中文文本特征的深入分析以及引入迭代机制从而在很大程度上提高了无监督学习情感分析的准确率。
跨领域情感分析
跨领域情感分析在情感分析中是一个新兴的领域,目前在这方面的研究不是很多,主要原因是目前的研究还没有很好的解决如何寻找两个领域之间的一种映射关系,或者说如何寻找两个领域之间特征权值之间的平衡关系。对于跨领域情感分析的研究开始于(Blitzer et al.,2007)将结构对应学习(Structural Correspondence Learning,SCL)引入跨领域情感分析,SCL是一种应用范围很广的跨领域文本分析算法,SCL的目的是将训练集上的特征尽量对应到测试集中。(Tan et al.,2009)将SCL引入了中文跨领域情感分析中。(Tan2 et al.,2009)提出将朴素贝叶斯和EM算法的一种半监督学习方法应用到了跨领域的情感分析中。(Wu et al.,2009)将基于EM的思想将图排序(Graph Ranking)算法应用到跨领域的情感分析中,图排序算法可以认为是一种迭代的k-NN
C. 机器学习“判定模型”和“生成模型‘有什么区别
最基本的区别就是建模对象不同, 但目的都是求出P(Y|X)
判别模型Discriminative Model:
直接对P(Y|X)进行建模, 判别模型不考虑如何生成 X 和 Y 的联合事件, 比如 SVM 只考虑把点分开而已, 鲁棒性比较强, 但需要更多的训练数据.
生成模型 Generative Model:
利用贝叶斯公式, 先对P(X|Y)进行建模, 然后利用训练集中的 P(Y) 求出联合**概率分布 P(X,Y)**, 最后除以X的概率分布P(X)得出我们的目标(P(Y|X)). 最常见的例子朴素贝叶斯. 生成模型需要做出更多的假设, 因此适用于数据较少的情况下, 但鲁棒性不强, 因为假设错了就效果很差了.
给一个栗子, 外星人来地球拿了一个数据集包含了地球人的身体特征, 标签有2类:男和女. 如果训练数据集只有1%是数据是男性, 而99%是女性. 那么外星人科学家就有可能认为给定随机一个人类, 该人类是女性的P(y=female)概率是99%, 按照这个假设去做生成模型就会很不给力, 但判别模型就没有这个问题.
——Matthew_zeng
我们从几句话进入这两个概念:
1、机器学习分为有监督的机器学习和无监督的机器学习;
2、有监督的机器学习就是已知训练集数据的类别情况来训练分类器,无监督的机器学习就是不知道训练集的类别情况来训练分类器;
3、所以说,有监督的机器学习可以抽象为一个分类task,而无监督的基本完成的是聚类;
4、有监督的机器学习中,我们可以概述为通过很多有标记的数据,训练出一个模型,然后利用这个,对输入的X进行预测输出的Y。这个模型一般有两种:
决策函数:Y=f(X)
条件概率分布:P(Y|X)
5、根据通过学习数据来获取这两种模型的方法,我们可以分为判别方法和生成方法;
6、概念正式介绍
判别方法:由数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)作为预测模型,即判别模型。判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。
数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)得到的预测模型,就是判别模型;
生成方法:由数据学习联合概率分布P(X,Y), 然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型。该方法表示了给定输入X与产生输出Y的生成关系
P(Y|X)作为的预测的模型就是生成模型;
两个模型的范例
生成模型:朴素贝叶斯、隐马尔可夫(em算法)
判别模型:k近邻法、感知机、决策树、逻辑回归、线性回归、最大熵模型、支持向量机(SVM)、提升方法、条件随机场(CRF)
对比
1、生成模型可以还原出联合概率分布(还原数据本身相似度),而判别方法不能;
2、生成方法的学习收敛速度更快,当样本容量增加的时候,学到的模型可以更快的收敛于真实模型;
3、当存在隐变量时,仍可以利用生成方法学习,此时判别方法不能用;
4、判别学习不能反映训练数据本身的特性,但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异,直接面对预测,往往学习的准确率更高,由于直接学习P(Y|X)或Y=f(X),从而可以简化学习;
5、简单的说,生成模型是从大量的数据中找规律,属于统计学习;而判别模型只关心不同类型的数据的差别,利用差别来分类。
D. 全概率公式和贝叶斯公式及其含义
全概率公式P(A)=P(A|B1)P(B1)+P(A|B2)P(B2)+...+P(A|Bn)P(Bn);贝叶斯公式P(A∩B)=P(A)*P(B|A)=P(B)*P(A|B)。贝叶斯的统计学中有一个基本的工具叫贝叶斯公式、也称为贝叶斯法则,尽管它是一个数学公式,但其原理毋需数字也可明了。如果你看到一个人总是做一些好事,则那个人多半会是一个好人。
这就是说,当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。用数学语言表达就是:支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。
E. mahout topic模型怎么使用
利用sqoop将数据从MySQL导入到HDFS中,利用mahout的LDA的cvb实现对输入数据进行聚类,并将结果更新到数据库中。数据流向图如下
mahout算法分析
输入数据格式
为<IntegerWritable, VectorWritable>的matrix矩阵,key为待聚类文本的数字编号,value为待聚类文本的单词向量Vector, Vector的index为单词在字典中的编号, value为TFIDF值。
算法相关参数详解(不包含hadoop运行参数)
项目中所有参数设置均与mahout-0.9目录下的examples/bin/cluster-reuters.sh的147-172行设置一样,即
$SCOUT cvb -i ${WORK_DIR}/${ROWID_MATRIX_DIR}/matrix -o ${WORK_DIR}/${LDA_DIR} -k 20 -ow -x 20 -dict ${WORK_DIR}/${DICTIONARY_FILES} -dt ${WORK_DIR}/${LDA_TOPICS_DIR} -mt ${WORK_DIR}/${LDA_MODEL_DIR}
input -- 输入数据的hdfs路径,这里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-out-matrix-debug/matrix
dt -- 文档主题输出路径,保存了每个文档的相应topic的概率,这里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-lda-topics
mt -- model的路径,这里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-lda-debug
k -- number of topics to learn,这里设置成20
x -- 模型迭代次数,也就是需要多少次迭代来生成最后的Model,默认值20
seed -- Random seed,生成初始readModel时的种子,默认值System.nanoTime() % 10000
dict -- 字典路径,这里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-out-seqdir-sparse-lda/dictionary.file-*
a -- Smoothing for document/topic distribution, document/topic分布的平滑系数,默认为1.0E-4
e -- Smoothing for topic/term distribution, topic/term分布的平滑系数,默认为1.0E-4
关于a和e,根据描述,a和e的合适取值为k/50(k为topic数量),但是这个网页还保留着mahout ldatopics的命令介绍,而mahout 0.8,0.9均没有该命令,推测应该是比较陈旧的内容,因此还是根据cluster-reuters.sh中的设置来,也就是采取默认值。
mipd -- 这个参数非常重要,对于每个文档程序是先用RandomSeed来生成一个初始的readModel然后进行mipd次迭代,算出最终的model进行更新,这里选默认值10次
LDA算法程序分析
算法的大致流程如下
1.解析参数与Configuration设置
2.读取Model(第一次运行时没有这个过程)
如果hfds上面已经有部分model,那么程序将读取最后一个model,并以这个model作为初始readModel来继续进行算法迭代,也就是说有类似于断电-重启的机制
3.运行算法迭代(Mapper过程)生成LDA模型
这个过程是最为复杂的阶段,许多地方我也不是很明白,我将尽最大努力进行解释
首先分析Mapper,即CachingCVB0Mapper,顾名思义就是能够缓存的Mapper,表现在其readModel的选取上面,如果目录里面不存在任何model则用RandomSeed初始化一个readModel,否则读取最近的一个model。程序将model划分为readModel和writeModel,这两个都是TopicModel类,并由ModelTrainer来进行调度和管理
CachingCVB0Mapper整个过程如下图所示(清晰大图见附件)
在上面这个整体框架下,mahout程序应用了CVB0 Algorithm来计算LDA模型, 在map过程中通过对向量docTopic和矩阵docTopicModel的反复迭代求解,算出每个document的docTopicModel并且在update writeModel阶段将docTopicModel矩阵进行向量的相加操作,经历完所有的map过程后得到整个corpus的docTopicModel矩阵,最终在cleanup过程中将topic的index作为key,矩阵docTopicModel作为value写入rece。该过程涉及到的算法如下所示
CVB0算法分析图解(清晰大图见附件)
4.利用生成的LDA模型推导出topic的概率分布
算法总结
可以看出算法本质上面就是bayes公式和EM算法的结合
E过程就是首先假定一个均匀分布且归一化的topic概率分布向量docTopics,利用该值通过贝叶斯公式算出单词 - 主题的概率分布矩阵 docTopicModel(见CVB0算法分析图解中的第一步)
M过程就是根据生成的docTopicModel进行CVB0算法分析图解中的2,3,4,5步重新计算得到新的docTopics
然后反复重复 E - M 过程n次,得到收敛后的docTopics和docTopicModel,其中docTopicModel可以用于lda模型的更新,而docTopics就是我们聚类需要的topic概率分布向量
算法后记
几点问题还没有得到解决
1.在mahout中是按照下面的式子计算docTopicModel的
double termTopicLikelihood =
(topicTermRow.get(termIndex) + eta) * (topicWeight + alpha)/ (topicSum + eta * numTerms);
疑问就是该式子比贝叶斯公式添加了几个平滑系数项,这样写的理论依据在哪里,来源于哪篇着作或者论文,平滑系数eta和alpha分别是代表什么含义,如何选取这两个系数。
2.CVB0算法分析图解中第2步进行归一化的理论依据,即为什么要进行归一化
3.update writeModel过程中对于topicTermCounts的计算
即为什么要在每次map时候对p(topic | term)进行累加,还没有完全想明白
项目运行环境
hadoop-1.2.1
sqoop-1.4.4
mahout-0.9
关于环境的安装部署请参考相关文章,这里不多加赘述。上面三个软件在我本机的都是部署在/home/hadoop-user/mahout_workspace/目录下。另外自己写的scout项目部署在/home/hadoop-user/scout_workspace/目录下
项目代码
项目代码已经放到Github上有兴趣的同学可以下载下来看下,重点查看bin目录下的脚本文件以及driver,export,analyzer等几个包下的java文件
整个项目架构分析
该项目的初始数据保存在MySQL中, 算法分析需要map/rece过程以及hdfs文件系统的参与, 最后将结果更新至MySQL,整个过程如图所示
F. 全概率公式和贝叶斯公式
一、全概率公式
全概率公式为概率论中的重要公式,它将对一复杂事件A的概率求解问题转化为了在不同情况下发生的简单事件的概率的求和问题。
内容:如果事件B1、B2、B3…Bi构成一个完备事件组,即它们两两互不相容,其和为全集;并且P(Bi)大于0,则对任一事件A有
P(A)=P(A|B1)P(B1) + P(A|B2)P(B2) + ... + P(A|Bi)P(Bi)。
或者:p(A)=P(AB1)+P(AB2)+...+P(ABi)),其中A与Bi的关系为交)。
二、贝叶斯公式
贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(A|B)=P(B|A)*P(A)/P(B)。
全概率公式和Bayes公式:
概率论的一个重要内容是研究怎样从一些较简单事件概率的计算来推算较复杂事件的概率,全概率公式和Bayes公式正好起到了这样的作用。
对一个较复杂的事件A,如果能找到一伴随A发生的完备事件组B1、B2```,而计算各个B的概率与条件概率P(A/Bi)相对又要容易些,这是为了计算与事件A有关的概率,可能需要使用全概率公式和Bayes公式。
G. 基于贝叶斯估计特征分布融合的目标分类方法是什么
贝叶斯法则
机器学习的任务:在给定训练数据D时,确定假设空间H中的最佳假设。
最佳假设:一种方法是把它定义为在给定数据D以及H中不同假设的先验概率的有关知识下的最可能假设。贝叶斯理论提供了一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。
应用
变分贝叶斯估计可以应用于完整的贝叶斯推断(full Bayesian inference),即对后验分布按因子展开进行近求解。在最大期望算法(Expectation-Maximization algorithm, EM)的E步中对隐变量后验分布的求解可以通过变分贝叶斯估计实现,形成变分贝叶斯EM(Variational Bayesian EM algorithm, VBEM)。
H. 贝叶斯网络学习
BN学习的目的就是要找到一个最能真实反映当前研究问题中现有的各研究对象之间相互依赖关系的BN模型,BN学习可以分为以下两个阶段:①结构学习(Structure Learn-ing),即网络拓扑结构的学习。②参数学习(Parameter Learning),即网络中每个节点变量的局部先验条件概率分布的学习。
比较简单的BN学习方法是先依据专家知识确定BN的拓扑结构,然后通过给定的样本数据学习BN的概率分布(参数)。比较复杂的BN学习方法是BN的拓扑结构和概率分布都是通过给定样本数据学习得出,这也是现在的研究热点。结构学习和参数学习是相互联系的,一方面BN的结构是由联合概率分布函数来直接决定;另一方面,节点的条件概率依赖于BN的拓扑结构。
2.2.1 贝叶斯网络结构学习
BN结构学习就是利用训练样本数据,寻找对数据和先验知识拟合的最好的网络拓扑结构。学习分为完备数据结构学习和不完备数据结构学习两种情况。目前,具有完备数据的 BN 结构学习方法比较成熟,而从不完备数据中学习 BN 结构比较困难,现有算法仍存在缺陷。
2. 2. 1. 1 具有完备数据的贝叶斯网络结构学习
当训练样本完备时,常用的 BN 结构学习算法可以分为两种: 基于搜索记分的方法和基于统计测试的方法。
( 1) 基于搜索评分的结构学习算法。基于搜索评分的结构学习算法将结构学习视为搜索最佳网络问题。其核心思想是: 首先添加任一条边,然后使用搜索方法添加新的边,最后利用评分函数评分,测试新旧网络分值的大小。学习的目的就是找到评分最大的结构。这是个连续进行的过程,直到老模型的分数不再比新模型的分数低为止。评分方法有很多,如基于熵的评分、最小描述长度( LMS) 的评分以及贝叶斯评分。这类算法有一个共同点: 为每个候选的 BN 定义一种评价网络结构与样本集吻合程度的测度,然后,通过遗传和进化算法、模拟退火法或者爬山算法搜索具有最佳测度的拓扑网络结构。
( 2) 基于统计测试的结构学习算法。该学习算法的核心思想是: 首先进行训练样本统计测试,尤其是测试条件独立性; 然后,利用节点集间的条件独立性构造 DAG( 有向无环图) ,以尽可能地囊括这些条件独立性,它将独立的概念从构造结构中分离出来。
具有代表性的统计测试的结构学习算法有: ①Spirtes 等( 1993) 提出 SGS 算法,是一个典型的用条件独立性测试确定拓扑结构的算法,该算法从无向完全图出发,如果相邻结点间存在无向分隔割集,则删除它们的边,然后通过统计测试来确定剩余边的方向。②Acid 等( 1999) 提出了有向图构造算法 EP,证明有向图模型无论是否为单连接结构都对分类问题的影响效果不大。③Cheng Jie 等( 2002) 年将统计测试与信息论结合,通过相互信息量的计算来确定节点间的条件独立性,用相互信息量代替条件独立测试,从而构造多连接有向图模型。
2. 2. 1. 2 缺失数据情况下的贝叶斯网络结构学习
在数据不完整的情况下,BN 结构学习会比较困难,现有的研究算法主要是基于打分的结构学习。数据不完备会导致出现以下两方面问题: ①一些充分统计因子不存在,导致无法直接进行结构打分; ②打分函数不再具有可分解形式,因此不能进行局部搜索。围绕这两方面问题相继出现了一些解决的方法,如 Friedman( 1997) 借鉴参数学习的选择 - 期望最大算法,提出模型的 EM 结构学习方法; Sebastian 等( 1997) 将 BC 算法应用于结构学习; Fried-man( 1998) 引入一种使用贝叶斯打分方法学习概率模型的新方法,贝叶斯结构期望最大算法,简称为 Bayesian - SEM 算法。
2. 2. 2 贝叶斯网络参数学习
BN 参数学习的目标是: 给定训练样本和网络拓扑结构,利用先验知识,确定 BN 模型各个节点处的条件概率。参数学习同样可以分为完备数据和不完备数据两种情况。数据完备时的参数学习算法包括由 Fayyad( 1990) 提出的贝叶斯估计方法和 Spiegelhalter( 1996) 提出的最大似然估计 ( MLE) 方法; 从不完备的数据中学习概率参数的算法主要有 Gibbs 样本法( Heckerman,1995) 和期望-最大 ( EM) 算法( Spiegelhalter,1990; Mallet,1991; Lauritzen,1991等) 。
2. 2. 3 贝叶斯网络推理
概率推理是 BN 应用的主要目的之一。BN 推理是根据某些已知给定值的节点,估计未知节点的值。即在给定一个 BN 模型的情况下,依据已知条件,利用贝叶斯概率中条件概率的计算方法,计算出所感兴趣的目标节点发生的概率。在 BN 推理中主要包括以下 3 种推理方式:
( 1) 因果推理: 也称自上向下的推理,目的是由原因推出结论。已知证据 ( 原因) ,根据BN 的推理计算,求出在该证据 ( 原因) 发生的情况下结果发生的概率。
( 2) 诊断推理: 也称自下向上的推理,目的是由结论推出原因。是在已知结果情况下,根据 BN 推理计算,得到导致该结果发生的原因即其发生的概率。该推理常用在故障诊断、病理诊断中,目的是找到故障发生、疾病发生的原因。
( 3) 支持推理: 目的是对原因之间的相互影响进行分析,提供用以支持所发生现象的解释。
BN 推理算法大体可以分为精确推理算法和近似推理算法两大类。理论上,所有类型的 BN 都可以用精确推理算法进行概率推理,但实际上 BN 精确推理是一个 NP-hard 问题( Cooper,1990) ,尤其当模型结构较复杂、包含大量的变量时,精确推理就变得尤为困难。而近似推理相比精确推理来说,是解决复杂网络模型的一个较好办法,它可以大大简化计算和推理过程。因此,现阶段 BN 研究中许多情况下都采用近似算法。
I. matlab实现EM算法
1. EM算法程序:
http://www.mathworks.com/matlabcentral/fileexchange/3713-em-algorithm-for-clustering-emfc-m
2. EM image segmentation:
http://www.mathworks.com/matlabcentral/fileexchange/10956-em-image-segmentation
3. 贝叶斯图像分割程序:(Bayseian image segmentation)
没有找到合适的程序代码 :-(
J. em算法是什么
最大期望算法(Expectation-Maximization algorithm, EM),或Dempster-Laird-Rubin算法,是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法 ,通常作为牛顿迭代法(Newton-Raphson method)的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计。
EM算法的标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值 。EM算法是MM算法(Minorize-Maximization algorithm)的特例之一,有多个改进版本,包括使用了贝叶斯推断的EM算法、EM梯度算法、广义EM算法等 。
由于迭代规则容易实现并可以灵活考虑隐变量,EM算法被广泛应用于处理数据的缺测值 ,以及很多机器学习(machine learning)算法,包括高斯混合模型(Gaussian Mixture Model, GMM) 和隐马尔可夫模型(Hidden Markov Model, HMM) 的参数估计。