Машинное обучение включает в себя разделение доступных наблюдений на наборы обучающих и тестовых данных, обучение модели на наборе обучающих данных и тестирование ее на наборе тестовых данных.

На рисунке ниже объясняются обычные шаги, связанные с машинным обучением.

Этот подход хорошо работает, если у вас есть много наблюдений, доступных для обучения и тестирования вашей модели, но он показывает слабость, если размер наблюдения невелик.

  1. Имеющиеся наблюдения должны быть разделены; оставляя меньше данных для обучения алгоритмов и получения оптимальной модели.
  2. Нет смысла рассчитывать точность обучающих данных, особенно для таких алгоритмов, как деревья решений.
  3. Тестовые данные имеют ограниченный размер (обычно на тест отводится 20% наблюдений). Вычисленная точность может отличаться для данных, не предназначенных для обучения (например, для данных в реальном времени), и со временем модель может потребовать повторного обучения.

Перекрестная проверка (также известная как K-кратная проверка) в определенной степени решает эти проблемы.

Целью перекрестной проверки является проверка модели несколько раз без уточнения данных, доступных для обучения модели. После обучения алгоритма и оптимизации модели данных данные обучения разбиваются на несколько выборочных наборов данных, и модель проверяется независимо для каждого набора данных. Точность каждого цикла проверки можно усреднить для оценки точности модели в действующей системе.

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

Преимущество заключается в том, что он получает эту метрику, используя те же обучающие данные, и, в отличие от предыдущего подхода, вам не нужно выделять подмножество данных для ее расчета.

Выполнение

Давайте реализуем K-кратную проверку, используя библиотеку python sklearn cross_val_score.

Вы можете получить исходные данные по ссылке ниже на Kaggle



Прежде всего, давайте импортируем все библиотеки

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline

Импортируйте данные в Pandas Dataframe

df=pd.read_csv(r’C:\Sanjay\Machine Learning\pima-indians-diabetes-database\diabetes.csv’)
df.head()

Вот так выглядят данные

Определите X и y и создайте экземпляр классификатора дерева решений.

y=df[‘Outcome’]
X=df.drop([‘Outcome’], axis=1)
dec_cls=DecisionTreeClassifier()
dec_cls.fit(X,y)

Пришло время выполнить K-кратную проверку, вызвав cross_val_score. Здесь cv=5 указывает, что наблюдения разделены на 5 выборок.

cross_val_score(DecisionTreeClassifier(), X, y, scoring=”accuracy”, cv = 5)

Выход показывает пять индивидуальных точности.

array([0.68181818, 0.68831169, 0.69480519, 0.77777778, 0.7254902 ])

Возьмите среднее значение этих значений, чтобы оценить общую точность реального приложения.

print('Estimated Accuracy {:.3f}'.format(cross_val_score(DecisionTreeClassifier(), X, y, scoring="accuracy", cv = 5).mean()))

Вывод:

Estimated Accuracy 0.716

Ну вот.

Теперь вы знаете, что такое проверка K-Fold в машинном обучении.

Ссылка: