- 浏览: 2590813 次
- 来自: 杭州
文章分类
- 全部博客 (1190)
- webwork (4)
- 网摘 (18)
- java (104)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (15)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (8)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
Aqu415:
,默认是netty还是hassion?
dubbo入门 -
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介
上面《MaxEnt: 最大熵模型(Maximum Entropy Models)(一)》 其实就是讲了下熵,下面我们继续最大熵模型(Maximum Entropy Models)。
最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情 况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫“最大熵模型”。我们常说,不要把所有的鸡蛋放在一个篮子 里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。说白了,就是要保留全部的不确定性,将风险降到最小。---- 摘自《Google黑板报》作者:吴军
========
继续用【参考5】的例子。
“学习”这个词可能是动词,也可能是名词。可以可以被标为主语、谓语、宾语、定语……
令x
1
表示“学习”被标为名词, x
2
表示“学习”被标为动词。令y
1
表示“学习”被标为主语, y
2
表示被标为谓语,y
3
表示宾语, y
4
表示定语。得到下面的表示:
p ( x 1 ) + p ( x 2 ) = 1 ∑ i = 1 4 p ( y i ) = 1
如果没有其他的知识,根据信息熵的理论,概率趋向于均匀。所以有:
p ( x 1 ) = p ( x 2 ) = 0.5 p ( y 1 ) = p ( y 2 ) = p ( y 3 ) = p ( y 4 ) = 0.25
但是在实际情况中,“学习”被标为定语的可能性很小,只有0.05。我们引入这个新的知识:p ( y 4 ) = 0.05 ,在满足了这个约束的情况下,其他的事件我们尽可能的让他们符合自然,符合均匀分布:
p ( x 1 ) = p ( x 2 ) = 0.5 p ( y 1 ) = p ( y 2 ) = p ( y 3 ) = 0.95 3
嗯,如果再加入一个知识,当“学习”被标作动词的时候,它被标作谓语的概率为0.95,这个其实是很自然的事情。都已经是动词了,那么是谓语的可能性就很大了:
p ( y 2 | x 1 ) = 0.95
已经有了两个知识了,第二个还是条件概率的知识,那么其他的我们尽可能的让他们不受约束,不受影响,分布的均匀一些,现在应该怎么让他们符合尽可能的均匀分布呢?
其实就是使熵尽可能的大就行了。也就是有个分布p,他尽可能的把训练集中的知识表示出来,损失最小,并且还能够保证p的熵最大:
p ∗ = arg max p H ( p )
那约束是什么呢?
用概率分布的极大似然对训练语料表示如下,其中是C o u n t ( x , y ) 在语料中出现的次数,N为总次数:
p ˉ ( x , y ) = 1 N × C o u n t ( x , y )
在实际问题中,由于条件x和结果y取值比较多样化,为模型表示方便起见,通常我们将条件x和结果y表示为一些二制特征。对于一个特征( x 0 , y 0 ) ,定义特征函数:
f ( x , y ) = { 1 : y = y 0 & x = x 0 0 : o t h e r s
特征函数在样本中 的期望值为:
p ˉ ( f ) = ∑ ( x i , y i ) p ˉ ( x i , y i ) f ( x i , y i )
其中p ˉ ( x , y ) 在前面已经数了,数数次数就行。
有了训练集,我们就能够训练一个模型出来,特征f在这个模型中 的期望值为:
p ( f ) = ∑ ( x i , y i ) p ( x i , y i ) f ( x i , y i ) = ∑ ( x i , y i ) p ( y i | x i ) p ( x i ) f ( x i , y i ) = ∑ ( x i , y i ) p ( y i | x i ) p ˉ ( x i ) f ( x i , y i )
其中p ˉ ( x i ) 为x出现的概率,数数归一化就行。
好了,约束来了,有了样本的分布,有了模型,那么对每一个特征(x,y),模型所建立的条件概率分布要与训练样本表现出来的分布相同:
p ( f ) = p ˉ ( f )
==========
目标函数有了,约束有了,归纳一下最大熵模型(Maximum Entropy Models)。
p ∗ = arg max p ∈ P H ( Y | X )
P={p|p是y|x的概率分布并且满足下面的条件},对训练样本,对任意给定的特征f i :
p ( f i ) = p ˉ ( f i )
展开:
p ∗ = arg max p ∈ P ∑ ( x , y ) p ( y | x ) p ˉ ( x ) log 1 p ( y | x )
约束P为:
P = ⎧ ⎩ ⎨ ⎪ ⎪ ⎪ ⎪ p ( y | x ) ∣ ∣ ∣ ∣ ∣ ∀ f i : ∑ ( x , y ) p ( y | x ) p ˉ ( x ) f i ( x , y ) = ∑ ( x , y ) p ˉ ( x , y ) f i ( x , y ) ∀ x : ∑ y p ( y | x ) = 1 ⎫ ⎭ ⎬ ⎪ ⎪ ⎪ ⎪
========
都齐了,该求解了吧?哈哈,有没有看过wiki上的关于拉格朗日乘子Lagrange Multiplier 的问题,恰好这里面有个例子就是求最大熵的,哈哈。所以我们可以用拉格朗日乘子法来求解。
对于有k个约束的优化问题:
可以引入k个拉格朗日算子
,那么拉格朗日函数为:
OK,咱们开始一步一步的带入求解∂ L ∂ p = 0 。
由于约束中有两部分组成,对于第二部分,我们引入拉格朗日算子为γ :
下面就是就偏微分=0计算最优解了:
求得最优解的参数形式:
但是里面还有参数,所以我们必须求得γ ∗ 和Λ ∗ 。
巧妙的是我们发现最后节的后面部分有个类似的常数项:
而且有意思的是,前面问题的第二个约束中有:
从而:
也就是式子中的关于γ 的常数项我们用关于Λ 的常数项进行代替了,这样参数就剩下一个了:
那么剩下的一个参数Λ 应该怎么进行求解呢?
解法以及最大熵模型与最大似然估计的关系在参考5中很详细,还有GIS以及IIS的方法进行求解,以后再写《MaxEnt: 最大熵模型(Maximum Entropy Models)(三)》。
发表评论
-
ConcurrentHashMap 的实现原理
2016-06-12 15:37 571概述 我们在之前的博文中了解到关于 HashMap 和 ... -
BloomFilter——大规模数据处理利器
2016-04-25 15:09 565参考:http://www.cnblogs.com/hea ... -
Base64笔记
2014-05-08 16:32 642原文:http://www.ruanyif ... -
运算符的优先级
2014-02-21 22:06 936很久没有去深究运算符的优先级了,今天写SQL解析思考了一下。 ... -
beansdb使用的压缩算法-Quicklz压缩算法
2014-02-09 20:17 0据这里http://blog.yufeng.i ... -
跳表SkipList的原理和实现
2014-02-07 17:29 984参考:跳表SkipList的原理和实现 -
一种高效无锁内存队列的实现
2014-02-06 10:59 1965原文:http://www.searchtb. ... -
拆分文件统计topN的问题
2014-01-20 18:48 986如果对一个只包含ip地址文件进行统计,需要求出频率最高的前 ... -
Integer的numberOfLeadingZeros方法解释
2014-01-13 20:42 1062int numberOfLeadingZeros(int i ... -
rank排名算法整理
2014-01-07 13:44 10951.Delicious.com 热门书签排行榜 按照&q ... -
利用switch判断各种case
2013-12-27 16:35 0String env = "daily" ... -
如何创建一个短链服务
2013-12-26 16:23 0参考: http://stackoverflow.com ... -
HAProxy的独门武器:ebtree
2013-12-07 18:57 966原文:http://tech.uc.cn/?p= ... -
统计单词出现频率
2013-10-07 20:58 885这里有一个大文本,文件请从 http://10.125.9 ... -
Reddit评论排名算法
2013-03-16 00:48 1524上一篇文章介绍了Reddit的排名算法,今天继续上一篇文章 ... -
大数据量,海量数据 处理方法总结
2013-01-13 23:46 1095大数据量的问题是很多面试笔试中经常出现的问题,比如bai ... -
STL系列
2013-01-13 23:42 896STL系列之一 deque双向队列 STL系 ... -
java Map排序(按key和按value)
2012-12-10 15:54 93111、按照key排序 对于java中Map的排序,有排序Map ... -
算法文档集合
2012-11-24 15:59 854Treelink算法介绍 一些基础算法介绍 ... -
各种进制基础知识
2012-11-06 14:37 96010进制是人类最熟悉的数字计算 2进制是机器最基本的单位 ...
相关推荐
这篇文章是 opennlp 中最大熵模型实现的参考文档,对最大熵模型从原理、示例到实现都讲得非常清晰,配合代码学习受益匪浅。
最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策...
最大熵模型(Maximum Entropy Models, MEMs)是基于最大熵理论的统计模型, 广泛应用于模式识别和统计评估中。最大熵原理有一个很长的历史,其中最大熵理论方面的 先驱E.T.Jaynes 在1990 年给出了最大熵原理的基本...
基于最大熵图像插值Maximum Entropy插值算法的图像超分辨重构研究(Matlab代码).zip 如有疑问,可联系博主。
最大熵模型(Maximum Entropy Model,以下简称MaxEnt),MaxEnt 是概率模型学习中一个准则,其思想为:在学习概率模型时,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要满足一些约束,则最大熵原理就是...
最大熵模型及其应用 最大熵模型及其应用 最大熵模型及其应用 代码+说明文档
挺好的,基于最大熵模型的分词技术研究基于最大熵模型的分词技术研究
揭开机器学习的面纱:最大熵模型100行代码实现[Python版] - 纯净的天空.pdf
关于“最大熵模型”的论文。大家有需要,可以的、下载来研究
最大熵模型代码
最大熵模型简介【例子+推导+GIS求解】.pdf 最大熵模型
实现了最大熵模型!可以直接被调用。从而进行文本分类
介绍matlab中最大熵模型及解法,并进行详细介绍和学习!
最大熵模型与EM算法
翻译的关于最大熵模型的文章,并加入自己的相关推导。
基于统计机器学习(最大熵模型、马尔科夫模型、条件随机场)和深度学习LSTM-CRF的中文分词python源码+详细代码注释+数据集最大熵模型、马尔科夫模型、条件随机场、LSTM-CRF 中文分词BIO 基于统计机器学习(最大熵模型、...
采用了最大熵(Maximum Entropy,ME)模型从无限制的文本中预测语调短语,并且提出了一个自动生成特征模板的层次聚类算法,从而减少了最大熵模型训练过程中的人工参与。实验结果表明,对于语调短语预测而言,最大熵...
Steven J. Phillips 基于最大熵理论在Java环境下创建的模型,主要用于物种生态位的模拟,国内多用于物种分布模型的研究。