朴素贝叶斯评级

时间:2014-12-06 12:27:49

标签: algorithm machine-learning bayesian

假设我有一个包含以下数据的训练集:

Type  |  Size  |   Price  |  Rating  |  SUGGESTION
---------------------------------------------------
Shirt     M        Budget      0           Bad
Trouser   L        Budget      4.2         Good
Shirt     M        Expensive   2.3         Good
....etc....

在提供输入样本时,我们需要将SUGGESTION作为我们需要建议的类。意味着,当给出输入样本(与训练数据集不同)时,我们需要确定它是Good还是Bad

能够根据从互联网上找到的示例了解概率计算:

数据集:http://i.imgur.com/C0ptard.png

计算输入样本:http://i.imgur.com/kggEdLJ.png

我的数据集中的疑问是,我有一个名为Rating的列。那么,对于那一列,我们也像其他列一样进行概率计算(如上面的截图所示)?或者我们需要考虑一个特定列的值的其他方式?说像平均值和标准偏差?

谢谢

2 个答案:

答案 0 :(得分:0)

列“大小”和“价格”代表分类数据(实际上,有序,但这是另一点)。虽然你可以将“评级”建模为分类值,但这可能是个坏主意,将数据建模为数字会更好。这就是原因。

将数据视为分类和数字的差异具有不同的价值。假设您有3个x:x=12x=13x=1344的观测值。那么问题是:概率P(x=12)P(x=1344)P(x=13)有多大差异?答案很大程度上取决于这些值所代表的数据类型。

例如,它x表示用户ID或什么排序不相关的东西,这些概率可以任意不同。但如果x表示支付率,那么显然12和13之间的差异与第三个值相比没那么大。

它还可以帮助您推断出有关数据的更多知识。例如,数据集中可能没有值4.9,但有4.8和5.0。然后你的模型在这两个模型之间进行“插值”,即使它没有在数据集中显示,也会给出4.9的概率。

所以,是的,您应该使用数值分布(例如Gaussian)来评估数据。我还建议做一些清理:显然,0表示“未评级”而不是“非常糟糕”,因此您可能想要告诉您的模型(例如,用平均评级替换0)。

答案 1 :(得分:0)

关于如何处理评级栏的答案通常是答案:取决于。

我首先会尝试确定评级的数字真正代表什么。我希望评级为整数值,例如为电影评论分配一些星星。在这种情况下,小数值表明评级是其他的。检查测试数据应该告诉您这些数据是否已经是离散值,或者它们是否可能落在数字线的任何位置。例如,如果唯一的值是0,1.1,2.3,3.5,4.2和5.6,那么就像处理大小的S,M和L一样处理它们。

如果等级值真的是数字并且落在0到10之间的任何地方,你能否在网球示例中处理它们与温度类似。温度可以测量为数值,但已经映射到Hot,Cool等组。

如果分组不起作用,您可能需要进行一些数学计算并根据数据的分布计算概率。

最后,您可以尝试使用其他算法,例如K Nearest Nebour