草庐IT

学习笔记:统计建模方法的比较分析

倾城一少 2023-10-31 原文

前言

本文介绍了隐马尔可夫模型 (HMM)、最大熵马尔可夫模型 (MEMM) 和条件随机场 (CRF) 的比较分析。 HMM、MEMM 和 CRF 是三种流行的统计建模方法,通常应用于模式识别和机器学习问题。 让我们更详细地探讨每种方法。

一、隐马尔可夫模型 (HMM)

“隐藏”一词象征着只有系统发布的符号是可观察的,而用户无法查看状态之间的底层随机游走。 该领域的许多人将 HMM 视为有限状态机。

    • HMM的优势

HMM 具有强大的统计基础和高效的学习算法,可以直接从原始序列数据中进行学习。 它允许以本地可学习方法的形式一致地处理插入和删除惩罚,并且可以处理可变长度的输入。 它们是序列概况最灵活的概括。 它还可以执行多种操作,包括多重对齐、数据挖掘和分类、结构分析和模式发现。 它也很容易组合到库中。

    • HMM 的缺点

  • HMM 仅依赖于每个状态及其对应的观察对象:

  • 序列标注,除了与单个词有关系外,还与观察到的序列长度、词上下文等方面有关。

  • 目标函数和预测的目标函数不匹配:HMM得到的是状态和观测序列的联合分布P(Y, X),而在估计问题上,我们需要一个条件概率P(Y|X)。

二、最大熵马尔可夫模型 (MEMM)

MEMM 考虑了相邻状态和整个观察序列之间的依赖关系,因此具有更好的表达能力。 MEMM不考虑P(X),减少建模工作量,学习目标函数与估计函数的一致性。

    • MEMM 标签偏差

在上图 中,状态 1 倾向于转换为状态 2,同时状态 2 倾向于停留在状态 2。

P(1-> 1-> 1-> 1)= 0.4 x 0.45 x 0.5 = 0.09, P(2->2->2->2)= 0.2 x 0.3 x 0.3 = 0.018,

P(1->2->1->2)= 0.6 x 0.2x 0.5 = 0.06,P(1->1->2->2)= 0.4 x 0.55 x 0.3 = 0.066。

然而,最佳状态转换路径是 1 > 1 > 1 > 1。 为什么?

这是因为 State 2 的可转换状态比 State 1 多,从而降低了转换概率——MEMM 倾向于选择可转换状态较少的状态。 这种选择被称为标签偏差问题。 CRF 很好地解决了标签偏差问题。

三、条件随机场(CRF 模型)

CRF 模型解决了标注偏差问题,消除了 HMM 中两个不合理的假设。 当然,模型也变得更复杂了。MEMM采用局部方差归一化,CRF采用全局方差归一化。另一方面,MEMM 无法找到满足以下分布的相应参数,但是 CRF 可以:

1.生成模型或判别模型

假设 o 是观测值,m 是模型。

a) 生成模型:无限样本>概率密度模型=生成模型>预测

如果你对 P(o|m) 建模,它就是一个生成模型。 其基本思想是,首先建立样本的概率密度模型,然后利用该模型进行推理预测。 样本无限大或尽可能大的要求是常识。 该方法借鉴了统计力学和贝叶斯理论。

HMM直接对转移概率和表型概率进行建模,计算共现概率。 因此,它是一个生成模型。

b) 判别模型:有限样本>判别函数=判别模型>预测

如果你在条件概率 P(m|o) 上建模,它就是判别模型。 其基本思想是以有限样本建立判别函数,不考虑样本的生成模型,直接研究预测模型。 其代表理论是统计学习理论。

CRF是一种判别模型。 MEMM 不是生成模型,而是基于状态分类的具有有限状态的模型。

2.拓扑结构

HMM和MEMM是有向图,而CRF是无向图。

3.全局最优或局部最优

HMM直接对转移概率和表型概率进行建模,计算共现概率。

MEMM 基于转移概率和表型概率建立共现概率。 它计算条件概率,只采用局部方差归一化,容易陷入局部最优。

CRF 在全局范围内计算归一化概率,而不是像 MEMM 那样在局部范围内计算。 它是一个最优的全局解决方案,解决了 MEMM 中的标签偏差问题。

4.CRF的优点和缺点

(1)优点

与HMM相比:由于CRF没有HMM那样严格的独立性假设,它可以容纳任何上下文信息。 其功能设计灵活(与ME相同)。

与MEMM相比:由于CRF计算的是全局最优输出节点的条件概率,因此克服了MEMM中label bias的弊端。

与ME相比:CRF计算的是在有待标记的观察序列时,整个标记序列的联合概率分布,而不是定义给定当前状态条件下下一个状态的状态分布。

(2)缺点

CRF 在算法的训练阶段具有高度的计算复杂性。 当更新的数据可用时,很难重新训练模型。

结论

这篇博客详细介绍了隐马尔可夫模型 (HMM)、最大熵马尔可夫模型 (MEMM) 和条件随机场 (CRF) 之间的比较分析。 在这篇文章中,我们明确了解到 CRF 和 MEMMS 主要是判别序列模型,而 HMM 主要是生成序列模型。 贝叶斯规则构成了 HMM 的基础。 相反,CRF 和 MEMM 基于过渡和可观察特征的 MaxEnt 模型。

有关学习笔记:统计建模方法的比较分析的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  5. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  6. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  7. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  8. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  9. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  10. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

随机推荐