【问题标题】:Wrong prediction in linear SVM线性 SVM 中的错误预测
【发布时间】:2018-09-20 19:40:26
【问题描述】:

我正在编写一个 R 脚本,它在运行时会给出因变量的预测值。我所有的变量都被分类(如图所示)并分配了一个数字,类的总数是101。(每个类是歌曲名称)。

所以我有一个训练数据集,其中包含像 {(2,5,6,1)82, (2,5,6,1)45, (2,5,3,1)34, ... }。我在 R studio 中使用 linear svm 训练了这个数据集,对于给定 (x,y,z,w) 的某些值,它给出了正确的答案。但是即使像 (2,5,6,1)X 这样的记录存在于训练数据集中,为什么它不能预测值 82 或 45?我很困惑,因为它忽略了这些术语并显示了全新的输出 23。

training_set = dataset;
library(e1071)
classifier = svm(formula = Song ~ .,
             data = training_set,
             type = 'C-classification',
             kernel = 'linear')
y_pred = predict(classifier, data.frame(Emotion = 2, Pact = 5, Mact = 6, Session = 1)).

我想要的是最接近我的答案。 我可以做些什么来实现这些目标?

  1. 获得至少 10 个最接近的结果,而不是 R 中的 1 个。
  2. 线性 svm 模型在这里做得好吗?
  3. 如何在训练数据集中获得值 82,45,如果没有条目,则找到最接近的条目。 (有没有不考虑简单欧几里得距离的模型)?

【问题讨论】:

    标签: r machine-learning svm


    【解决方案1】:

    是什么让您认为您的分类器对一组预测变量的预测结果与您的原始观察结果相同?我认为对于分类的工作方式可能存在一些基本的误解。

    这是一个使用线性回归模型的简单反例。同样的原则也适用于您的 SVM。

    1. 模拟一些数据

      set.seed(2017);
      x <- seq(1:10);
      y <- x + rnorm(10);
      
    2. 我们现在修改 y 的一个值,并显示 (x,y) 对的数据。

      y[3] = -10;
      df <- cbind.data.frame(x = x, y = y);
      df;
      #    x          y
      #1   1   2.434201
      #2   2   1.922708
      #3   3 -10.000000
      #4   4   2.241395
      #5   5   4.930175
      #6   6   6.451906
      #7   7   5.041634
      #8   8   7.998476
      #9   9   8.734664
      #10 10  11.563223
      
    3. 拟合模型并获得预测。

      fit <- lm(y ~ x, data = df);
      pred <- predict(fit);
      
    4. 让我们看看预测的响应 y.pred 并将它们与原始数据(xy)进行比较。

      data.frame(df, y.pred = pred)
      #    x          y     y.pred
      #1   1   2.434201 -2.1343357
      #2   2   1.922708 -0.7418526
      #3   3 -10.000000  0.6506304
      #4   4   2.241395  2.0431135
      #5   5   4.930175  3.4355966
      #6   6   6.451906  4.8280796
      #7   7   5.041634  6.2205627
      #8   8   7.998476  7.6130458
      #9   9   8.734664  9.0055288
      #10 10  11.563223 10.3980119
      

    请注意x=3 的预测响应如何是y.pred=0.65,即使您观察到 y=-10

    【讨论】:

    • @minigeek 我建议通过在解决方案旁边设置复选标记来结束这个问题。我推荐一本很好的 ML 书籍/教程,其中涵盖了一些统计/数学细节。有大量可用的材料可以满足对统计/数学具有不同程度亲和力的人。 SO是关于特定的编码问题;虽然CrossValidated 处理更一般的统计问题,但没有支持论坛能够教您机器学习的基础知识。
    猜你喜欢
    • 2016-10-06
    • 2014-10-16
    • 2018-11-01
    • 2019-02-12
    • 2013-03-20
    • 2019-07-06
    • 2018-10-31
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多