Машинное обучение в настоящее время является одной из самых быстрорастущих и новейших технологий этой эпохи. Многие люди изучают основные правила машинного обучения для улучшения будущего. Машинное обучение — это область искусственного интеллекта, в которой мы использовали математические модели для обучения данных и получения оптимальных решений. Вы также можете сказать, что это продвинутый и самый простой способ удалить миллионы условий «Если-иначе» в вашей программе😃.
В этой статье мы обсудим 5 наиболее важных алгоритмов машинного обучения, которые каждый инженер по машинному обучению должен изучить и использовать для поиска оптимальных решений.
Помнить! Кодировщик тоже может быть поэтичным. Вы можете рифмовать свой код так же, как рифмуете свои стихи.
1- Алгоритм случайного леса
Случайный лес — это алгоритм обучения ансамбля, который использует несколько деревьев решений для получения окончательного прогноза. Он работает путем построения множества деревьев решений во время обучения и выводит класс, который является режимом классов, выводимых отдельными деревьями.
Как это работает:
- Случайным образом выбирает подмножество функций из общего набора функций.
- Строит дерево решений на основе выбранных функций.
- Повторяет процесс несколько раз, каждый раз с другим подмножеством функций.
- Объединяет результаты всех деревьев для получения конечного результата.
- Уменьшает переоснащение и повышает точность за счет усреднения прогнозов деревьев.
- Часто используется в задачах классификации и регрессии.
- Известен высокой точностью.
Код:
# 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 – это алгоритм машинного обучения, который использует ансамбль слабых деревьев решений для создания высокоточной прогностической модели. Алгоритм работает путем постепенного добавления деревьев в модель, каждое из которых пытается исправить ошибки предыдущего дерева. Деревья соответствуют отрицательному градиенту функции потерь, отсюда и название «Повышение градиента».
Как это работает:
- Работает путем объединения нескольких слабых моделей, называемых базовыми моделями, для создания сильной модели.
- Каждая базовая модель обучается на ошибках, допущенных предыдущей моделью в последовательности.
- Процесс обучения продолжается до тех пор, пока не будет обучено необходимое количество базовых моделей или пока не будет выполнен критерий остановки.
- Окончательный прогноз делается путем объединения прогнозов всех базовых моделей.
- Gradient Boosting может применяться как к задачам регрессии, так и к задачам классификации.
- Алгоритм обычно используется с деревьями решений в качестве базовых моделей.
- Было показано, что 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) — это мощный и широко используемый алгоритм машинного обучения для решения как линейных, так и нелинейных задач классификации и регрессии. Он работает, находя границу, которая разделяет данные на классы, и пытается максимизировать разрыв между границей и ближайшими точками данных, которые называются векторами поддержки.
Как это работает:
- Работает, находя границу, которая разделяет данные на классы.
- Пытается максимизировать запас между границей и ближайшими точками данных (векторами поддержки).
- Способен обрабатывать многомерные данные путем преобразования данных в пространство более высокого измерения.
- Может обрабатывать сложные нелинейные границы решений и хорошо работать даже с зашумленными данными.
- Обычно используется в таких приложениях, как классификация изображений, классификация текста и биоинформатика.
- Может быть дорогостоящим в вычислительном отношении и может плохо масштабироваться для очень больших наборов данных.
Код:
# 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 — это гиперпараметр, который можно настроить для получения точного результата для конкретной задачи.
Как это работает:
- Принимает новую точку данных и находит K ближайших точек в обучающих данных.
- Использует класс или значение этих K ближайших точек, чтобы сделать прогноз для новой точки данных.
- Количество соседей, K можно настроить.
- Не делайте предположений о базовом распределении данных.
- Простой для понимания и простой в реализации.
- Может быть вычислительно затратным для больших наборов данных.
- Можно ускорить с помощью таких алгоритмов, как шаровые деревья или kd-деревья.
- Часто используется для задач со сложными или нелинейными границами решений.
Код:
# 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-нейронные сети
Нейронная сеть — это алгоритм машинного обучения, вдохновленный человеческим мозгом. Он состоит из взаимосвязанных узлов обработки, известных как искусственные нейроны, которые организованы в слои. Входной слой получает входные данные, и каждый последующий слой применяет преобразования к данным, передавая результат следующему слою. Последний уровень, известный как выходной уровень, обеспечивает предсказание или решение, принятое сетью.
Как это работает:
- Входные данные подаются на входной слой сети.
- Входные данные преобразуются нейронами в каждом последующем слое сети с использованием функций активации.
- Последний слой сети выдает прогноз или решение на основе преобразованных входных данных.
- Во время обучения параметры сети (веса и смещения) настраиваются на основе ошибки между прогнозируемым выходом и истинными целевыми значениями.
- Этот процесс повторяется несколько раз для обучающих данных, пока ошибка не достигнет минимума.
- Затем обученную сеть можно использовать для прогнозирования новых, невидимых данных.
- Прогнозы делаются путем передачи новых данных через обученную сеть и получения выходных данных из последнего слоя.
- Точность сети можно оценить путем сравнения прогнозируемых выходных данных с фактическими целевыми значениями в проверочном или тестовом наборе.
Код:
# 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-ближайшие соседи эффективны для приложений, в которых базовый шаблон не совсем понятен.
Выбор алгоритма зависит от конкретной проблемы, которую вы пытаетесь решить, размера и качества ваших данных и доступных вычислительных ресурсов. Некоторые алгоритмы могут работать лучше для конкретной задачи, в то время как другие могут быть более общими и хорошо работать в более широком диапазоне задач. Рекомендуется попробовать различные алгоритмы и оценить их эффективность, чтобы определить наилучшее решение для вашей конкретной проблемы. Кроме того, разработка функций, выбор функций и настройка гиперпараметров также могут сильно повлиять на производительность модели.