朴素贝叶斯用于评级

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

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

这里我将SUGGESTION视为当提供输入样本时需要建议的类别。也就是说,当给定一个与训练数据集不同的输入样本时,我们需要判断它是Good还是Bad

我能够理解基于互联网上找到的示例进行的概率计算:

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

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

在我的数据集中存在疑问的是,我有一个名为Rating的列。对于该列,我们也像其他列(如上面的截图所示)那样进行概率计算吗?还是需要为这一特定列的值考虑其他方法?比如使用均值和标准差?

谢谢


回答:

“Size”和“Price”列表示分类数据(实际上是序数数据,但这是另一个话题)。虽然你也可以将“Rating”建模为分类值,但这可能不是一个好主意,最好将你的数据建模为数值数据。原因如下。

将数据视为分类和数值的区别在于不同的值。假设你有三个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,也会为其提供一个概率。

因此,是的,你应该为评级数据使用数值分布(例如高斯分布)。我还建议进行一些清理:显然,0代表“未评级”而不是“极差”,所以你可能需要告诉你的模型这一点(例如,用平均评级替换0)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注