Машинное обучение — это увлекательная область, которая позволяет компьютерам учиться на данных и делать прогнозы или принимать решения без явного программирования. Среди различных методов машинного обучения обучение с учителем является наиболее распространенным и важным подходом. Эта статья служит вводным руководством по обучению с учителем и предназначена для начинающих. Мы изучим фундаментальные принципы обучения с учителем, обсудим популярные алгоритмы, такие как линейная регрессия, деревья решений и k-ближайшие соседи (k-NN), а также предоставим практические примеры с фрагментами кода Python с использованием библиотеки Scikit-learn.
Предпосылка
Прежде чем погрузиться в захватывающий мир алгоритмов обучения с учителем, важно иметь базовое представление о языке программирования Python и методах работы с данными. Полезным будет знакомство с такими понятиями, как переменные, типы данных, циклы и условные операторы. Кроме того, будет полезно иметь представление о NumPy, библиотеке Python для численных вычислений, поскольку она упрощает многие математические операции, которые являются неотъемлемой частью машинного обучения.
Если вы новичок в Python, есть несколько доступных онлайн-учебников и ресурсов, которые могут дать вам прочную основу. По мере изучения этой статьи мы будем предоставлять фрагменты кода Python и объяснения, но предварительное понимание Python улучшит ваш опыт обучения.
Что такое контролируемое обучение?
Представьте, что вы садовник и учитесь различать два вида цветов: розы и подсолнухи. Вам дается коллекция цветов, и на каждом из них есть этикетка, на которой указано, роза это или подсолнух. Наблюдая и изучая эти помеченные цветы, вы начинаете распознавать закономерности, отличающие эти два типа.
При контролируемом обучении компьютер следует аналогичному процессу. Он учится на помеченных примерах, чтобы делать прогнозы на основе новых, невидимых данных. «Наблюдение» исходит из помеченных данных, которые действуют как учитель, направляя процесс обучения алгоритма.
Обучение с учителем можно использовать как для задач регрессии, так и для задач классификации. В задачах регрессии алгоритм предсказывает непрерывные значения, например, предсказывает цену дома на основе его характеристик. В задачах классификации алгоритм предсказывает дискретные метки, такие как классификация электронной почты как спама или нет.
Линейная регрессия: предсказание тенденций
Давайте подумаем о линейной регрессии как об инструменте, который помогает предсказывать тенденции. Представьте себе сценарий, в котором у вас есть список цен на жилье и соответствующие области. Вы заметили, что с увеличением площади дома растет и его цена. Линейная регрессия направлена на то, чтобы провести прямую линию через эти данные, фиксируя общую тенденцию. Как только линия установлена, вы можете предсказать цену дома на основе его площади, используя уравнение линии.
Математически модель линейной регрессии представляет собой линейную зависимость между входной переменной (независимой переменной) и выходной переменной (зависимой переменной). Линия представлена уравнением:
y = mx + b
Где:
y
— прогнозируемое значение (зависимая переменная),x
— входное значение (независимая переменная),m
— наклон линии, аb
- это y-перехват.
Цель линейной регрессии — найти наиболее подходящую линию, которая минимизирует ошибку между прогнозируемыми значениями и фактическими значениями в обучающих данных.
Деревья решений: принимайте решения как детектив
Представьте, что вы покупаете новую машину и пытаетесь выбрать между двумя вариантами: синяя машина и фиолетовая машина.
Что касается синего автомобиля, вы обнаружите, что у него больше миль, но он имеет некоторые дополнительные функции и более низкую цену по сравнению с фиолетовым автомобилем. С другой стороны, у фиолетовой машины меньше пробега, но ей не хватает некоторых дополнительных функций, которые предлагает синяя машина. Фиолетовый автомобиль имеет более высокую цену.
Чтобы принять решение, вы начинаете с рассмотрения ваших приоритетов. Если вы цените новейшие функции по более доступной цене, синий автомобиль может быть лучшим вариантом для вас. Однако, если вы отдаете предпочтение меньшему пробегу и не возражаете заплатить за это немного больше, фиолетовый автомобиль может быть более привлекательным.
Вы также учитываете другие факторы, такие как история обслуживания, эффективность использования топлива и общее состояние каждого автомобиля, которые могут дополнительно повлиять на ваше решение.
Используя дерево решений, вы можете создать визуальное представление этих факторов и взвесить их важность в соответствии со своими предпочтениями. Пробираясь вниз по ветвям дерева решений, вы можете сравнить и сопоставить характеристики обоих автомобилей и в конечном итоге сделать осознанный выбор, который соответствует вашим потребностям и бюджету.
В этом примере дерево решений помогает вам ориентироваться в сложном процессе выбора автомобиля, принимая во внимание различные переменные и личные предпочтения, чтобы принять наилучшее решение для вас.
Точно так же деревья решений в машинном обучении задают ряд вопросов о данных, чтобы классифицировать их или делать прогнозы. Каждый вопрос разбивает данные на подмножества, что приводит к древовидной структуре. Это позволяет алгоритму принимать решения на основе признаков, присутствующих в данных.
Процесс принятия решений в дереве решений включает в себя выбор наиболее информативных функций, которые эффективно делят данные на отдельные классы. Каждый внутренний узел представляет собой вопрос; каждая ветвь представляет собой ответ на вопрос; и каждый листовой узел представляет окончательное решение или результат.
Построение дерева решений включает в себя поиск лучших функций и точек разделения, которые приводят к наиболее точным прогнозам на основе обучающих данных. Следуя по пути от корневого узла к конечному узлу, алгоритм может классифицировать новые точки данных на основе изученных правил.
k-ближайшие соседи (k-NN): обучение у соседей
Давайте представим, что вы только что переехали в новый район и хотите знать, дружелюбный и безопасный ли это район. Вы решаете расспросить k-ближайших соседей, людей, живущих ближе всего к вашему дому, об их опыте. Собрав информацию от них, вы можете получить представление о том, чего ожидать в районе.
В алгоритме k-ближайших соседей (k-NN) «k» представляет количество рассматриваемых соседей. Алгоритм смотрит на точки данных, наиболее близкие к той, которую вы хотите предсказать, и принимает решение на основе их меток. Если большинство ближайших точек относятся к определенному классу, алгоритм присваивает этот класс новой точке данных.
Алгоритм k-NN не строит конкретную модель на этапе обучения. Вместо этого он запоминает обучающие данные и использует их для прогнозирования во время выполнения. Ключевым решением в k-NN является определение подходящего значения «k» и метрики расстояния, используемой для измерения сходства между точками данных.
Внедрение контролируемых алгоритмов обучения с помощью Python и Scikit-learn
Чтобы применить эти алгоритмы на практике, мы будем использовать Python и библиотеку Scikit-learn, которая предоставляет мощные инструменты для машинного обучения. Если вы еще не установили Scikit-learn, вы можете сделать это с помощью следующей команды:
pip install scikit-learn
Мы начнем с подготовки данных, где мы организуем и предварительно обработаем наши размеченные данные. Далее мы будем обучать наши модели на подготовленных данных, используя алгоритмы линейной регрессии, деревьев решений и k-NN. Наконец, мы оценим производительность модели и сделаем прогнозы на основе новых, ранее неизвестных данных.
Подготовка данных
Подготовка данных является важным этапом в процессе машинного обучения. Он включает в себя очистку и организацию данных, чтобы убедиться, что они подходят для обучения и тестирования наших моделей. Данные могут поступать из различных источников и могут потребовать обработки пропущенных значений, масштабирования и преобразования категориальных переменных в числовые представления.
Предположим, у нас есть набор данных о домах с соответствующими площадями и ценами, представленный в виде CSV-файла:
area,price 1200,300000 1500,350000 1800,400000 2000,420000 2200,450000
Мы можем использовать Pandas, популярную библиотеку Python для обработки данных, для загрузки и предварительной обработки данных:
import pandas as pd # Load the dataset from CSV file data = pd.read_csv('house_data.csv') # Separate the features (areas) and target variable (prices) X = data['area'].values.reshape(-1, 1) y = data['price'].values
Обучение модели — линейная регрессия
Подготовив наши данные, мы можем приступить к обучению модели линейной регрессии:
from sklearn.linear_model import LinearRegression # Create and train the Linear Regression model model = LinearRegression() model.fit(X, y)
Обучение модели — деревья решений
Для деревьев решений мы используем класс DecisionTreeRegressor для задач регрессии:
from sklearn.tree import DecisionTreeRegressor # Create and train the Decision Tree model model = DecisionTreeRegressor() model.fit(X, y)
Обучение модели — k-ближайшие соседи (k-NN)
Для k-ближайших соседей мы используем класс KNeighborsRegressor для задач регрессии:
from sklearn.neighbors import KNeighborsRegressor # Create and train the k-NN model model = KNeighborsRegressor(n_neighbors=3) model.fit(X, y)
Оценка модели
После обучения модели важно оценить ее производительность. Для задач регрессии общие показатели оценки включают среднюю абсолютную ошибку (MAE) и среднеквадратичную ошибку (RMSE):
from sklearn.metrics import mean_absolute_error, mean_squared_error # Make predictions on the training data predictions = model.predict(X) # Calculate MAE and RMSE mae = mean_absolute_error(y, predictions) rmse = mean_squared_error(y, predictions, squared=False) print("Mean Absolute Error:", mae) print("Root Mean Squared Error:", rmse)
Заключение
Поздравляем! Вы сделали свои первые шаги в мире алгоритмов обучения с учителем. Мы рассмотрели основные концепции обучения с учителем и изучили популярные алгоритмы, такие как линейная регрессия, деревья решений и метод k-ближайших соседей (k-NN). Кроме того, мы предоставили практические примеры и фрагменты кода Python с использованием библиотеки Scikit-learn, что позволит вам приступить к созданию моделей машинного обучения.
Помните, практика делает совершенным. Продолжая свое путешествие в области машинного обучения, попробуйте поэкспериментировать с различными наборами данных, настроить параметры и изучить другие алгоритмы. Чем больше вы исследуете и узнаете, тем более опытным вы станете в этой захватывающей области.
Имейте также в виду, что эта статья служит введением в обучение с учителем, и по мере продвижения в машинном обучении вам предстоит узнать гораздо больше. Вы можете столкнуться с трудностями, но не отчаивайтесь. Воспринимайте их как возможность учиться и расти как специалист по машинному обучению.
Вам понравилось читать? подписывайтесь на меня в Twitter и LinkedIn
Удачного кодирования!