Поиск по сайту:

Как использовать нестандартные прогнозы в машинном обучении


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

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

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

В этом уроке вы познакомитесь с кратким введением в нестандартные прогнозы в машинном обучении.

После завершения этого урока вы будете знать:

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

Начните свой проект с моей новой книги «Алгоритмы ансамблевого обучения с помощью Python», включающей пошаговые руководства и файлы исходного кода Python для все примеры.

Давайте начнем.

  • Обновление, январь 2020 г.: обновлено с учетом изменений в API scikit-learn v0.22.

Обзор руководства

Этот урок разделен на три части; они есть:

  1. Что такое нестандартные прогнозы?
  2. Нестандартные прогнозы для оценки
  3. Нестандартные прогнозы для ансамблей

Что такое нестандартные прогнозы?

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

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

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

Эту процедуру можно резюмировать следующим образом:

  • 1. Перетасуйте набор данных случайным образом.
  • 2. Разделите набор данных на k групп.
  • 3. Для каждой уникальной группы:

    • а. Возьмите группу в качестве контрольного или тестового набора данных.
    • б. Возьмите оставшиеся группы в качестве набора обучающих данных.
    • в. Подберите модель к обучающему набору и оцените ее на тестовом наборе.
    • д. Сохраните оценку и отбросьте модель.
  • 4. Подведите итог навыкам модели, используя выборку оценок модели.

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

Дополнительную информацию о перекрестной проверке в k-кратном размере см. в руководстве:

  • Нежное введение в k-кратную перекрестную проверку

Нестандартное предсказание — это предсказание модели во время процедуры перекрестной проверки в k-кратном размере.

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

Иногда слово «вне сгиба» обозначается аббревиатурой OOF.

  • Прогнозы вне списка: прогнозы, сделанные моделями во время процедуры перекрестной проверки в k-кратном размере на контрольных примерах.

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

Таким образом, прогнозы вне выборки представляют собой тип прогнозирования вне выборки, хотя и описываются в контексте модели, оцениваемой с использованием k-кратной перекрестной проверки.

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

Прогнозы за пределами выборки также могут называться прогнозами с задержкой.

Есть два основных применения прогнозов вне сгиба; они есть:

  • Оцените производительность модели на невидимых данных.
  • Подходит для ансамблевой модели.

Давайте подробнее рассмотрим эти два случая.

Нестандартные прогнозы для оценки

Наиболее распространенное использование прогнозов вне сгиба — оценка производительности модели.

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

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

Существует два основных подхода, которые эти прогнозы могут использовать для оценки производительности модели.

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

  • Подход 1. Оцените эффективность как средний балл, оцененный для каждой группы нестандартных прогнозов.

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

  • Подход 2. Оцените эффективность, используя совокупность всех нестандартных прогнозов.

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

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

Оценки производительности, полученные по k, суммируются (обычно со средним значением и стандартной ошибкой)…

- Страница 70, Прикладное прогнозное моделирование, 2013.

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

Мы будем использовать функцию scikit-learn make_blobs() для создания тестовой задачи двоичной классификации с 1000 примерами, двумя классами и 100 входными функциями.

В приведенном ниже примере подготавливается образец данных и обобщается форма входных и выходных элементов набора данных.

# example of creating a test dataset
from sklearn.datasets import make_blobs
# create the inputs and outputs
X, y = make_blobs(n_samples=1000, centers=2, n_features=100, cluster_std=20)
# summarize the shape of the arrays
print(X.shape, y.shape)

При выполнении примера печатается форма входных данных, показывающая 1000 строк данных со 100 столбцами или входными объектами и соответствующими метками классификации.

(1000, 100) (1000,)

Далее мы можем использовать k-кратную перекрестную проверку для оценки модели KNeighborsClassifier.

Мы будем использовать k=10 для объекта KFold (разумное значение по умолчанию), подгонять модель к каждому набору обучающих данных и оценивать ее для каждой контрольной складки.

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

Полный пример приведен ниже.

# evaluate model by averaging performance across each fold
from numpy import mean
from numpy import std
from sklearn.datasets import make_blobs
from sklearn.model_selection import KFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# create the inputs and outputs
X, y = make_blobs(n_samples=1000, centers=2, n_features=100, cluster_std=20)
# k-fold cross validation
scores = list()
kfold = KFold(n_splits=10, shuffle=True)
# enumerate splits
for train_ix, test_ix in kfold.split(X):
	# get data
	train_X, test_X = X[train_ix], X[test_ix]
	train_y, test_y = y[train_ix], y[test_ix]
	# fit model
	model = KNeighborsClassifier()
	model.fit(train_X, train_y)
	# evaluate model
	yhat = model.predict(test_X)
	acc = accuracy_score(test_y, yhat)
	# store score
	scores.append(acc)
	print('> ', acc)
# summarize model performance
mean_s, std_s = mean(scores), std(scores)
print('Mean: %.3f, Standard Deviation: %.3f' % (mean_s, std_s))

Выполнение примера сообщает о точности классификации модели в контрольной сгибе для каждой итерации.

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

В конце прогона сообщается среднее и стандартное отклонение показателей точности.

>  0.95
>  0.92
>  0.95
>  0.95
>  0.91
>  0.97
>  0.96
>  0.96
>  0.98
>  0.91
Mean: 0.946, Standard Deviation: 0.023

Мы можем противопоставить этому альтернативный подход, который оценивает все прогнозы как одну группу.

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

Полный пример приведен ниже.

# evaluate model by calculating the score across all predictions
from sklearn.datasets import make_blobs
from sklearn.model_selection import KFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# create the inputs and outputs
X, y = make_blobs(n_samples=1000, centers=2, n_features=100, cluster_std=20)
# k-fold cross validation
data_y, data_yhat = list(), list()
kfold = KFold(n_splits=10, shuffle=True)
# enumerate splits
for train_ix, test_ix in kfold.split(X):
	# get data
	train_X, test_X = X[train_ix], X[test_ix]
	train_y, test_y = y[train_ix], y[test_ix]
	# fit model
	model = KNeighborsClassifier()
	model.fit(train_X, train_y)
	# make predictions
	yhat = model.predict(test_X)
	# store
	data_y.extend(test_y)
	data_yhat.extend(yhat)
# evaluate the model
acc = accuracy_score(data_y, data_yhat)
print('Accuracy: %.3f' % (acc))

Примечание. Результаты могут отличаться в зависимости от стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Попробуйте запустить пример несколько раз и сравнить средний результат.

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

Accuracy: 0.930

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

Нестандартные прогнозы для ансамблей

Еще одно распространенное применение прогнозов, выходящих за рамки сгиба, — это их использование при разработке ансамблевой модели.

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

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

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

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

  • Базовые модели: модели оцениваются с использованием k-кратной перекрестной проверки набора обучающих данных, и все нестандартные прогнозы сохраняются.

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

  • Метамодель: модель, которая принимает в качестве входных данных нестандартные прогнозы, сделанные одной или несколькими моделями, и показывает, как лучше всего объединить и исправить эти прогнозы.

Например, мы можем иметь задачу прогнозного моделирования классификации двух классов и обучать дерево решений и модель k-ближайшего соседа в качестве базовых моделей. Каждая модель прогнозирует 0 или 1 для каждого примера в наборе обучающих данных с помощью прогнозов вне сгиба. Эти прогнозы вместе с входными данными могут затем сформировать новые входные данные для метамодели.

  • Вводные данные метамодели: входная часть заданной выборки, объединенная с прогнозами, сделанными каждой базовой моделью.
  • Вывод метамодели: выходная часть заданной выборки.

Зачем использовать нестандартные прогнозы для обучения метамодели?

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

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

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

Эту процедуру можно резюмировать следующим образом:

  • 1. Для каждой базовой модели:

    • а. Используйте k-кратную перекрестную проверку и собирайте нестандартные прогнозы.
    • b. Обучить метамодель нестандартным предсказаниям всех моделей.
    • в. Обучите каждую базовую модель на всем наборе обучающих данных.

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

Дополнительную информацию по теме укладки см. в руководствах:

  • Как разработать ансамбль стекирования для нейронных сетей глубокого обучения на Python с помощью Keras
  • Как реализовать составное обобщение (наложение) с нуля с помощью Python

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

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

...
# split
X, X_val, y, y_val = train_test_split(X, y, test_size=0.33)

В этом примере мы будем использовать перекрестную проверку в k-кратном размере для подбора модели DecisionTreeClassifier и KNeighborsClassifier для каждой складки перекрестной проверки, а также использовать модели подгонки для выполнения прогнозов вне сгиба.

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

Мы также будем отслеживать входные данные (100 объектов) и выходные данные (ожидаемую метку) для данных, находящихся вне складки.

...
# collect out of sample predictions
data_x, data_y, knn_yhat, cart_yhat = list(), list(), list(), list()
kfold = KFold(n_splits=10, shuffle=True)
for train_ix, test_ix in kfold.split(X):
	# get data
	train_X, test_X = X[train_ix], X[test_ix]
	train_y, test_y = y[train_ix], y[test_ix]
	data_x.extend(test_X)
	data_y.extend(test_y)
	# fit and make predictions with cart
	model1 = DecisionTreeClassifier()
	model1.fit(train_X, train_y)
	yhat1 = model1.predict_proba(test_X)[:, 0]
	cart_yhat.extend(yhat1)
	# fit and make predictions with cart
	model2 = KNeighborsClassifier()
	model2.fit(train_X, train_y)
	yhat2 = model2.predict_proba(test_X)[:, 0]
	knn_yhat.extend(yhat2)

В конце прогона мы можем затем создать набор данных для метаклассификатора, состоящий из 100 входных признаков для входных данных и двух столбцов прогнозируемых вероятностей из моделей kNN и дерева решений.

Функция create_meta_dataset(), приведенная ниже, реализует это, принимая данные вне сгибов и прогнозы по сгибам в качестве входных данных и создавая входной набор данных для метамодели.

# create a meta dataset
def create_meta_dataset(data_x, yhat1, yhat2):
	# convert to columns
	yhat1 = array(yhat1).reshape((len(yhat1), 1))
	yhat2 = array(yhat2).reshape((len(yhat2), 1))
	# stack as separate columns
	meta_X = hstack((data_x, yhat1, yhat2))
	return meta_X

Затем мы можем вызвать эту функцию, чтобы подготовить данные для метамодели.

...
# construct meta dataset
meta_X = create_meta_dataset(data_x, knn_yhat, cart_yhat)

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

...
# fit final submodels
model1 = DecisionTreeClassifier()
model1.fit(X, y)
model2 = KNeighborsClassifier()
model2.fit(X, y)

Затем мы можем подогнать метамодель к подготовленному набору данных, в данном случае модели логистической регрессии.

...
# construct meta classifier
meta_model = LogisticRegression(solver='liblinear')
meta_model.fit(meta_X, data_y)

Наконец, мы можем использовать метамодель для прогнозирования набора данных по несогласованным данным.

Для этого необходимо, чтобы данные сначала прошли через подмодели, выходные данные использовались при построении набора данных для метамодели, а затем метамодель использовалась для прогнозирования. Мы обернем все это в функцию с именем stack_prediction(), которая принимает модели и данные, для которых будет сделан прогноз.

# make predictions with stacked model
def stack_prediction(model1, model2, meta_model, X):
	# make predictions
	yhat1 = model1.predict_proba(X)[:, 0]
	yhat2 = model2.predict_proba(X)[:, 0]
	# create input dataset
	meta_X = create_meta_dataset(X, yhat1, yhat2)
	# predict
	return meta_model.predict(meta_X)

Затем мы можем оценить подмодели в наборе данных для проверки, а затем использовать метамодель, чтобы сделать прогноз для набора данных для проверки и оценить ее.

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

...
# evaluate sub models on hold out dataset
acc1 = accuracy_score(y_val, model1.predict(X_val))
acc2 = accuracy_score(y_val, model2.predict(X_val))
print('Model1 Accuracy: %.3f, Model2 Accuracy: %.3f' % (acc1, acc2))
# evaluate meta model on hold out dataset
yhat = stack_prediction(model1, model2, meta_model, X_val)
acc = accuracy_score(y_val, yhat)
print('Meta Model Accuracy: %.3f' % (acc))

Полный пример приведен ниже.

# example of a stacked model for binary classification
from numpy import hstack
from numpy import array
from sklearn.datasets import make_blobs
from sklearn.model_selection import KFold
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# create a meta dataset
def create_meta_dataset(data_x, yhat1, yhat2):
	# convert to columns
	yhat1 = array(yhat1).reshape((len(yhat1), 1))
	yhat2 = array(yhat2).reshape((len(yhat2), 1))
	# stack as separate columns
	meta_X = hstack((data_x, yhat1, yhat2))
	return meta_X

# make predictions with stacked model
def stack_prediction(model1, model2, meta_model, X):
	# make predictions
	yhat1 = model1.predict_proba(X)[:, 0]
	yhat2 = model2.predict_proba(X)[:, 0]
	# create input dataset
	meta_X = create_meta_dataset(X, yhat1, yhat2)
	# predict
	return meta_model.predict(meta_X)

# create the inputs and outputs
X, y = make_blobs(n_samples=1000, centers=2, n_features=100, cluster_std=20)
# split
X, X_val, y, y_val = train_test_split(X, y, test_size=0.33)
# collect out of sample predictions
data_x, data_y, knn_yhat, cart_yhat = list(), list(), list(), list()
kfold = KFold(n_splits=10, shuffle=True)
for train_ix, test_ix in kfold.split(X):
	# get data
	train_X, test_X = X[train_ix], X[test_ix]
	train_y, test_y = y[train_ix], y[test_ix]
	data_x.extend(test_X)
	data_y.extend(test_y)
	# fit and make predictions with cart
	model1 = DecisionTreeClassifier()
	model1.fit(train_X, train_y)
	yhat1 = model1.predict_proba(test_X)[:, 0]
	cart_yhat.extend(yhat1)
	# fit and make predictions with cart
	model2 = KNeighborsClassifier()
	model2.fit(train_X, train_y)
	yhat2 = model2.predict_proba(test_X)[:, 0]
	knn_yhat.extend(yhat2)
# construct meta dataset
meta_X = create_meta_dataset(data_x, knn_yhat, cart_yhat)
# fit final submodels
model1 = DecisionTreeClassifier()
model1.fit(X, y)
model2 = KNeighborsClassifier()
model2.fit(X, y)
# construct meta classifier
meta_model = LogisticRegression(solver='liblinear')
meta_model.fit(meta_X, data_y)
# evaluate sub models on hold out dataset
acc1 = accuracy_score(y_val, model1.predict(X_val))
acc2 = accuracy_score(y_val, model2.predict(X_val))
print('Model1 Accuracy: %.3f, Model2 Accuracy: %.3f' % (acc1, acc2))
# evaluate meta model on hold out dataset
yhat = stack_prediction(model1, model2, meta_model, X_val)
acc = accuracy_score(y_val, yhat)
print('Meta Model Accuracy: %.3f' % (acc))

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

Примечание. Результаты могут отличаться в зависимости от стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Попробуйте запустить пример несколько раз и сравнить средний результат.

В этом случае мы видим, что метамодель превзошла обе подмодели.

Model1 Accuracy: 0.670, Model2 Accuracy: 0.930
Meta-Model Accuracy: 0.955

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

Дальнейшее чтение

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

Учебники

  • Нежное введение в k-кратную перекрестную проверку
  • Как разработать ансамбль стекирования для нейронных сетей глубокого обучения на Python с помощью Keras
  • Как реализовать составное обобщение (наложение) с нуля с помощью Python
  • Как создать ансамбль моделей глубокого обучения в Keras
  • Методы ансамблевого обучения для нейронных сетей глубокого обучения

Книги

  • Прикладное прогнозное моделирование, 2013.

Статьи

  • Перекрестная проверка (статистика), Википедия.
  • Ансамблевое обучение, Википедия.

API

  • API sklearn.datasets.make_blobs.
  • sklearn.model_selection.KFold API.
  • sklearn.neighbors.KNeighborsClassifier API.
  • sklearn.tree.DecisionTreeClassifier API.
  • API sklearn.metrics.accuracy_score.
  • sklearn.linear_model.LogisticReгрессия API.
  • sklearn.model_selection.train_test_split API.

Краткое содержание

В этом уроке вы узнали о нестандартных прогнозах в машинном обучении.

В частности, вы узнали:

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

У вас есть вопросы?
Задавайте свои вопросы в комментариях ниже, и я постараюсь ответить.

Статьи по данной тематике