我在比较几种不同的机器学习算法,用于自动评分的准确性。训练集的RMSE和R平方值平均分别约为0.75和0.43。但是,当我使用相同的函数框架运行KNN时,得到的RMSE为0.95,R平方为0.09。我没有收到任何错误消息,所以不知道哪里出了问题。
我的数据集是连续的,我对其进行回归分析。
这是我的代码片段:
library(caret)train_control <- trainControl(method="repeatedcv", number=10, repeats=3)# Linear Regression ============================================================lm <- train(holistic_score~., data=training, trControl=train_control, method="lm")lm$resultslm_pred <- predict(lm, testing)postResample(pred = lm_pred, obs = testing$holistic_score)# Train: rmse = 0.714515 rsquared = 0.4737114# Test: rmse = 0.7508373 rsquared = 0.4423288# K-NN =========================================================================knn <- train(holistic_score~., data=training, trControl=train_control, tuneLength=100, method="knn")knn$resultsknn_pred <- predict(knn, testing)postResample(pred=knn_pred, obs=testing$holistic_score)# Train: rmse = 0.9466202 rsquared = 0.07567549# Test: rmse = 0.9512989 rsquared = 0.0966448
我只展示了线性回归,但我使用了10种不同的算法在6个不同的数据集上进行测试,结果显示KNN的表现明显不如其他算法。
我在网上查看了文档和这里,但没有找到解决我问题或提及此问题的任何信息。这个是我找到的与我类似问题的最接近的帖子,但它不适用于我,因为我没有使用分类预测变量。
有谁知道可能是什么原因导致这种情况吗?
编辑:这是因变量(整体评分)的直方图:
回答:
我猜测您没有对KNN的自变量进行标准化处理,这在自变量尺度不同的情况下非常关键。你可以在这里看到一个有趣的讨论 这里:
library(caret)library(mlbench)data(BostonHousing)data = BostonHousingtrain(medv ~.,data=data,method="knn",trControl=trainControl(method="cv",number=3))Summary of sample sizes: 337, 338, 337 Resampling results across tuning parameters: k RMSE Rsquared MAE 5 6.721722 0.4748246 4.625845 7 6.897760 0.4429380 4.720363 9 6.807877 0.4550040 4.654680train(medv ~.,data=data,method="knn",trControl=trainControl(method="cv",number=3),preProc = c("center", "scale"))Pre-processing: centered (13), scaled (13) Resampling: Cross-Validated (3 fold) Summary of sample sizes: 337, 338, 337 Resampling results across tuning parameters: k RMSE Rsquared MAE 5 4.873476 0.7354566 3.120004 7 4.983704 0.7280253 3.125164 9 4.972269 0.7348006 3.172021train(medv ~.,data=data,method="glmnet",trControl=trainControl(method="cv",number=3)) alpha lambda RMSE Rsquared MAE 0.10 0.01355531 4.994509 0.7145962 3.483945 0.10 0.13555307 4.997304 0.7145864 3.466551 0.10 1.35553073 5.124558 0.7054928 3.504224 0.55 0.01355531 4.995748 0.7145269 3.483881 0.55 0.13555307 5.030863 0.7112925 3.463395 0.55 1.35553073 5.423348 0.6793556 3.745830 1.00 0.01355531 4.998020 0.7143324 3.482485 1.00 0.13555307 5.084050 0.7055959 3.485051 1.00 1.35553073 5.593417 0.6725029 3.904954