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

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

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

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

Итак, давайте погрузимся и изучим мир логистической регрессии в MATLAB, что позволит вам уверенно решать задачи классификации!



Шаг 1: Загрузите набор данных

Откройте MATLAB и перейдите к Командному окну MATLAB.

Чтобы загрузить набор данных из репозитория MATLAB, используйте функцию load, за которой следует имя набора данных. Например, давайте загрузим набор данных Fisher's Iris:

load fisheriris

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



Шаг 2: Предварительно обработайте набор данных

Извлеките объекты и метки из загруженного набора данных:

X = meas; % Features (measurements)
y = strcmp(species,'versicolor');  % Labels: 1 for 'versicolor', 0 for others

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

X = zscore(X);


Шаг 3: Разделите набор данных

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

cv = cvpartition(y, 'Holdout', 0.2);  % 80% for training, 20% for testing
X_train = X(cv.training,:);
y_train = y(cv.training,:);
X_test = X(cv.test,:);
y_test = y(cv.test,:);


Шаг 4. Обучите модель логистической регрессии

Чтобы обучить модель логистической регрессии, используйте функцию fitglm:

model = fitglm(X_train, y_train, 'Distribution', 'binomial');

Параметр 'Distribution' имеет значение 'binomial' для логистической регрессии.



Шаг 5: Делайте прогнозы

Используйте обученную модель, чтобы делать прогнозы на тестовом наборе:

y_pred = predict(model, X_test);


Шаг 6: интерпретируйте результаты

  1. Интерпретируйте результаты на основе полученных показателей оценки. Например, вы можете проанализировать точность, матрицу путаницы, точность, полноту и оценку F1, чтобы понять, насколько хорошо работает модель.
  2. Вы можете вычислить дополнительные показатели оценки, используя такие функции, как accuracy_score, precision_score, recall_score и f1_score из MATLAB Statistics and Machine Learning Toolbox.
  3. Проанализируйте матрицу путаницы, чтобы увидеть распределение истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных результатов.


Вот код для интерпретации результатов.

% Convert predicted labels to logical data type
y_pred = logical(y_pred);

% Compute evaluation metrics
accuracy = sum(y_pred == y_test) / numel(y_test);
confusion_matrix = confusionmat(y_test, y_pred);
precision = confusion_matrix(2,2) / sum(confusion_matrix(:,2));
recall = confusion_matrix(2,2) / sum(confusion_matrix(2,:));
f1_score = 2 * (precision * recall) / (precision + recall);

% Display the evaluation metrics
fprintf('Accuracy: %.2f%%\n', accuracy * 100);
fprintf('Precision: %.2f\n', precision);
fprintf('Recall: %.2f\n', recall);
fprintf('F1 Score: %.2f\n', f1_score);

% Display the confusion matrix
fprintf('Confusion Matrix:\n');
disp(confusion_matrix);


Давайте рассмотрим код шаг за шагом:

  1. y_pred = logical(y_pred);: Эта строка преобразует предсказанные метки (y_pred) в логический тип данных. Функция logical преобразует элементы y_pred в логические значения (true или false). Это преобразование необходимо, поскольку функция confusionmat требует, чтобы предсказанные метки и истинные метки имели один и тот же тип данных.
  2. accuracy = sum(y_pred == y_test) / numel(y_test);: Эта строка вычисляет точность модели логистической регрессии. Он сравнивает предсказанные метки (y_pred) с истинными метками (y_test) поэлементно, используя оператор ==. Результирующий логический массив указывает, где предсказанные метки соответствуют истинным меткам. Функция sum подсчитывает количество значений true в логическом массиве, что соответствует количеству правильных предсказаний. Наконец, количество правильных прогнозов делится на общее количество выборок (numel(y_test)) для получения точности.
  3. confusion_matrix = confusionmat(y_test, y_pred);: Эта строка вычисляет матрицу путаницы с помощью функции confusionmat. Матрица путаницы представляет собой табличное представление, которое показывает количество истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных прогнозов. Он принимает истинные метки (y_test) и предсказанные метки (y_pred) в качестве входных данных.
  4. precision = confusion_matrix(2,2) / sum(confusion_matrix(:,2));: Эта строка вычисляет точность модели логистической регрессии. Точность — это отношение истинных срабатываний к сумме истинных срабатываний и ложных срабатываний. Здесь confusion_matrix(2,2) представляет количество истинных срабатываний, а sum(confusion_matrix(:,2)) представляет сумму истинных срабатываний и ложных срабатываний.
  5. recall = confusion_matrix(2,2) / sum(confusion_matrix(2,:));: Эта строка вычисляет полноту (также известную как чувствительность или доля истинных положительных результатов) модели логистической регрессии. Отзыв — это отношение истинных положительных результатов к сумме истинных положительных и ложных отрицательных результатов. Здесь confusion_matrix(2,2) представляет количество истинных положительных результатов, а sum(confusion_matrix(2,:)) представляет собой сумму истинных положительных и ложных отрицательных результатов.
  6. f1_score = 2 * (precision * recall) / (precision + recall);: Эта строка вычисляет оценку F1, которая представляет собой гармоническое среднее значение точности и полноты. Оценка F1 обеспечивает сбалансированную меру производительности модели, учитывая как точность, так и полноту. Он вычисляется с использованием значений точности и полноты, полученных ранее.
  7. В следующих fprintf строках отображаются показатели оценки: точность, точность, полнота и оценка F1. Спецификатор %f используется для форматирования чисел с плавающей запятой с двумя десятичными знаками. Знак % используется для обозначения того, что значение следует умножить на 100, чтобы представить его в процентах.
  8. fprintf('Confusion Matrix:\n');: В этой строке отображается заголовок матрицы путаницы.
  9. disp(confusion_matrix);: В этой строке отображается матрица путаницы с использованием функции disp. Матрица путаницы печатается в виде табличного представления количества истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных результатов.

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



Шаг 7. Уточните и оптимизируйте модель (необязательно)

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

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

2. Повторите шаги 4–6 с уточненной моделью и снова оцените ее производительность.

Не стесняйтесь настраивать приведенный выше код или добавлять дополнительные показатели оценки в соответствии с вашими конкретными требованиями.



Заключение

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

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

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

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

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

Удачного кодирования и изучения обширных возможностей логистической регрессии в MATLAB!



Связанные руководства по регрессиям с использованием MATLAB

Вот несколько связанных руководств по различным регрессионным анализам с использованием MATLAB:













Связанные руководства по логистической регрессии с использованием Python

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





Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу