我最近编写了Naive Bayes的实现,将示例分为5个不同的组中的一个。特征的数量n非常大,并且每个特征可以是(1)或关闭(0)。使用训练集,我针对每个特征F j 估计每个组G i 的条件概率的5×n矩阵P,1≤i≤5,1≤ j≤n,使得单元(i,j)= P(G i = 1 | F j = 1)。 (我忽略了概率P(G i = 1 | F j = 0),因为它们与本讨论无关。)
我想要做的是,给定一个新的例子E,一个1×n向量,将来自矩阵P的条件概率乘以对应于新例子中的特征。这样做我有两个顾虑:
我所做的是取P的对数,L = log(P),然后执行矩阵乘法E L'。乘法给出1×5结果,结果的最大值表示哪个组,假设先验概率大约相等。这通过矢量化解决速度问题,并通过获取日志来解决准确性问题(当然,采用日志将乘法转换为加法)。另一个优点是E L'适用于一组训练样例,其中E是矩阵而不是矢量。
我的问题是,这样的日志是合理/标准的方法吗?看起来它可能是显而易见的“101”方法,但我在实现这样的算法方面经验有限,所以我希望得到更多经验的人的反馈。
作为参考,在朴素贝叶斯方法中,贝叶斯定理给出了以g为条件的概率 F = f
P(G = g | F = f )= P( F = f | G = g)P(G = g)/ P( F = f )
将特征向量 F 扩展为F 1..n 给出
P(G = g | F 1 = f 1 ,F 2 = f 2 .. .F n = f n )= P(F 1 = f 1 ,F 2 < / sub> = f 2 ... F n = f n | G = g)P(G = g)/ P(< strong> F = f )
应用独立特征的朴素假设
P(G = g | F 1 = f 1 ,F 2 = f 2 .. .F n = f n )= P(F 1 = f 1 | G = g)P( F 2 = f 2 | G = g)... P(F n = f n | G = g)P(G = g)/ P( F = f )
分母可以被删除,因为它对所有g都是相同的,所以我们有
P(G = g | F 1 = f 1 ,F 2 = f 2 .. .F n = f n )αP(F 1 = f 1 | G = g)P( F 2 = f 2 | G = g)... P(F n = f n | G =克)p(G = G)
这里,P(G = g)是先验概率。
答案 0 :(得分:3)
我假设你已经改写了E P'的乘法来处理你用log(P)表示P的事实?
用概率日志表示条件概率是一种非常常见的技术,可以解决它们变得非常小的事实。
自动目标识别应用中的强健分类器的许多实现(例如,Dempster-Schafer)迫使概率始终为非零。你提出的是另一种方法。