- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近写了一个朴素贝叶斯的实现,将示例分为 5 个不同的组之一。特征的数量 n 非常大,每个特征都可以打开 (1) 或关闭 (0)。使用训练集,我针对每个特征 Fj 估计了每组 Gi 的条件概率的 5 × n 矩阵 P,其中 1≤i≤5, 1≤ j≤n,因此单元格 (i,j) = P(Gi=1|Fj=1)。 (我忽略了概率 P(Gi=1|Fj=0) 因为它们与本次讨论无关。)
我想做的是,给定一个新示例 E,一个 1 × n 向量,将矩阵 P 中与新示例中的特征对应的条件概率相乘。这样做我有两个顾虑:
我所做的是取 P 的对数,L=log(P),然后执行矩阵乘法 E L'。乘法给出 1 × 5 结果,结果的最大值表示哪个组,假设先验概率大致相等。这通过向量化解决了速度问题,通过获取日志解决了准确性问题(当然,获取日志将乘法转换为加法)。另一个优点是 E L' 适用于一组训练示例,其中 E 是矩阵而不是向量。
我的问题是,像这样记录日志是一种合理/标准的方法吗?这似乎是显而易见的“101”方法,但我在实现此类算法方面的经验有限,因此我希望有更多经验的人提供反馈。
作为引用,在朴素贝叶斯方法中,贝叶斯定理给出了以特征 F= f 为条件的在组 g 中的概率
P(G=g|F= f ) = P(F= f|G=g)P(G=g) / P(F= f )
将特征向量F展开为F1..n给出
P(G=g|F1= f1, F2= f2... Fn= fn) = P(F1= f1, F2= f2... Fn= fn|G=g)P(G=g) / P(F= f )
应用独立特征的朴素假设
P(G=g|F1= f1, F2= f2... Fn= fn) = P(F1= f1|G=g) P(F2= f2|G=g) ... P(Fn= fn|G=g)P(G=g) / P(F= f )
分母可以去掉,因为它对所有的 g 都是一样的,所以我们有
P(G=g|F1= f1, F2= f2... Fn= fn) ∝ P(F1= f1|G=g) P(F2= f2|G=g) ... P(Fn= fn|G=g)P(G=g)
这里,P(G=g)是先验概率。
最佳答案
我假设您已经重写了 E P' 的乘法以处理您用 log(P) 表示 P 的事实?
用概率对数表示条件概率是一种非常常用的技术,可以解决它们可能变得非常小这一事实。
自动目标识别应用程序(例如 Dempster-Schafer)中许多稳健分类器的实现强制概率始终为非零。您所提议的是实现这一目标的另一种方式。
关于r - 使用日志来向量化重复乘法是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030793/
我知道 Jobs 可以通过 flink 或 flink.bat 提交给 JobManager。我想知道Flink有没有提供Java API给JobManager提交作业? 最佳答案 是的。根据您要连接
我已经将 GCM 的演示代码应用于 appache 服务器的服务器端和 android 设备的客户端,并且运行良好;但我需要在我的应用程序中激活此服务,如下所示:我在 SqlServer 上有一个数据
我需要将自定义 header 添加到 WebView 中加载的页面,但它不起作用, header 未设置: @Override public WebResourceResponse shouldInt
我是一名优秀的程序员,十分优秀!