Topic Model的分类和设计原则

http://blog.csdn.net/xianlingmao/article/details/7065318

topic model的介绍性文章已经很多,在此仅做粗略介绍,本文假设读者已经较为熟悉Topic Medel。

Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文档集合作为描述对象,其他的数据集合只需换掉对应的术语即可)是由隐含在数据集合背后的topic set 生成的,这个set中的每一个topic都是词的概率分布。对于文档中的每一篇文档,先抽取一个topics proportion \theta;然后对于这个文档中的每一个词的位置 w_i, LDA 先从\theta中选择一个topic,然后再从这个topic对应的词分布中选择一个词去填充;按照上述步骤直到整个文档集合产生完毕。

上述是LDA生成一个文档集合过程的简要介绍,下面我会把目前出现的topic models进行分门别类。

我认为topic models主要可以分为四大类:1)无监督的、无层次结构的topic model;2)无监督的、层次结构的topic model;3)有监督的、无层次结构的topic model;4)有监督的、层次结构的topic model。

对于1)主要有: PLSA, LDA, Correlated Topic Model, PAM,Concept Topic Model等

对于2)主要有: HLDA, HDP,HPAM等

对于3)主要有: S-LDA, Disc-LDA, MM-LDA, Author-Model, Labeled LDA, PLDA 等等

对于4)主要有: hLLDA, HSLDA

以上模型对应的文章名字,用google直接搜索即可得到,这里就不列出。

很多人都在或者想使用已有的Topic Model,当然最理想的应该是我们自己设计适合我们问题的topic model来解决问题。

然而这是很难的一个问题,一方面我们需要较为合理地设计适合问题的模型;另外一方面还需要较为强的数学基础去为自己的模型做相关的数学推导,如参数学习和推理。

在这里,就我自己的经验,总结了一下topic model设计中的一些设计原则:

A. 在topic model的设计中,非常关键的一点是怎么看待topic,下面是一些总结:

1). 把topic看为一个词的分布,这是最基本的;如LDA等模型

2). 不仅把topic看做是一个词的分布,而且topic还可以是一堆topic的分布,即建立了topic之间的层次关系;如HPAM模型等

3). 把topic对应于标签,即一个topic有对应的一个标签,这样就可以建立有监督的topic model;如labeled LDA模型等

B. 另外,在topic model中建立有监督模型的方法大概有两类:一类是生成式的;一类是判别式的

对第一类,主要是把标签看为了一个topic,从而建立一个概率模型,用数据去训练得到参数,然后去应用;如labeled LDA, HLLDA等

对第二类,主要是先应用topic model的方法建模相应的变量,然后认为标签和这些变量存在某种关系,如回归关系(S-LDA)或者正态分布等;例如HSLDA等模型

C. 如何建立层次关系

目前主要有这样几种方法:

1). 用Hierarchical Dirichlet process去建立层次关系,比较有名的模型,如HDP,HLDA等;

2).  人工指定存在某种层次关系,然后去刻划之间的关系,如HPAM/PAM模型;

3).  在有监督的模型,这种层次关系已经存在(例如标签是一个层次结构),一种处理方法是认为这些标签都是topic,然后用概率模型去刻划变量之间的关系,如labeled LDA;

至于如何进行推理和学习,常用的方法有EM算法,变分推断方法,Gibbs采样方法等,最主要还是最后两种方法,

其中最简单的是Gibbs采样方法,最容易理解,然后是EM算法,最后变分推断方法是最难的,需要较多数学基础,由于内容多,这里只作简单的介绍,以后有时间再详细的写写。

EM算法:这个是PLSA论文里面用到的方法,在数学领域早已有之,它其实不是一个算法,而是一类问题进行近似计算的理论框架,主要的思想就是在Q函数的基础上进行迭代,最后逼近最优值,值得注意的是,最后的值不一定是全局最优值,很大可能是局部最优,这个算法相对较为简单,花上几个小时应该能够弄明白;

变分推断方法:这个方法的基本思想是,如果一个分布很难求,我们就找一个容易求的近似分布来代替它,如何来刻划近似呢?就是用KL度量来衡量两个分布的近似程度,在得到容易求的近似分布之后,问题就变简单了。

Gibbs采样方法:这个算法的基本思想是:用来自一系列的容易采样的条件分布的样本来得到对应的全概率分布的样本,从而用这些样本来求取相应的统计量,这里的理论基础是这一系列的条件分布在经过一段时间采样后会达到平衡分布,这个平衡分布就是要求取的全概率分布。这里说得较为简单抽象,具体详细内容请参考蒙特卡罗方法的相关书籍。

Topic Model的分类和设计原则的更多相关文章

  1. Java设计模式01:设计模式的 分类 和 设计原则

    一.总体来说设计模式分为三大类: 创建型模式:对象的创建. 创建对象本身是比较耗时的操作,所以我们这里专门找人来帮我们创建对象,我们根据经验总结出来的设计成熟的思路模式. 结构型模式:对象的组成(结构 ...

  2. Mysql高级操作学习笔记:索引结构、树的区别、索引优缺点、创建索引原则(我们对哪种数据创建索引)、索引分类、Sql性能分析、索引使用、索引失效、索引设计原则

    Mysql高级操作 索引概述: 索引是高效获取数据的数据结构 索引结构: B+Tree() Hash(不支持范围查询,精准匹配效率极高) 树的区别: 二叉树:可能产生不平衡,顺序数据可能会出现链表结构 ...

  3. 设计模式学习总结(一)——设计原则与UML统一建模语言

    一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...

  4. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

  5. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  6. GOTO Berlin: Web API设计原则

    在邮件列表和讨论区中有很多与REST和Web API相关的讨论,下面仅是我个人对这些问题的一些见解,并没有绝对的真理,InnoQ的首席顾问Oliver Wolf在GOTO Berlin大会上开始自己的 ...

  7. java 28 - 1 设计模式 之 面向对象思想设计原则和模版设计模式概述

    在之前的java 23 中,了解过设计模式的单例模式和工厂模式.在这里,介绍下设计模式 面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设 ...

  8. 【转】基于LDA的Topic Model变形

    转载自wentingtu 基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人.我主要关注了下面这位大牛和他的学生:David M. B ...

  9. SOA 的基本概念及设计原则浅议

    SOA是英文词语"Service Oriented Architecture"的缩写,中文有多种翻译,如"面向服务的体系结构"."以服务为中心的体系结 ...

随机推荐

  1. 使用 IntraWeb (17) - 基本控件之 TIWRadioButton、TIWRadioGroup、TIWCheckBox

    TIWRadioButton //单选 TIWRadioGroup //单选组 TIWCheckBox //复选 TIWRadioButton 所在单元及继承链: IWCompRadioButton. ...

  2. Java 与 .NET 的平台发展之争

    Java 8即将正式发布,从早期版本中,我们已经可以领略到一些令人兴奋的特性.但是开发者Andrew C. Oliver表示,尽管如此,Java语言在某些特性上还是落后于.Net.比如,Java 8中 ...

  3. Why I Left the .NET Framework

    The .NET Framework was good. Really good. Until it wasn't. Why did I leave .NET? In short, it constr ...

  4. mycat应用场景

    mycat应用场景 以下是几个典型的应用场景:单纯的读写分离,此时配置最为简单,支持读写分离,主从切换分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片多租户应用,每个应用一个库, ...

  5. 奇怪的问题,疑惑?不用的 User agent 居然gzip不一样?

    问题描述: 使用同一款浏览器(Chrome Version 41.0.2272.118 (64-bit)),访问同一个地址:http://www.skhktown.com/hkcity/resourc ...

  6. UINavigationController 、UINavigationBar 、UINavigationItem 超清晰直观详解(扩展)

    ios开发中如何隐藏各种bar 状态条Status Bar [UIApplication sharedApplication].statusBarHidden = YES; 或者 // iOS3.2+ ...

  7. IOS应用发布NSLog的注释及使用重定向,把控制台内容写入文件

    1 选择工程的Target -> Build Settings -> Preprocessor Macros. 如图,默认 Debug项,是“DEBUG=1”. 2 在程序中设置全局宏定义 ...

  8. C#编程(十六)----------匿名类型

    匿名类型 var和new关键字一起使用,可以创建匿名类型. 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用 ...

  9. 【jvm】java查看内存使用jmap,jstat和jstack使用 ,docker启动服务下查看jvm使用情况

    [声明,如果是docker启动的服务,可以在进入容器内后,再使用如下命令操作] [docker exec -it 容器ID  /bin/bash     即可进入容器内] [如果不是docker启动的 ...

  10. ios成长之每日一遍(day 7)

    今天到UITabBarController 结合 UIPickView, 这里一共有5个实现, 由浅到易. 其实在IB上面使用UITabBarController很简单, 就像平常拖控件一样拖到界面上 ...