我在尝试通过在MATLAB中编写自己的代码来实现朴素贝叶斯算法。我对其中一个连续属性的分布选择感到困惑。其值如下所示:
MovieAge : 1 2 3 4 .. 10 1 11 2 12 1 3 13 2 1 4 14 3 2 5 15 4 3 6 16 5 4 .... 32 9 3 15
请告诉我对于这种数据应该使用哪种分布?在我的测试集中,这个属性有时会包含训练数据中未包含的值。如何处理这个问题?谢谢 15
回答:
假设这个变量取整数值,而不是连续值(基于你的例子),最简单的方法是采用直方图类型的方法:某个值的概率是它在训练数据中出现的次数的分数。考虑为高于某个数值的所有值设置一个最终的区间(基于你的例子,可能在20左右)。如果你遇到零计数的问题,可以给所有计数加1(如果你倾向于这样做,可以将其视为Dirichlet先验)。
至于参数形式,如果你更喜欢使用参数形式,泊松分布是一种可能的选择。QQ图,或者甚至是拟合优度测试,将会提示这种分布在你的情况下是否合适,但我认为你使用基于直方图的方法会更好。