科学网

 找回密码
  注册

tag 标签: likelihood

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

[转载]最大似然估计(Maximum likelihood estimation)
wangdongice 2012-9-21 16:48
转自: http://www.cnblogs.com/liliu/archive/2010/11/22/1883702.html 最大似然估计 提供了一种 给定观察数据来评估模型参数 的方法,即:“ 模型已定,参数未知 ”。简单而言,假设我们要统计全国人口的身高,首先 假设这个身高服从服从正态分布 (注:模型已知,包括模型的超参数已知,比如假设数据服从多项式曲线,那么多项式的阶数应该是已知的) ,但是 该分布的均值与方差未知 。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。 最大似然估计中采样需满足一个很重要的假设,就是所有的采样都是独立同分布的。(i.i.d 假设) 下面我们具体描述一下最大似然估计: 首先,假设 为独立同分布的采样, θ 为模型参数, f 为我们所使用的模型,遵循我们上述的独立同分布假设。参数为 θ 的模型 f 产生上述采样可表示为 回到上面的“模型已定,参数未知”的说法,此时,我们已知的为 ,未知为 θ ,故似然定义为:      在实际应用中常用的是两边取对数,得到公式如下:   其中 称为 对数似然 (注:对数操作将连乘积的形式变成连加和的形式,方便后续操作;这是一个无限制最优化问题,极值取在导数为0处) ,而 称为平均对数似然。而我们平时所称的最大似然为最大的对数平均似然,即:    举个别人博客中的例子,假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我 们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少? 很多人马上就有答案了:70%。而其后的理论支撑是什么呢? 我们假设罐中白球的比例是 p ,那么黑球的比例就是 1-p 。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。这里我们把一次抽出来球的颜色称为一次抽样。题目中在一百次抽样中,七十次是白球的概率是 P(Data | M), 这里Data是所有的数据,M是所给出的模型,表示每次抽出来的球是白色的概率为 p 。如果第一抽样的结果记为 x1 ,第二抽样的结果记为 x2... 那么 Data = (x1,x2,…,x100)。 这样,      P(Data | M)      = P(x1,x2,…,x100|M)      = P(x1|M)P(x2|M)…P(x100|M)      = p^70(1-p)^30 . 那么 p 在取什么值的时候, P(Data |M) 的值最大呢?将 p^70(1-p)^30 对 p 求导,并其等于零。      70p^69(1-p)^30-p^70*30(1-p)^29=0。     解方程可以得到 p=0.7 。 (注:额!!这么看肿么看得出来,应该这样子:logP(Data|M)=70logp+30log(1-p), 再对p求导,70(1/p)-30 =0, p=0.7 ) 在边界点 p=0,1,P(Data|M)=0。 所以当 p=0.7 时, P(Data|M) 的值最大。这和我们常识中按抽样中的比例来计算的结果是一样的。 假如我们有一组连续变量的采样值 (x1,x2,…,xn), 我们知道这组数据服从正态分布,标准差已知。请问这个正态分布的期望值为多少时,产生这个已有数据的概率最大?      P(Data | M) = ? 根据公式      可得:    对μ求导 可得 ,则最大似然估计的结果为 μ=(x1+x2+…+xn)/n (注:同上,取对数啊啊啊!!!) (心得:取对数之所以有效,因为极大似然函数假设独立同分布,联合概率都会写成连乘积的形式,而且经常会出现指数分布群,所以取对数往往会让问题变得简单*_*) 由上可知最大似然估计的一般求解过程:   (1) 写出似然函数;   (2) 对似然函数取对数,并整理;   (3) 求导数 ;   (4) 解似然方程 注意: 最大似然估计只考虑某个模型能产生某个给定观察序列的概率。 而 未考虑该模型本身的概率 (注:极大似然估计将模型的参数当带估计的常数,而贝叶斯估计将模型的参数也当成随机变量) 。 这点与贝叶斯估计区别。贝叶斯估计方法将在以后的博文中描述 本文参考 http://en.wikipedia.org/wiki/Maximum_likelihood http://www.shamoxia.com/html/y2010/1520.html
个人分类: 模式识别,机器学习基础|3537 次阅读|0 个评论
R中的极大似然估计
热度 2 zjlcas 2012-6-25 09:42
R中的极大似然估计
R中的极大似然估计 张金龙 jinlongzhang01@gmail.com 人们经常用样本(sample)来估计总体(population)的参数, 假定一个概率密度函数,如正态分布,并给出所有可能的参数组合,那么每一种参数组合所生成当前样本的可能性分别有多大?将最可能产生当前样本的参数,作为总体参数的估计,这就是极大似然(Maximum Likelihood)思想的体现。 在实际的计算中, 人们往往需要先假定某一概率密度, 如正态分布, $p.d.f. (y) = \frac{1} {\sqrt{2 \pi} \sigma} e^{-1/2 \frac{(y- \mu)^2} {\sigma^2}}$ pdfi - 1/(sqrt(2*pi)*sigma) * exp(-1/2 * (obs - mu)^2/(sigma^2)) 其中, obs为某一次观测值 mu 为 总体平均值的任意估计值 sigma 为 总体标准差的任意估计值, 则可以求得观测到该次观测值的概率 pdfi 对所有的样本数据的概率密度相成, 即获得联合概率密度, 即似然函数。 似然函数 L = pdf1 * pdf2 * pdf3 * ... * pdfn $L = \prod_{i=1}^n \frac{1} {\sqrt{2 \pi} \sigma} e^{-1/2 \frac{(y- \mu)^2} {\sigma^2}}$ 那么,什么样的参数, 才能保证Likelihood函数取最大值? 由于联合概率密度的值往往非常小,在计算机中难以处理,一般情况下, 将似然函数取对数, 便于数值操作。 此时,做一系列的变换。 : 如: $LogL = \sum_{i=1}^n \log\left ( \frac{1} {\sqrt{2 \pi} \sigma} e^{-1/2 \frac{(y- \mu)^2} {\sigma^2}} \right )$ $LogL= \sum_{i=1}^n \left $ $LogL= \sum_{i=1}^n \log(2 \pi)^{-1/2} + \sum_{i=1}^n \log\left (\frac{1} {\sigma}\right ) + \sum_{i=1}^n \left ( -1/2 \frac{(y- \mu)^2} {\sigma^2} \right )$ $LogL= -\frac{n} {2} \log(2 \pi) - n \log(\sigma) - \frac{1} {2 \sigma^2} \sum_{i=1}^n ( y - \mu)^2$ 若认为LogL为$\mu$的函数, 若保证LogL最大值,令 $\sum_{i=1}^n ( y - \mu)^2$ 取最大值,则 $\mu = \frac{\sum_{i=1}^n y_i}{n}$ 另外一方面, 若认为LogL为$\sigma$的函数, 将LogL函数对$\sigma$求导, 令导数为0, 可求得极值。 $\frac{\delta LogL}{\delta \sigma} = -\frac{n}{\sigma} - (-2) \frac{1}{2} \sum_{i=1}^n (y - \mu)^2 \sigma^{-3}$ $\frac{\delta LogL}{\delta \sigma} = -\frac{n}{\sigma} + \frac{1}{\sigma^2} \sum_{i=1}^n (y - \mu)^2$ 令导数为0, 得 $\frac{n}{\sigma} = \frac{1}{\sigma^3} \sum_{i=1}^n (y - \mu)^2$ $\sigma^2 = \frac{\sum_{i=1}^n (y - \mu)^2}{n}$ 此时, 带入之前$\mu$,求得$\sigma$的估计 $\hat{\sigma}^2 = \frac{\sum_{i=1}^n (y - \bar{y})^2}{n}$ 用极大似然估计求得的$\sigma$值为有偏估计, 即样本的最可能取值。 以上是解析解。 在实际情况下, 人们常用多种优化方法, 求得极大似然估计的数值解。 这些方法包括 "Nelder-Mead" (Nelder and Mead ,1965), "BFGS" (Broyden, Fletcher, Goldfarb and Shanno, 1970), "CG" (Fletcher and Reeves,1964), "L-BFGS-B" (Byrd et. al. ,1995) , "SANN" (Belisle 1992), 等。 由此看来, 极大似然估计, 首先是按照假定的概率密度, 求得联合概率密度, 即似然函数,进一步写成对数似然函数, 再用数值优化的方法, 求得对数似然函数所对应的点(各参数)。即获得参数的极大然估计。 下面提供一个实例: 问题: 假设一批树木中抽取若干个体,胸径分别为 150, 124, 100, 107, 170, 144, 113, 108, 92, 129, 123, 118,试求这批树木胸径的平均值和标准差。 分析: 如果用这批样本数据直接计算平均值和方差, 可以得到总体平均值和标准差的估计。 dat - c(150, 124, 100, 107, 170, 144, 113, 108, 92, 129, 123, 118) mean(dat) 123.1667 ### 求样本平均值 mean.sample - sum(dat)/length(dat) ### 设置空向量 var.sample - c() for(i in 1:length(dat)){ var.sample - (dat - mean.sample)^2 } dd - sum(var.sample) ## 求样本标准差 sqrt(dd/(length(dat))) ## 求总体标准差 sqrt(dd/(length(dat) - 1)) 以上是普通的估计方法 下面用极大似然方法估计 ########################################################################### ### 联合概率密度 like = function(data, mu, sigma) { like = 1 for(i in 1:length(data)){ # like = like *( 1/(sqrt(2*pi)*sigma) * exp(-1/2 * (data - mu)^2/(sigma^2))) like = like * dnorm(x = dat , mean = mu, sd = sigma) } return(like) } like(dat, 120, 20) ### 对数似然函数 loglike = function(data, mu, sigma) { loglike = 0 for(i in 1:length(data)){ loglike = loglike + log(dnorm(x = dat , mean = mu, sd = sigma)) } return(loglike) } loglike(dat, 122, 20) ### 扩展参数组合 params = expand.grid(mu = seq(50, 200, 1), sigma = seq(10, 40, 1)) LogLik.surf = with(params, loglike(dat, mu, sigma)) dim(LogLik.surf) - c(length(seq(50, 200, 1)), length(seq(10, 40, 1))) library(lattice) contourplot(LogLik.surf ~ mu*sigma, data = params, cuts = 20) # Zooming in params = expand.grid(mu = seq(120, 126, 0.01), sigma = seq(18, 25, 0.1)) LogLik.surf.zoom = with(params, loglike(dat, mu, sigma)) dim(LogLik.surf.zoom) - c(length(seq(120, 126, 0.01)), length(seq(18, 25, 0.1))) library(lattice) contourplot(LogLik.surf.zoom ~ mu*sigma, data = params, cuts = 20, region = TRUE) ### nlm进行极大似然优化, 需要提供初始值 ### 对数似然函数 loglike000 = function(p) { loglike = 0 for(i in 1:length(dat)){ loglike = loglike + log(dnorm(x = dat , mean = p , sd = p )) } return(-loglike) } (MLEst - nlm(f = loglike000, p = c(100, 10))) 参考 http://www.quantumforest.com/2011/10/maximum-likelihood/
个人分类: 统计分析|14502 次阅读|4 个评论
系统发育树构建软件Mega5支持最大似然法(Maximum likelihood)算法了
热度 5 陈文峰 2010-5-28 11:22
今天本来在试用PHYML中的最大似然法来构建系统发育树,后来与人交流,他要对一些序列进行比对,我推荐他用Mega软件,就让它从网上下载,他下载后,我发现Mega4已升级到5.0版本了。再一看,发现它居然支持最大似然法来构建系统发育树了,而以前的4.0版是不支持的。我赶紧自己也下载了一个,安装运行后,发现确实能用。不过美中不足的是,在该软件的主界面上有一个提示,说:This is a beta test release. Please do not use results generated in publications。哎,不管怎么说,以前大家都用装在苹果机上的PAUP中的ML法来构建系统发育树,而操作起来十分困难,现在好了,有MEGA5了。我试着用自己的16S序列数据,用ML法建了个树,发现所需时间不是很长,我在写帖子的时候,运行了17分钟了,完成了69%的任务。看来速度不会象苹果机上运行PAUP那么长的时间了。喜欢尝鲜的人赶紧下载下来试试。 除了这个ML法的大改进外,Mega5还有其它方面的改进,看起来和使用起来都比以前的mega4要好用。期待正式版的早日诞生! Mega5的下载地址为: http://www.megasoftware.net/beta/index.php ,需要填上姓名和email地址,然后从email中确认一下即可以下载了。
个人分类: 根瘤菌进化、发育与系统学|27507 次阅读|16 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-28 12:12

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部