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

Оглавление

  • Что означают простые приемы ансамблевого обучения?
  • Максимальное количество голосов/большинство голосов
  1. Объяснение
  2. Выполнение
  • Усреднение
  1. Объяснение
  2. Выполнение
  • Взвешенное усреднение
  1. Объяснение
  2. Выполнение

Что означают простые приемы ансамблевого обучения

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

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

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

  • Максимальное голосование
  • Усреднение
  • Взвешенное усреднение

Давайте обсудим их один за другим.

Максимальное количество голосов/большинство голосов

Объяснение

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

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

Выполнение

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

из sklearn.datasets импортировать load_breast_cancer

из sklearn.model_selection импорта train_test_split

из sklearn.ensemble импортировать классификатор голосования

из sklearn.neighbors импортировать KNeighborsClassifier

из sklearn.tree импортировать DecisionTreeClassifier

из sklearn.svm импортировать SVC

из sklearn.metrics импорта precision_score

Давайте загрузим набор данных,

данные = load_breast_cancer()

X, y = data.data, data.target

Давайте немного разберемся в данных.

print("Имена функций: \n", data.feature_names)

print("Целевые имена: \n", data.target_names)

print("Форма данных: \n", data.data.shape)

Выход:

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

print("Первые образцы:")

печать(данные.данные[:5])

Выход

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

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,2, random_state=42)

Здесь мы разделили данные. Теперь мы можем определить индивидуальный классификатор.

clf1 = KNeighborsClassifier(n_neighbors=5)

clf2 = DecisionTreeClassifier()

clf3 = SVC(вероятность=истина)

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

voting_clf = VotingClassifier(estimators=[('knn', clf1), ('dt', clf2), ('svm', clf3)], голосования='hard')

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

voting_clf.fit(X_train, y_train)

y_pred = голосование_clf.predict(X_test)

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

точность = показатель_точности(y_test, y_pred)

print("Точность:", точность)

Выход:

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

Усреднение

Объяснение

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

Например, в задаче классификации, если три отдельные модели предсказывают метки классов как [1, 2, 1], [2, 2, 2] и [1, 1, 2] соответственно, ансамбль усреднения возьмет на себя большинство проголосуйте за каждый экземпляр, в результате чего будет получен окончательный прогноз [1, 2, 2]. Давайте посмотрим на реализацию этого с помощью python.

Выполнение

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

из sklearn.ensemble импортировать RandomForestClassifier, GradientBoostingClassifier

из sklearn.linear_model импортировать LogisticRegression

clf1 = RandomForestClassifier(random_state=42)

clf2 = GradientBoostingClassifier(random_state=42)

clf3 = LogisticRegression(random_state=42)

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

clf1.fit(X_train, y_train)

clf2.fit(X_train, y_train)

clf3.fit(X_train, y_train)

Давайте сделаем прогнозы по каждой модели.

clf1_predictions = clf1.predict(X_test)

clf2_predictions = clf2.predict(X_test)

clf3_predictions = clf3.predict(X_test)

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

ensemble_predictions = np.column_stack((clf1_predictions, clf2_predictions, clf3_predictions))

averaged_predictions = np.mean(ensemble_predictions, axis=1).astype(int)

Оценим выступление ансамбля.

ensemble_accuracy = показатель точности (y_test, усредненные_прогнозы)

print("Точность ансамбля:", ансамбль_точность)

Выход:

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

Взвешенное усреднение

Объяснение

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

Как показано в приведенном выше примере, если моделям присвоены веса 0,4, 0,3 и 0,3 соответственно, ансамбль взвешенного усреднения вычислит окончательный прогноз следующим образом:

[10.4 + 20.3 + 10.3, 20.4 + 20.3 + 10.3, 10.4 + 10.3 + 2*0.3] = [0.4 + 0.6 + 0.3, 0.8 + 0.6 + 0.3, 0.4 + 0.3 + 0.6] = [1.3, 1.7, 1.3]

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

Выполнение

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

веса ​​= [0,4, 0,3, 0,3]

Здесь снова нам нужно использовать ту же функцию, предоставленную Numpy, но здесь нам также нужно определить веса. Мы можем сделать это, используя следующие коды.

ensemble_predictions = np.column_stack((clf1_predictions, clf2_predictions, clf3_predictions))

weighted_predictions = np.average(ensemble_predictions, axis=1, weights=weights).astype(int)

Проверим выступление ансамбля.

ensemble_accuracy = показатель точности (y_test, weighted_predictions)

print("Точность ансамбля:", ансамбль_точность)

Выход:

На этом мы завершили реализацию метода средневзвешенного ансамбля.

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

Заключение

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

О ДСВ

DSW, специализирующаяся на искусственном интеллекте и науке о данных, предоставляет платформы и решения для использования данных с помощью ИИ и расширенной аналитики. С офисами, расположенными в Мумбаи, Индия, и Дублине, Ирландия, компания обслуживает широкий круг клиентов по всему миру.

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

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