Машинное обучение в настоящее время является одной из самых быстрорастущих и новейших технологий этой эпохи. Многие люди изучают основные правила машинного обучения для улучшения будущего. Машинное обучение — это область искусственного интеллекта, в которой мы использовали математические модели для обучения данных и получения оптимальных решений. Вы также можете сказать, что это продвинутый и самый простой способ удалить миллионы условий «Если-иначе» в вашей программе😃.

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

Помнить! Кодировщик тоже может быть поэтичным. Вы можете рифмовать свой код так же, как рифмуете свои стихи.

1- Алгоритм случайного леса

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

Как это работает:

  1. Случайным образом выбирает подмножество функций из общего набора функций.
  2. Строит дерево решений на основе выбранных функций.
  3. Повторяет процесс несколько раз, каждый раз с другим подмножеством функций.
  4. Объединяет результаты всех деревьев для получения конечного результата.
  5. Уменьшает переоснащение и повышает точность за счет усреднения прогнозов деревьев.
  6. Часто используется в задачах классификации и регрессии.
  7. Известен высокой точностью.

Код:

# Importing required libraries
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Train a Random Forest classifier
clf = RandomForestClassifier(n_estimators=100, random_state=0)
clf.fit(X_train, y_train)

# Make predictions on test data
y_pred = clf.predict(X_test)

2- Повышение градиента

Gradient Boosting – это алгоритм машинного обучения, который использует ансамбль слабых деревьев решений для создания высокоточной прогностической модели. Алгоритм работает путем постепенного добавления деревьев в модель, каждое из которых пытается исправить ошибки предыдущего дерева. Деревья соответствуют отрицательному градиенту функции потерь, отсюда и название «Повышение градиента».

Как это работает:

  1. Работает путем объединения нескольких слабых моделей, называемых базовыми моделями, для создания сильной модели.
  2. Каждая базовая модель обучается на ошибках, допущенных предыдущей моделью в последовательности.
  3. Процесс обучения продолжается до тех пор, пока не будет обучено необходимое количество базовых моделей или пока не будет выполнен критерий остановки.
  4. Окончательный прогноз делается путем объединения прогнозов всех базовых моделей.
  5. Gradient Boosting может применяться как к задачам регрессии, так и к задачам классификации.
  6. Алгоритм обычно используется с деревьями решений в качестве базовых моделей.
  7. Было показано, что Gradient Boosting дает самые современные результаты во многих задачах машинного обучения.

Код:

# Importing required libraries
import pandas as pd
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split

# Train a Gradient Boosting classifier
clf = GradientBoostingClassifier(n_estimators=100, random_state=0)
clf.fit(X_train, y_train)

# Make predictions on test data
y_pred = clf.predict(X_test)

3- SVM (Машина опорных векторов)

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

Как это работает:

  1. Работает, находя границу, которая разделяет данные на классы.
  2. Пытается максимизировать запас между границей и ближайшими точками данных (векторами поддержки).
  3. Способен обрабатывать многомерные данные путем преобразования данных в пространство более высокого измерения.
  4. Может обрабатывать сложные нелинейные границы решений и хорошо работать даже с зашумленными данными.
  5. Обычно используется в таких приложениях, как классификация изображений, классификация текста и биоинформатика.
  6. Может быть дорогостоящим в вычислительном отношении и может плохо масштабироваться для очень больших наборов данных.

Код:

# Importing required libraries
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split

# Train a SVM classifier
clf = SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)

# Make predictions on test data
y_pred = clf.predict(X_test)

4- K-ближайшие соседи

K-ближайшие соседи (KNN) — это простой, но эффективный алгоритм машинного обучения, используемый как для задач классификации, так и для регрессии. Алгоритм работает, находя K ближайших точек данных к заданной контрольной точке и используя класс или значение этих соседей, чтобы сделать прогноз. Количество соседей K — это гиперпараметр, который можно настроить для получения точного результата для конкретной задачи.

Как это работает:

  1. Принимает новую точку данных и находит K ближайших точек в обучающих данных.
  2. Использует класс или значение этих K ближайших точек, чтобы сделать прогноз для новой точки данных.
  3. Количество соседей, K можно настроить.
  4. Не делайте предположений о базовом распределении данных.
  5. Простой для понимания и простой в реализации.
  6. Может быть вычислительно затратным для больших наборов данных.
  7. Можно ускорить с помощью таких алгоритмов, как шаровые деревья или kd-деревья.
  8. Часто используется для задач со сложными или нелинейными границами решений.

Код:

# Importing required libraries
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

# Train a KNN classifier
clf = KNeighborsClassifier(n_neighbors=5)
clf.fit(X_train, y_train)

# Make predictions on test data
y_pred = clf.predict(X_test)

5-нейронные сети

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

Как это работает:

  1. Входные данные подаются на входной слой сети.
  2. Входные данные преобразуются нейронами в каждом последующем слое сети с использованием функций активации.
  3. Последний слой сети выдает прогноз или решение на основе преобразованных входных данных.
  4. Во время обучения параметры сети (веса и смещения) настраиваются на основе ошибки между прогнозируемым выходом и истинными целевыми значениями.
  5. Этот процесс повторяется несколько раз для обучающих данных, пока ошибка не достигнет минимума.
  6. Затем обученную сеть можно использовать для прогнозирования новых, невидимых данных.
  7. Прогнозы делаются путем передачи новых данных через обученную сеть и получения выходных данных из последнего слоя.
  8. Точность сети можно оценить путем сравнения прогнозируемых выходных данных с фактическими целевыми значениями в проверочном или тестовом наборе.

Код:

# Importing required libraries
import numpy as np
from sklearn.neural_network import MLPClassifier

# Initialize the classifier
clf = MLPClassifier(hidden_layer_sizes=(2,), activation='logistic', solver='sgd', max_iter=1000, random_state=0)

#Fit Classifier to training data
clf.fit(X, y)

#Predict Class for new data point
new_data = np.array([[1, 1]])
prediction = clf.predict(new_data)
print(prediction) # Output: [0]

Заключение:

В заключение, эти пять алгоритмов машинного обучения доказали свою высокую эффективность в различных задачах, таких как классификация, регрессия и кластеризация. Случайный лес известен своей простотой использования и высокой точностью, что делает его популярным выбором для многих приложений. Алгоритмы Gradient Boosting хорошо работают, когда количество признаков велико, а модель сложна. Методы опорных векторов лучше всего подходят для небольших наборов данных и многомерных пространств признаков. Нейронные сети особенно полезны для задач, в которых взаимосвязь между входными и выходными данными сложна и ее трудно смоделировать с помощью простых функций. K-ближайшие соседи эффективны для приложений, в которых базовый шаблон не совсем понятен.

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