在 R 中使用 SVM 进行股票预测 + 新闻情绪?

Posted

技术标签:

【中文标题】在 R 中使用 SVM 进行股票预测 + 新闻情绪?【英文标题】:Stock prediction + news sentiment with SVM in R? 【发布时间】:2019-11-16 03:18:18 【问题描述】:

我想在 R 中与 SVM 一起预测股票价格和新闻情绪得分,以查看新闻是否对股票价格及其预测产生影响。我读到支持向量机(svm)是解决这个问题的一种很好的机器学习方法。我有一栏代表股票和新闻的日期,一栏代表当天的股价,四栏代表基于不同词汇的情绪得分。我想先用其中一个词典进行测试,如果模型有效,再尝试另一个。数据集包括在下面。我找到了一些使用 python 的示例,但找不到 R 的内容。我喜欢使用 e1071 package 中的 svm() 函数

我将数据分成训练集和测试集:

sample <- sample(nrow(sentGI),nrow(sentGI)*0.70)
df.trainGI = sentGI[sample,]
df.testGI = sentGI[-sample,]

我已经尝试过这个 SVM 代码,但我的错误预测率为 100

plot(df.trainGI$GSPC.Close, df.trainGI$SentimentGI, pch = 19, col = c("red", "blue"))


svm_model_GI <- svm(SentimentGI.Class ~ ., df.trainGI)
print(svm_model_GI)

plot(svm_model_GI, df.trainGI)


svm_pred_GI <- predict(svm_model_GI, newdata = df.testGI, type="response")
rmse <- sqrt(mean((svm_pred_GI - df.testGI$GSPC.Close)^2))
rmse

我在这里做错了什么?希望有人能帮助我!

Dataset

【问题讨论】:

【参考方案1】:

您正在使用模型准确性来评估模型。准确性用于分类问题,但您的响应变量是连续的。您应该使用 RMSE。

pred <- predict(radial.svm, newdata=df.test, type='response')
rmse <- sqrt(mean((pred - df.test$GSPC.Close)^2))
rmse

来自 cmets 的继续:

第一个图 GSPC.Close 与日期(左)和第二个图 SentimentGI 与日期(右)。请注意,股票价格通常会随着时间的推移而上涨,而情绪在同一时间范围内的斜率为 0。这告诉你什么?

【讨论】:

感谢您的回复。我尝试了您的代码,但得到了 1816.42 的 rmse。我将分类列的类更改为数字,以便预测代码起作用。但我猜有些东西出了问题。我更新了我使用的代码以及我使用的数据集,也许你有一个想法。 如果我将我的 SentimentGI.Class 列更改为因子,我可以打印 svm 分类,它似乎工作良好,但预测代码不是工作。收到 "-" not meaningful for factors 的错误 而且我还需要计算准确度,以便了解可以根据财经新闻预测股票价格的百分比。研究人员总是计算该度量值。 现在你正在解决一个不同的问题。你需要决定你的响应变量是什么。例如,在您的新代码中,您将响应变量 SentimentGI.Class 作为分类变量,因此您不会使用用于连续变量的 RMSE。此外,您在计算 RMSE 时将SentimentGI.Classdf.testGI$GSPC.Close 进行比较。最后,你是怎么得到SentimentGI.Class的?如果它来自SentimentGI,那么您的带有SentimentGI.Class ~ . 的模型需要排除此变量。确定您要回答的问题是情绪评分还是股价? 你真的帮了我很多,我真的很感激。我从SentimentGI 得到SentimentGI.Class。我检查了summary function SentimentGI 的中位数是多少,基于此我决定所有values &lt; the median 都是0 和更大的1。但是如果我的想法是错误的,我们可以做不同的事情,我只是这个领域的新手,知道的不多。我想回答这个问题:基于财经新闻的股价预测。所以我想看看当包含新闻文章(基于情绪得分)时,股票预测的准确性有多高。

以上是关于在 R 中使用 SVM 进行股票预测 + 新闻情绪?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SVM 情绪分析中使用 predict_proba

如何去除 sklearn 线性 SVM 中 10% 最具预测性的特征

在Kaggle的使用新闻预测股票涨跌的AI 建模竞赛(2-Sigma 赞助)

在Kaggle的使用新闻预测股票涨跌的AI 建模竞赛(2-Sigma 赞助)

如何使用 SVM 预测多类情感分析问题中的所有类?

使用LSTM-RNN建立股票预测模型