谷歌新闻如何自动对新兴主题的文件进行分类和排名,如"奥巴马的2011年预算"?
我有一堆用棒球数据标记的文章,如球员名称和与文章的相关性(感谢,opencalais),并且很想创建一个谷歌新闻风格的界面,排列和显示新帖子,特别是新兴话题.我认为一个朴素的贝叶斯分类器可以用一些静态类别进行训练,但这并不能真正跟踪"这个球员刚刚被交易到这个球队,这些其他球员也参与了"的趋势.
如果我理解正确,都可以使用贝叶斯定理生成非循环图并根据每个节点上应用的函数来计算百分比。
有什么不同?
我正在考虑编写一个小库,从预定的候选列表中猜出(RGB值)颜色的名称.
我的第一次尝试纯粹基于三维RGB颜色空间内的毕达哥拉斯距离 - 这并不是大规模成功,因为大多数命名颜色点位于空间的边缘(例如蓝色在0,0,255),所以,对于空间中间的大多数颜色,它最接近的命名颜色是相当随意的.
所以,我正在考虑更好的方法,并提出了一些候选人
HSV色彩空间内的圆柱形距离 - 可能与上述类似的问题,然而,HSV似乎在人类意义上比RGB更有意义,这可能是有用的.
上述任何一种,但每个命名的色点用一个任意值加权,该值表示其对周围空间中的点的吸引力.这样的模型有名字吗?我意识到这有点模糊,但对我来说这似乎是一个相当直观的想法.
一个贝叶斯网络,它检查HSV颜色的属性并返回最可能的颜色名称(我想象的节点类似于,例如P(黑色|饱和度<10),P(红色|色调= 0),但是,这似乎不太理想 - 例如,给定颜色为红色的概率与其色调与0的接近程度成正比,而不是离散值.是否有一种方法可以调整贝叶斯网络来处理连续的概率变量被测试?
最后,我想知道在HSV或RGB色彩空间内是否有某种基于支持向量机的分类,但对这些并不是非常熟悉,我不确定这是否会比基于毕达哥拉斯距离的方法提供任何特别的优势我最初尝试过,特别是因为我只处理三维空间.
因此,我想知道,您是否有任何类似问题的经验,或者知道任何可能帮助我决定方法的资源?如果有人能指出我正确的方向(无论是上述之一,还是完全不同的东西),我将非常感激.
干杯!
蒂姆
statistics artificial-intelligence classification bayesian bayesian-networks
我想使用朴素贝叶斯分类器进行一些预测。到目前为止,我可以使用 R 中的以下(示例)代码进行预测
library(klaR)
library(caret)
Faktor<-x <- sample( LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
alter<-abs(rnorm(10000,30,5))
HF<-abs(rnorm(10000,1000,200))
Diffalq<-rnorm(10000)
Geschlecht<-sample(c("Mann","Frau", "Firma"),10000,replace=TRUE)
data<-data.frame(Faktor,alter,HF,Diffalq,Geschlecht)
set.seed(5678)
flds<-createFolds(data$Faktor, 10)
train<-data[-flds$Fold01 ,]
test<-data[flds$Fold01 ,]
features <- c("HF","alter","Diffalq", "Geschlecht")
formel<-as.formula(paste("Faktor ~ ", paste(features, collapse= "+")))
nb<-NaiveBayes(formel, train, usekernel=TRUE)
pred<-predict(nb,test)
test$Prognose<-as.factor(pred$class)
Run Code Online (Sandbox Code Playgroud)
现在我想通过特征选择来改进这个模型。我的真实数据大约有 100 个特征。所以我的问题是,为朴素贝叶斯分类选择最重要特征的最佳方法是什么?有没有论文参考?
我尝试了以下代码行,不幸的是这行不通
rfe(train[, 2:5],train[, 1], sizes=1:4,rfeControl = rfeControl(functions = ldaFuncs, method = "cv"))
Run Code Online (Sandbox Code Playgroud)
编辑:它给了我以下错误信息
Fehler in { : task 1 failed - "nicht-numerisches Argument für binären Operator"
Calls: rfe ... rfe.default -> nominalRfeWorkflow -> …Run Code Online (Sandbox Code Playgroud) 我在这里看了一个类似的问题
pymc警告:value既不是数字也不是带有浮点dtype的数组
但是没有答案,有人可以告诉我是否应该忽略这个警告或者做什么呢?
该模型具有随机变量(等等)tau,其是DiscreteUniform
以下是该模型的相关代码:
tau = pm.DiscreteUniform("tau", lower = 0, upper = n_count_data)
lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)
print "Initial values: ", tau.value, lambda_1.value, lambda_2.value
@pm.deterministic
def lambda_(tau = tau, lambda_1 = lambda_1, lambda_2 = lambda_2):
out = np.zeros(n_count_data)
out[:tau] = lambda_1
out[tau:] = lambda_2
return out
observation = pm.Poisson("obs", lambda_, value = count_data, observed = True)
model = pm.Model([observation, lambda_1, lambda_2, tau]);
m = pm.MAP(model) # **This line caueses error**
print …Run Code Online (Sandbox Code Playgroud) 我需要在贝叶斯网络上进行一些推论,例如我在下面创建的示例.

我正在寻找类似这样的东西来解决诸如P(F | A = True,B = True)之类的推论.我最初的做法是做类似的事情
For every possible output of F
For every state of each observed variable (A,B)
For every unobserved variable (C, D, E, G)
// Calculate Probability
Run Code Online (Sandbox Code Playgroud)
但我认为这不会起作用,因为我们实际上需要同时检查多个变量,而不是一次一个.
我听说过Pearls算法用于消息传递,但我还没有找到一个不是非常密集的合理描述.对于附加信息,这些贝叶斯网络被约束为不超过15-20个节点,并且我们拥有所有条件概率表,代码实际上不必非常快速或高效.
基本上我正在寻找一种方法来做到这一点,不一定是最好的方法来做到这一点.
出于比较目的,我想利用 PyMC3 之外的后验密度函数。
对于我的研究项目,我想了解 PyMC3 与我自己定制的代码相比的性能如何。因此,我需要将它与我们自己的内部采样器和似然函数进行比较。
我想我想出了如何调用内部PyMC3后验的方法,但是感觉很别扭,想知道是否有更好的方法。现在我正在手动转换变量,而我应该能够将参数字典传递给 pymc 并获得后验密度。这可能以直接的方式进行吗?
非常感谢!
演示代码:
import numpy as np
import pymc3 as pm
import scipy.stats as st
# Simple data, with sigma = 4. We want to estimate sigma
sigma_inject = 4.0
data = np.random.randn(10) * sigma_inject
# Prior interval for sigma
a, b = 0.0, 20.0
# Build PyMC model
with pm.Model() as model:
sigma = pm.Uniform('sigma', a, b) # Prior uniform between 0.0 and 20.0
likelihood = pm.Normal('data', 0.0, sd=sigma, observed=data)
# …Run Code Online (Sandbox Code Playgroud) (这个问题最初发布于stats.O我搬到这里,因为它不具有关联.pymc在它与更普遍的问题:其实主要目的是为了有一个更好地了解如何pymc工作的.如果任版主的不要信.为了适合SO,我会从这里删除.)
我一直在这里和在SO中阅读pymc教程和许多其他问题.
我试图理解如何应用贝叶斯定理来计算使用某些数据的后验概率.特别是,我有一个独立参数元组
从数据中我想推断出可能性 ,哪里
是一个特定的事件.然后目标是计算
一些额外的评论:
pymc计算给定数据的可能性,然后对每个参数元组我想得到后验概率.在下面我会假设 并且可能性是多维正态分布
(因为独立).
以下是我正在使用的代码(为简单起见,假设只有两个参数).代码仍处于开发阶段(我知道它无法正常工作!).但我认为包含它是有用的,然后在注释和答案之后对其进行优化,以便为将来的参考提供框架.
class ObsData(object):
def __init__(self, params):
self.theta1 = params[0]
self.theta2 = params[1]
class Model(object):
def __init__(self, data):
# Priors
self.theta1 = pm.Uniform('theta1', 0, 100)
self.theta2 = pm.Normal('theta2', 0, 0.0001)
@pm.deterministic
def model(
theta1=self.theta1,
theta2=self.theta2,
):
return (theta1, theta2)
# Is this the actual likelihood?
self.likelihood = pm.MvNormal(
'likelihood',
mu=model,
tau=np.identity(2),
value=data, # …Run Code Online (Sandbox Code Playgroud) 我正在尝试改编Cameron Davidson-Pilon的贝叶斯黑客方法,第1章“介绍我们的第一把锤子:PyMC”中的文本消息示例, 以处理多种观察结果。下面的解决方案似乎正在工作,但是我对pymc并不陌生,我不确定这是否是处理pymc中多个时间序列观测值的好方法。任何建议将不胜感激!
为了重述贝叶斯黑客方法的文本消息示例,观察结果包括74天的文本消息计数,如下图所示。
该书使用一个切换点参数(tau)和两个指数参数(lambda1和lambda2)对该过程进行建模,这两个参数分别控制tau前后的泊松分布消息数。对于此示例,pymc使用以下代码产生大约为tau = 45,lambda1 = 18和lambda2 = 23的解决方案,该代码与本书的代码几乎相同:
import numpy as np
import pymc
observation = np.loadtxt( './txtdata.csv' ) #data available at the book's GitHub site
n_days = observation.size #number of days
alpha = 1./20 #assume a mean of 20 messages per day
lambda1 = pymc.Exponential("lambda1", alpha)
lambda2 = pymc.Exponential("lambda2", alpha)
tau = pymc.DiscreteUniform("tau", lower=0, upper=n_days)
@pymc.deterministic
def lambda_(tau=tau, lambda1=lambda1, lambda2=lambda2):
a = np.zeros(n_days)
a[:tau] = lambda1
a[tau:] = lambda2
return a
observation_model = pymc.Poisson("observation", …Run Code Online (Sandbox Code Playgroud) I am able to successfully improve the performance of my XGBoost model through Bayesian optimization, but the best I can achieve through Bayesian optimization when using Light GBM (my preferred choice) is worse than what I was able to achieve by using it’s default hyper-parameters and following the standard early stopping approach.
When tuning via Bayesian optimization, I have been sure to include the algorithm’s default hyper-parameters in the search surface, for reference purposes.
The code below shows the RMSE …
bayesian ×10
pymc ×3
python ×3
mcmc ×2
statistics ×2
c++ ×1
inference ×1
lightgbm ×1
naivebayes ×1
numpy ×1
pandas ×1
probability ×1
pymc3 ×1
python-2.7 ×1
r ×1
stochastic ×1
theano ×1
time-series ×1