2016-05-15 3 views
2

У меня есть матрица, как показано ниже:вычисления интенсивности ошибок между двумя столбцами R

Real_Values Predicted_Values 
5.5   5.67 
6.9   7.01 
9.8   9.2 
6.5   6.1 
10   9.7 
1.5   1.0 
7.7   7.01 

Я желаю, чтобы вычислить частоту ошибок моей модели между прогнозируемыми и реальными значениями, и в идеале сделать сюжет. Мне было интересно, есть ли у R уже пакет, который аккуратно делает это, чтобы избежать каких-либо циклов?

+0

Можете ли вы уточнить, что вы подразумеваете под «ошибкой»? Например [MAPE] (https://en.wikipedia.org/wiki/Mean_absolute_percentage_error)? – digEmAll

ответ

0

Если вы хотите рассчитать Остаточную сумму квадратов, функции lm() выводят эту информацию уже для вас. В зависимости от функции, которую вы использовали для моделирования данных, доступ к терминам RSS немного отличается.

Основываясь на вашем data_frame вы можете легко кодировать RSS формулу, как это

datf <- as.data.frame(your_matix) 
datf$difsq <- (datf$Real_Values - datf$Predicted_Values)^2 
rss <- sum(datf$difsq) 
+0

Я совершенно не знаком с машинным обучением, поэтому я мало разбираюсь в методах валидации, но Real_Values ​​на самом деле являются известными значениями, а Predicted_Values ​​- это значения, предсказанные на основе 5-кратной перекрестной проверки, теперь я хочу сравнить эти значения, чтобы увидеть, хорошо ли работает моя модель, и я не совсем знаю, какой метод будет лучше для этой цели, потому что у меня есть еще две таблицы в том же формате, что и две другие модели предсказания, поэтому я хочу получить некоторые чтобы показать, какая из этих моделей является лучшей! – user6336850

+0

RSS обычно используется для сравнения линейных моделей. У меня мало опыта машинного обучения, но, возможно, эта ссылка может помочь [link] (http://machinelearningmastery.com/compare-the-performance-of-machine-learning-algorithms-in-r/) – Nate

0

Вы можете рассчитать показатели регрессии ошибки, как корень среднеквадратичной ошибки (СКО) или сумму квадратов ошибок (SSE) вручную как указал @ nathan-day. Большинство реализаций автоматически сделают это для вас, поэтому вам обычно не нужно делать это вручную.

В целях построения графика я буду использовать чуть больший пример сейчас, с большим количеством образцов, так как это будет лучше понять (набор данных iris поставляется с R). Сначала мы тренируем линейную модель для предсказания 4-й функции из первых 3 функций, которые уже вычисляют некоторые метрики:

> model <- train(iris[,1:3], iris[,4], method = 'lm', metric = 'RMSE', trControl = trainControl(method = 'repeatedcv', number = 10, repeats = 10)) 
> print(model) 
Linear Regression 

150 samples 
3 predictors 

No pre-processing 
Resampling: Cross-Validated (10 fold, repeated 10 times) 

Summary of sample sizes: 134, 135, 135, 136, 134, 135, ... 

Resampling results 

RMSE Rsquared RMSE SD Rsquared SD 
0.19 0.942  0.0399 0.0253 

СКО, SSE и т.д. Теперь можно рассчитать из прогнозируемых и фактических значений целевого переменная вручную тоже:

predicted <- predict(model, iris[,1:3]) # perform the prediction 
actual <- iris[,4] 
sqrt(mean((predicted-actual)**2)) # RMSE 
sum((predicted-actual)**2) # SSE 

незначительные отличия от результатов от обучения модели выше результатов с использованием повторного перекрестной проверки (следовательно, показатели перечислены в разделе «результаты передискретизации» есть).

Для части чертежа: ошибку регрессии можно легко визуализировать, построив предсказание против фактической целевой переменной и/или построив ошибку на фактическое значение. Идеальная подгонка представлена ​​дополнительной линией на этих графиках. Это слишком легко может быть достигнуто с помощью стандартных инструментов:

plot(predicted~actual) 
abline(0,1) 

plot(predicted-actual~actual) 
abline(0,0) 

PS: если вы не знакомы с мерой ошибки регрессии/классификации и надежными процедурами ОД я настоятельно рекомендую потратить некоторое время, чтобы прочитать на эти темы - это будет вероятно, сэкономит вам много извести позже. Я лично порекомендовал бы Applied Predictive Modeling Максом Куном (сопровождающим пакета caret в R) и Кьеллом Джонсоном, поскольку его легко читать и очень практично.

Смежные вопросы