Экстремальная версия k-кратной перекрестной проверки - для оценки производительности алгоритмов машинного обучения

Это одна из техник, в которых мы реализуем перекрестную проверку KFold, где k равно n, то есть количеству наблюдений в данных. Таким образом, каждая отдельная точка будет использоваться в наборе проверки, мы создадим n моделей для n наблюдений в данных. Каждая точка / образец используется один раз в качестве тестового набора, а остальные данные / образцы образуют обучающий набор.

Когда и зачем использовать перекрестную проверку Leave-One-Out?

  • LOOCV дает надежную и объективную оценку производительности модели.
  • Он используется, когда у вас ограниченные данные, и вы хотите использовать как можно больше обучающих данных при подборе модели.
  • Он обеспечивает наилучшую возможную оценку ошибки для одной новой точки, то есть, когда у вас есть одна новая точка и вы хотите оценить свою ошибку, правильным методом является перекрестная проверка с исключением одного и другого.
  • Он используется для оценки производительности алгоритма машинного обучения, особенно когда производительность точной модели критична и важнее, чем затраты на вычисления.
  • Что касается точности, LOOCV приводит к большой дисперсии - как средство оценки ошибки теста.


Когда не использовать перекрестную проверку Leave-One-Out?

  • LOOCV в вычислительном отношении очень затратный, особенно рекомендуется не использовать его, когда у вас много данных, например, с большим K, может быть, 50 или 75.

Реализация перекрестной проверки с исключением одного -

Реализацию перекрестной проверки с исключением одного-выхода можно выполнить с помощью cross_val_score (), где вам нужно установить параметр cv, равный количеству наблюдений в вашем наборе данных (для этого мы использовали Candy и набор данных жилья).

from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, make_scorer
# Create scorer
mae_scorer = make_scorer(mean_absolute_error)
rf = RandomForestRegressor(n_estimators=15, random_state=121)
# Implement LOOCV
loocv_scores = cross_val_score(rf, X=X, y=y, cv=85, scoring=mae_scorer)
# Print the mean and standard deviation
print("Mean of the errors is: %s." % np.mean(loocv_scores))
print("Standard deviation of the errors is: %s." % np.std(loocv_scores))

Вывод -

Mean of the errors is: 9.48    
Standard deviation of the errors is: 7.27


Итераторы, генераторы и декораторы Python стали проще
Краткое руководство по внедрению python.plainenglish.io



Использование Scikit-learn -

Библиотека машинного обучения Python scikit-learn обеспечивает реализацию LOOCV через класс LeaveOneOut с использованием кросс-валидатора Leave-One-Out.

from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestRegressor
from numpy import mean
from numpy import std
from numpy import absolute
from pandas import read_csv
# load dataset
dataframe = read_csv('path to dataset file', header=None)
data = dataframe.values
# split into inputs and outputs
X, y = data[:, :-1], data[:, -1]
print(X.shape, y.shape)
# create loocv procedure
loocv = LeaveOneOut()
# create model
rfr = RandomForestRegressor(random_state=121)
# evaluate model
scores = cross_val_score(rfr, X, y, scoring='neg_mean_absolute_error', cv=cv, n_jobs=-1)

Продолжайте учиться и писать код;)

Хотите прочитать юмор программистов?









Рекомендуемые статьи -