Machine learning 贝叶斯与OLS

Machine learning 贝叶斯与OLS,machine-learning,linear-regression,bayesian,Machine Learning,Linear Regression,Bayesian,我在网上发现了这个问题。有人能详细解释一下,为什么使用OLS更好?是否只是因为样本数量不够?此外,为什么不使用所有1000个样本来估计先验分布 我们有1000个随机抽样的数据点。目标是努力建立 一个由k回归器得到一个响应变量的回归模型 变量。哪个更好?1.(贝叶斯回归)使用第一个 500个样本,用于估计假定先验知识的参数 分发,然后使用最后500个样本更新之前的 具有后验估计的后验分布,用于 最终回归模型。2.(OLS回归)使用简单的普通 所有1000个回归变量的最小二乘回归模型 “更好”总是一

我在网上发现了这个问题。有人能详细解释一下,为什么使用OLS更好?是否只是因为样本数量不够?此外,为什么不使用所有1000个样本来估计先验分布

我们有1000个随机抽样的数据点。目标是努力建立 一个由k回归器得到一个响应变量的回归模型 变量。哪个更好?1.(贝叶斯回归)使用第一个 500个样本,用于估计假定先验知识的参数 分发,然后使用最后500个样本更新之前的 具有后验估计的后验分布,用于 最终回归模型。2.(OLS回归)使用简单的普通 所有1000个回归变量的最小二乘回归模型

“更好”总是一个意见问题,它在很大程度上取决于上下文

常客OLS方法的优势:更简单、更快、更容易被更广泛的受众接受(因此不需要解释)。我的一位睿智的教授曾经说过:“如果苍蝇拍可以做到这一点,你就不需要建造原子加速器。”

等效贝叶斯方法的优势:更灵活地进行进一步的模型开发,可以直接对导出/计算量的后验概率进行建模(还有更多,但这些是我使用贝叶斯方法进行给定分析的动机)。请注意“等效”一词——在贝叶斯框架中,有些事情是在频繁访问方法中无法做到的

N <- 1000
x <- 1:N
epsilon <- rnorm(N, 0, 1)
y <- x + epsilon

summary(lm(y ~ x))
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9053 -0.6723  0.0116  0.6937  3.7880 
## 
## Coefficients:
##              Estimate Std. Error  t value Pr(>|t|)    
## (Intercept) 0.0573955  0.0641910    0.894    0.371    
## x           0.9999997  0.0001111 9000.996   <2e-16 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## 
## Residual standard error: 1.014 on 998 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 8.102e+07 on 1 and 998 DF,  p-value: < 2.2e-16
嘿,这是R中的一个探索,首先模拟数据,然后使用典型的OLS方法

N <- 1000
x <- 1:N
epsilon <- rnorm(N, 0, 1)
y <- x + epsilon

summary(lm(y ~ x))
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9053 -0.6723  0.0116  0.6937  3.7880 
## 
## Coefficients:
##              Estimate Std. Error  t value Pr(>|t|)    
## (Intercept) 0.0573955  0.0641910    0.894    0.371    
## x           0.9999997  0.0001111 9000.996   <2e-16 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## 
## Residual standard error: 1.014 on 998 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 8.102e+07 on 1 and 998 DF,  p-value: < 2.2e-16

N在我看来,这不是一个更好的问题,而是一个你喜欢哪种推理方法的问题

你必须记住,OLS来自频繁学派的推理和估计是donde-ML过程,对于这个特殊的问题,它与距离最小化的几何参数相吻合(在我个人看来,这是非常奇怪的,因为假设我们正在处理rondom现象)

另一方面,在贝叶斯方法中,推理是通过后验分布进行的,后验分布是先验(代表决策者先前关于现象的信息)和可能性的乘积


同样,问题在于你对什么样的推理方法感到满意

谢谢你,马特!
test.data <- list(x=x[1:500],y=y[1:500],N=500)
test.jags.out <- jags(model.file="test.jags", data=test.data, 
                  parameters.to.save=c("a","b","tau","sigma"), n.chains=3, n.iter=10000)

cat('model {
  for (i in 1:N){
    y[i] ~ dnorm(y.hat[i], tau)
    y.hat[i] <- a + b * x[i]
  }
  a ~ dnorm(a_mn, a_prec)
  b ~ dnorm(b_mn, b_prec)
  a_prec <- pow(a_sd, -2)
  b_prec <- pow(b_sd, -2)
  tau <- pow(sigma, -2)
  sigma ~ dunif(0, 100)
}', file="test.jags1")

test.data1 <- list(x=x[501:1000],y=y[501:1000],N=500,
                   a_mn=test.jags.out$BUGSoutput$mean$a,a_sd=test.jags.out$BUGSoutput$sd$a,
                   b_mn=test.jags.out$BUGSoutput$mean$b,b_sd=test.jags.out$BUGSoutput$sd$b)
test.jags.out1 <- jags(model.file="test.jags1", data=test.data1, 
                  parameters.to.save=c("a","b","tau","sigma"), n.chains=3, n.iter=10000)

test.jags.out1$BUGSoutput$mean$a
## [1] 0.01491162
test.jags.out1$BUGSoutput$sd$a
## [1] 0.08513474
test.jags.out1$BUGSoutput$mean$b
## [1] 1.000054
test.jags.out1$BUGSoutput$sd$b
## [1] 0.0001201778