我目前正在使用支持向量机来预测用户在给定人口统计数据的情况下会购买哪种商品。数据集还包括某个年龄段的用户购买了每件商品的数量。它看起来像这样:
items a b c
age
15-20 10 3 10
20-25 1 5 6
25-30 2 5 6
我不确定如何将其纳入训练数据,因为我能想到的唯一方法是包括一组用户购买物品的概率值,但这非常困难。我的另一个想法是使用集成学习方法,并将svm与Naive Bayes分类器相结合。我正在使用sklearn来构建我的模型。
当您想要为数据点引入权重时,SVM不再那么有吸引力。当相同或非常接近的数据点具有不同的分类时,底层代数就不能很好地工作。从你上面给出的数据来看,我确实希望Naive Bayes会给出更快的计算和更干净的结果。
也就是说,你在使用什么SVM算法?如果它以某种方式对向量进行加权——每个点只使用一次,或者为梯度下降方法的每次迭代选择一个随机点——那么你当然可以通过将每个点添加到训练集中给定的次数来处理这一问题。例如,你会有10行说明青少年购买了a物品。
另一方面,Naive Bayes会为统计准确的模型提供权重。与其几乎单方面地预测20多岁的年轻人会购买物品c(这实际上是购买物品的很大一部分),你应该有一个模型可以告诉你,48%的20多岁左右的人会购买商品c,几乎同样多的人会买商品b。
这次讨论有帮助吗?