似然函数 | 最大似然估计 | likelihood | maximum likelihood estimation | R代码
学贝叶斯方法时绕不过去的一个问题,现在系统地总结一下。
之前过于纠结字眼,似然和概率到底有什么区别?以及这一个奇妙的对等关系(其实连续才是f,离散就是p)。
似然函数 | 似然值
wiki:在数理统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。
这里我们讨论的范围已经界定了,那就是在指定模型下(比如二项分布),我们观测数据和可能的模型参数之间的关系。
(传统的贝叶斯定理的适用范围很广,是高度的总结推广,在似然函数里就不要过于推广了)
似然函数在直觉上就很好理解了,L(θ|x)就是在给定模型下(这就是为什么贝叶斯是model specific的原因),在给定数据x时,不同模型参数θ出现的概率。(大错特错,是似然值)
很多都是错的,全部资料都要查英文,所有符号都要准确,不能乱写!!!!!符号书写的错误会带来极大的误解!!!!
似然函数的定义是什么?定义都不明确,还讨论研究个什么????
为什么(在函数值形式上) L(θ|x) = f(x|θ)?没必要问为什么对等,因为似然函数就是这么定义而来的。似然函数是为了方便,根据条件概率独立出来的一个新概念而已。
举个例子,对于X~binomial(2, 0.5)而言,P(X=2 | θ=0.5) = 0.25 = L(θ=0.5 | X=2) ,这就是定义。
你应该问为什么似然函数得出的关于θ的似然值之间可以比较?L(θ=1 | X=2) = 1 > L(θ=0.5 | X=2) 意味着什么?我的data X=2在θ=1时出现的概率更高。说明取θ=1时,我的模型能更好的预测结果。
为什么要用似然区分概率?X=2是事件所以有概率,而θ=1并不是事件,因为没有随机试验,而且总的似然值也不为1. 似然是一个我们主动尝试参数的结果,它的本质还是依赖概率。
L(θ|x) 和 f(θ|x)有什么本质的区别? 一个问题看你懂不懂条件概率和似然值
已知有事件x发生,运用似然函数,我们估计参数θ的可能性。形式上,似然函数也是一种条件概率函数。一个是似然值,一个是概率值,完全不同的东西。(别看中文wiki)
存在L(x|θ)吗?(不存在)
似然函数和密度函数是完全不同的两个数学对象:前者是关于theta的函数,后者是关于x的函数。所以这里的等号= 理解为函数值形式的相等,而不是两个函数本身是同一函数(根据函数相等的定义,函数相等当且仅当定义域相等并且对应关系相等)。- 知乎
wiki案例:图2. 三次投掷中头两次正面朝上,第三次反面朝上时的似然函数。可以看到似然函数的积分并不等于1,需要关注的只是大小的相对变化.
最大似然估计
An Introductory Guide to Maximum Likelihood Estimation (with a case study in R)
最大似然估计就是已知数据来求模型的最适参数,maximize the probability of observing the data。
Given the observed data and a model of interest, we need to find the one Probability Density Function/Probability Mass Function (f(x|θ)), among all the probability densities that are most likely to have produced the data.
To solve this inverse problem, we define the likelihood function by reversing the roles of the data vector x and the (distribution) parameter vector θ in f(x| θ), i.e.,
L(θ;x) = f(x| θ)
相互独立的试验下的联合似然函数:
最大似然下的θ求解方法:
- Newton’s method,
- Fisher scoring,
- various conjugate gradient-based approaches,
- steepest descent,
- Nelder-Mead type (simplex) approaches,
- BFGS
我们要求这个似然函数最大值情况下的θ,用高中函数知识就知道要求导,导数为0是最大值的必要不充分条件。
但大部分情况是似然函数不可导!
MLE using R
代码可直接执行,解释见上面链接。
# Modelling Poisson Distrinution using Singla variables
library(dplyr)
library(ggplot2)
library(caret)
library(ModelMetrics)
library(stats4)
#Read training data # X <- read.csv("Train_Tickets.csv", header = T)
X <- read.table("https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2018/07/Train_Tickets.csv", header = T, sep = ",") #Call Formatfile fun to calculate derived variables
Y <- Formatfile(X) #Plot density of the sale
hist(Y$Count, breaks = 50,probability = T ,main = "Histogram of Count Variable")
lines(density(Y$Count), col="red", lwd=2) X$dt <- as.POSIXct(X$Datetime, format="%d-%m-%Y %H:%M") #Plot of Sale over time
ggplot(data=X,aes(x=dt, y=Count)) +
geom_path(colour="blue") +
ylab("Count of Tickets Sold") +
xlab("Date") +
labs(title="Ticket Sale over time") #Partition data into test and train set
set.seed(200)
idx <- createDataPartition(Y$Count, p=0.25,list=FALSE) #Negative log likelihood Function using Poisson Distribution
nll <- function(theta0,theta1) { x <- Y$age[-idx]
y <- Y$Count[-idx] mu = exp(theta0 + x*theta1) -sum(y*(log(mu)) - mu)
} #Parameter Estimation
est <- stats4::mle(minuslog=nll, start=list(theta0=2,theta1=0))
summary(est) #Prediction on test set and RMSE
pred.ts <- (exp(coef(est)['theta0'] + Y$age[idx]*coef(est)['theta1'] ))
rmse(pred.ts, Y$Count[idx])
#86.95227 #Comparison with standard linear model
lm.fit <- lm(log(Count)~age, data=Y[-idx,])
pred.lm <- predict(lm.fit, Y[idx,])
rmse(exp(pred.lm), Y$Count[idx])
#93.77393 Formatfile <- function(File){
## Separate columns and format them
File1 <- File
File1$Datetime <- as.character(File1$Datetime)
File1 <- mutate(File1, tdate = substr(Datetime, 1,10), thr = substr(Datetime, 12,13))
## convert Hour as factor
File1$thr <- as.factor(File1$thr)
## FInd Weekday of the date
Dt <- as.Date("25-08-2012", "%d-%m-%Y")
File1 <- mutate(File1, weekday = weekdays(as.Date(File1$tdate, "%d-%m-%Y")),
age = -difftime(Dt, as.Date(File1$tdate, "%d-%m-%Y"), units = "weeks"),
Mon = months(as.Date(File1$tdate, "%d-%m-%Y")),
Day = substr(File1$tdate,1,2)) File1$weekday <- as.factor(File1$weekday)
File1$Mon <- factor(File1$Mon)
File1$Day <- factor(as.character(File1$Day))
File1$age <- as.numeric(File1$age)
## Remove Date coulmns
File1 <- select(File1, thr, weekday, age, Mon, Day, Count) ## Return File1
File1
}
一些错误:
举个明确的例子,假设我们的抛两次硬币,出现H的次数x服从binomial(2, p)的二项分布,又假设我们我们观测了一次发现x=2,那么p=0.5的概率有多大?(必须是区间,单点的概率是~0)
注:算了一半天对不上,才发现,我把很多概念混淆了。
f(x|θ),按照定义就是当我们已知θ=p=0.5时,x=5出现的概率,根据二项分布;计算可得:f(x=2|θ=0.5) = 0.25
f(θ|x),按照定义就是当我们已知x=2时,p=0.5出现的概率,此时的限定空间是x=2;f(θ=0.5|x=2) ,这就是贝叶斯的后验概率。
f(θ|x) = f(x|θ) * f(θ) / f(x),一定要好好理解这个公式。
这里括号里所有的都是分布了,不是单个值。
L(θ|x),按照定义就是给定数据x=5时,p=0.4~0.5出现的概率(显然不能这么定义,这就和f(θ|x)一模一样了)。
真的很坑人,这个属于学术界定义的问题,不明所以的人很容易走火入魔栽进去 ,必须了解这方面的历史,先看定义。
必须明确数学语言,不可含糊。
基础知识回顾
事件之间的相互独立:在概率论里,说两个事件是独立的,直觉上是指一次实验中一事件的发生不会影响到另一事件发生的概率。例如,在一般情况下可以认为连续两次掷骰子得到的点数结果是相互独立的。类似地,两个随机变量是独立的,若其在一事件给定观测量的条件概率分布和另一事件没有被观测的概率分布是一样的。
概率定义:两个事件A和B是独立的当且仅当Pr(A ∩ B) = Pr(A)*Pr(B)
事件之间互斥:A和B之间不能同时发生。
概率定义:P(A+B)=P(A)+P(B),或者P(AB) = 0.
韦恩图里的交集到底是什么?不管A和B是否独立,都不影响韦恩图的交集。有交集代表A和B不互斥。所以韦恩图是看不出来事件之间的关系的,只能判断是否互斥。
贝叶斯定理很健壮,当A和B相互独立时,也是成立的,此时的条件概率就没有意义了。互斥时也是成立的,只是等式为0.
条件概率是用于衡量事件之间相互关系的,当A和B事件之间不互斥也不相互独立,也就是某种程度的相互影响。
只怪当时学得太肤浅,不求甚解。。。
突然明白为什么数学和逻辑学会费力气造出这么多独立的符号和语言,因为语言不精准的话思考到后面就是一团浆糊了。
随机试验:定义里包括了三个必要条件,可重复、结果空间已知、单次结果不可知;不随机试验有很多种,不可重复,比如历史;样本空间无限,无穷;单次结果已知,单面硬币。随机是针对第三条的,单次结果在试验前不可知。
随机事件:也叫事件,在随机试验里,基本上,只要样本空间是有限的,则在样本空间内的任何一个子集合,都可以被称为是一个事件。
概率里的事件很复杂,需要分情况考虑。
- 同一次随机试验下的随机事件,A1,B1
- 不同随机试验下的随机事件,A1,A2
这里要来继续讨论独立和互斥。
用日常语言来思考非常难受,还是用数学用语吧。
独立:Pr(A ∩ B) = Pr(A)*Pr(B),独立就没有条件概率,独立一般描述不同随机试验之间的关系。可以随机变量之间独立,可以事件独立。不独立就是有关系,有点复杂。
互斥:P(A+B)=P(A)+P(B),不互斥就是A和B有交集,可能同时发生。互斥描述的是同一次随机试验下的随机事件之间的关系。
条件概率:A在B发生的条件下发生的概率。当A和B既不独立,也不互斥,此时贝叶斯定理和推断才有意义。
P(A, B)和P(A|B)本质的区别?P(AB) ,没错最终的效果是一样的A和B都会发生,但是出发点不一样,一个是全集,一个是B空间。
似然函数 | 最大似然估计 | likelihood | maximum likelihood estimation | R代码的更多相关文章
- 最大似然估计(Maximum Likelihood,ML)
先不要想其他的,首先要在大脑里形成概念! 最大似然估计是什么意思?呵呵,完全不懂字面意思,似然是个啥啊?其实似然是likelihood的文言翻译,就是可能性的意思,所以Maximum Likeliho ...
- 均匀分布(uniform distribution)期望的最大似然估计(maximum likelihood estimation)
maximum estimator method more known as MLE of a uniform distribution [0,θ] 区间上的均匀分布为例,独立同分布地采样样本 x1, ...
- 机器学习基础系列--先验概率 后验概率 似然函数 最大似然估计(MLE) 最大后验概率(MAE) 以及贝叶斯公式的理解
目录 机器学习基础 1. 概率和统计 2. 先验概率(由历史求因) 3. 后验概率(知果求因) 4. 似然函数(由因求果) 5. 有趣的野史--贝叶斯和似然之争-最大似然概率(MLE)-最大后验概率( ...
- 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
转载声明:本文为转载文章,发表于nebulaf91的csdn博客.欢迎转载,但请务必保留本信息,注明文章出处. 原文作者: nebulaf91 原文原始地址:http://blog.csdn.net/ ...
- 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
[机器学习基本理论]详解最大似然估计(MLE).最大后验概率估计(MAP),以及贝叶斯公式的理解 https://mp.csdn.net/postedit/81664644 最大似然估计(Maximu ...
- 最大似然估计(Maximum likelihood estimation)(通过例子理解)
似然与概率 https://blog.csdn.net/u014182497/article/details/82252456 在统计学中,似然函数(likelihood function,通常简写为 ...
- 最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络
最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写 ...
- 最大似然估计(Maximum likelihood estimation)
最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:"模型已定,参数未知".简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差 ...
- 最大似然估计实例 | Fitting a Model by Maximum Likelihood (MLE)
参考:Fitting a Model by Maximum Likelihood 最大似然估计是用于估计模型参数的,首先我们必须选定一个模型,然后比对有给定的数据集,然后构建一个联合概率函数,因为给定 ...
随机推荐
- 用D3.js画树状图
做项目遇到一个需求,将具有层级关系的词语用树状图的形式展示它们之间的关系,像这样: 或者是这样: 上面的图片只是样例,跟我下面的代码里面用的数据不同 网上有很多这种数据可视化展示的js控件,我这里选择 ...
- 主流WEB服务器大对比(Apache,Nginx,Lighttpd)
一.软件介绍(apache lighttpd nginx) 1. lighttpd Lighttpd 是一个具有非常低的内存开销, cpu 占用率低,效能好,以及丰富的模块等特点. lightt ...
- 13.5. zipfile — Work with ZIP archives
13.5. zipfile — Work with ZIP archives Source code: Lib/zipfile.py The ZIP file format is a common a ...
- docker发展历程
docker发展历程 docker本身不是容器,它只是一个更加易用的前端管理器. 最早期的容器技术概念是用chroot来实现隔离,但是chroot只是提供了对进程文件目录虚拟化的功能,不能防止进程恶意 ...
- Linux命令——du
参考:10 Useful du (Disk Usage) Commands to Find Disk Usage of Files and Directories 前言 du(Disk Usage), ...
- django配置*app*登录案例*orm简用
1.静态文件的配置和使用 1.静态文件的配置和使用 没有css样式: 添加样式 结果: <html lang="en"> <head> <meta c ...
- 解决zabbix_web显示中文乱码问题
zabbix图形中文显示设置 如果想将zabbix的界面改成中文,点击类似于管理员头像,可以直接修改 检测中---图形,却显示乱码,这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字 ...
- Kotlin扩展作用域分析与扩展的根本作用解析
在上一次https://www.cnblogs.com/webor2006/p/11219358.html学习了Kotlin的扩展,继续这个话题继续拓展,首先提出这么一个问题:假如我们扩展的方法跟类中 ...
- linux系统编程综合练习-实现一个小型的shell程序(四)
上节中已经对后台作业进行了简单处理,基本上要实现的功能已经完了,下面回过头来,对代码进行一个调整,把写得不好的地方梳理一下,给代码加入适当的注释,这种习惯其实是比较好了,由于在开发的时候时间都比较紧, ...
- littlefs了解一下
littlefs是一个文件系统,断电数据不会出异常,适合IOT场景.