Подход к математическому и машинному обучению

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

Рассмотрим следующий график.

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

Теперь мы можем видеть обе группы по отдельности. Предположим, что если мы хотим думать так: «нужно присвоить одно более высокое значение для всех синих точек данных и нужно присвоить одно низкое значение для всех оранжевых точек данных». Это примерно то же самое, что накладывать нагрузку на оранжевые точки данных, чтобы подтолкнуть их к ногам, и прикреплять воздушные шары к синим точкам данных, чтобы подталкивать их вверх и плавать на поверхности резервуара.

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

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

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

Вероятность

Если P — это вероятность того, что событие произойдет, то 1-P — это то, что событие не произойдет.

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

Преобразование линейной регрессии в логистическую регрессию

Для модели линейной регрессии уравнение выглядит следующим образом:

В линейной регрессии мы предполагаем линейную связь между зависимой переменной (y) и независимыми переменными или признаками (x1, x2, …, xn). Коэффициенты (β0, β1, β2,..., βn) представляют наклоны линейной зависимости.

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

Давайте рассмотрим бинарную категориальную переменную отклика Y, которая может принимать два значения: 0 и 1. Вместо того, чтобы использовать Y непосредственно в качестве отклика, мы используем логит Y, обозначаемый как g(Y), в уравнении регрессии.

Логит-функция определяется как логарифм вероятности положительного исхода:

g(Y) = ln(Y / (1 — Y))

В логистической регрессии мы предполагаем, что логит Y линейно связан с предикторами:

g(Y) = β0 + β1X1 + β2X2 + … + βnXn

Здесь β0, β1, β2, …, βn — коэффициенты регрессии, а X1, X2, …, Xn — предикторы.

Используя логит Y в качестве переменной отклика, мы можем смоделировать линейную зависимость между предикторами и логарифмическими шансами положительного результата. Коэффициенты регрессии (β0, β1, β2, …, βn) оценивают влияние каждого предиктора на логарифмические шансы, показывая, как предикторы вносят вклад в вероятность положительного исхода.

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

Начните с уравнения:

Примените экспоненциальную функцию к обеим сторонам, чтобы исключить логарифм, и следуйте общей математике:

Здесь итоговое уравнение называется сигмовидной функцией (логистической функцией или обратным логитом). Также мы можем рассматривать это как функцию гипотезы (h(X)=p)

Ниже приведено обобщенное уравнение для сигмовидной функции (σ(z)=h(X)=p)

Здесь г = у

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

Граница принятия решения

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

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

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

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

Другими словами, когда выход сигмовидной функции выше 0,5, точка данных классифицируется как один класс, а когда выход сигмовидной функции ниже 0,5, точка данных классифицируется как другой класс. Граница решения — это граница во входном пространстве, где выход сигмовидной функции равен точно 0,5.

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

Функция стоимости (функция потерь), максимальное правдоподобие и градиентный спуск

Функция стоимости

Функция стоимости, также известная как функция потерь, используется для оценки производительности модели логистической регрессии. В логистической регрессии в качестве функции стоимости используется логарифм потерь (бинарная кросс-энтропия). Он количественно определяет несоответствие между предсказанными вероятностями и фактическими результатами.

Функция стоимости получается из функции отрицательного логарифмического правдоподобия, которая является логарифмом функции правдоподобия.

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

Математически функция кросс-энтропийных потерь для бинарной логистической регрессии имеет вид:

Здесь J(θ) представляет потерю перекрестной энтропии, m — количество точек данных, yi ​ – фактический двоичный результат (0 или 1) для iй точки данных, а y^​i​ – прогнозируемая вероятность положительный результат для i-й точки данных.

Максимальное правдоподобие (MLE - оценка максимального правдоподобия)

Функция правдоподобия измеряет качество соответствия модели путем количественной оценки вероятности наблюдения заданного набора результатов (бинарных ответов) при заданных переменных-предикторах.

Математически функция правдоподобия определяется как произведение вероятностей наблюдения фактических результатов (y_i) для каждой точки данных (i) в наборе данных с учетом прогнозируемых вероятностей (p_i) из модели логистической регрессии:

Здесь p_i представляет прогнозируемую вероятность положительного результата для точки данных i, а y_i — фактический результат, либо 0, либо 1.

Градиентный спуск

Градиентный спуск используется в качестве алгоритма оптимизации для поиска оптимальных значений параметров, которые максимизируют вероятность (минимизируют затраты).

Минимизация функции затрат эквивалентна максимизации вероятности наблюдаемых результатов.

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

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression

# Set the random seed for reproducibility
np.random.seed(42)

# Define the sigmoid function
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# Generate a dataset with two concentrations
X, y = make_blobs(n_samples=200, centers=2, random_state=42)

# Plot the dataset
plt.figure(figsize=(12, 4))
plt.subplot(141)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Dataset with Two Concentrations')
plt.colorbar()

# Fit logistic regression to the dataset
logistic_regression = LogisticRegression()
logistic_regression.fit(X, y)

# Plot the decision boundary
plt.subplot(142)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = logistic_regression.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Decision Boundary')
plt.colorbar()

# Plot sigmoid curve
plt.subplot(143)
x_values = np.linspace(-10, 10, 100)
sigmoid_values = 1 / (1 + np.exp(-x_values))
plt.plot(x_values, sigmoid_values)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.title('Sigmoid Curve')

# Plot the cost function against sigmoid(x)=1 and sigmoid(x)=0
plt.subplot(144)
sigmoid_1 = sigmoid(x_values)
cost_sigmoid_1 = -np.log(sigmoid_1)
cost_sigmoid_0 = -np.log(1 - sigmoid_1)
plt.plot(sigmoid_1, cost_sigmoid_1, label='sigmoid(x)=1')
plt.plot(sigmoid_1, cost_sigmoid_0, label='sigmoid(x)=0')
plt.xlabel('sigmoid(x)')
plt.ylabel('Cost')
plt.title('Cost Function')
plt.legend()

plt.tight_layout()
plt.show()

(Вы можете найти полный код в моем GitHub.)

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

Методы оценки модели

График стоимости и итераций (эпохи)

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

Если сюжет ведет себя выше, то его можно считать лучшим.

Кроме того, мы можем использовать следующие показатели для оценки модели. Предположим, мы уже предсказали вероятности для существующего набора значений (меток). Мы можем использовать следующий код для расчета метрик. Давайте оценим их.

import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, roc_auc_score

# Generate random predicted probabilities and true labels
np.random.seed(0)
num_samples = 1000
predicted_probs = np.random.rand(num_samples)
true_labels = np.random.randint(2, size=num_samples)

# Threshold the predicted probabilities to obtain binary predictions
predictions = (predicted_probs >= 0.5).astype(int)

# Calculate evaluation metrics
accuracy = accuracy_score(true_labels, predictions)
precision = precision_score(true_labels, predictions)
recall = recall_score(true_labels, predictions)
f1 = f1_score(true_labels, predictions)
cm = confusion_matrix(true_labels, predictions)
auc_roc = roc_auc_score(true_labels, predicted_probs)

# Print the evaluation metrics
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 score:", f1)
print("Confusion Matrix:")
print(cm)
print("AUC-ROC score:", auc_roc)

(Вы можете найти полный код в моем GitHub.)

Точность

Точность измеряет общую правильность прогнозов. Это отношение количества правильных прогнозов к общему количеству прогнозов. В этом случае точность составляет примерно 0,511, что указывает на то, что около 51,1% прогнозов были правильными.

Точность

Точность — это доля истинно положительных прогнозов от всех положительных прогнозов. Он измеряет точность положительных прогнозов. В этом случае точность составляет приблизительно 0,536, что указывает на то, что около 53,6% положительных прогнозов были правильными.

Отзывать

Отзыв, также известный как чувствительность или доля истинных положительных результатов, представляет собой долю истинных положительных прогнозов от всех фактических положительных случаев. Он измеряет способность модели идентифицировать положительные примеры. В этом случае отзыв составляет примерно 0,494, что указывает на то, что около 49,4% фактических положительных случаев были правильно идентифицированы.

Оценка F1

Оценка F1 представляет собой гармоническое среднее точности и полноты. Он обеспечивает сбалансированную меру, учитывающую как точность, так и полноту. В этом случае оценка F1 составляет приблизительно 0,514, что указывает на компромисс между точностью и полнотой.

Матрица путаницы

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

Матрица показывает, что имеется 252 истинных отрицательных результата (прогнозируемые отрицательные и фактически отрицательные), 224 ложноположительных результата (прогнозируемые положительные, но фактически отрицательные), 265 ложноотрицательных результатов (прогнозируемые отрицательные, но фактически положительные) и 259 истинных положительных результатов (прогнозируемые положительные и фактически положительные). .

Оценка AUC-ROC

Оценка AUC-ROC (площадь под кривой рабочих характеристик приемника) измеряет способность модели различать положительные и отрицательные экземпляры при разных порогах классификации. Он варьируется от 0 до 1, где 0,5 представляет собой случайный классификатор, а 1 представляет собой идеальный классификатор. В этом случае оценка AUC-ROC составляет приблизительно 0,505, что указывает на слабый классификатор, который работает лишь немного лучше, чем случайное угадывание.

Эти показатели оценки дают представление о производительности модели бинарной классификации. Точность, достоверность, полнота и оценка F1 обычно используются для оценки производительности модели, а матрица путаницы обеспечивает подробную разбивку прогнозов. Оценка AUC-ROC измеряет общую дискриминационную способность модели.

Теперь мы изучили все основные понятия бинарной логистической регрессии. Что делать, если поведение данных не является бинарным (имеют несколько классов)? В этом случае мы используем мультиклассовую логистическую регрессию.

Мультиклассовая логистическая регрессия

Многоклассовая логистическая регрессия с активацией softmax — это расширение бинарной логистической регрессии, позволяющее классифицировать данные более чем по двум классам. Это популярный алгоритм, используемый в машинном обучении для -проблемы классификации классов. Чтобы понять мультиклассовую логистическую регрессию, давайте сначала рассмотрим основы логистической регрессии.

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

Модель логистической регрессии можно представить в виде:

logit(p) = β₀ + β₁x₁ + β₂x₂ + … + βₚxₚ

Здесь logit(p) — это логарифмические шансы вероятности p положительного класса, β₀ — член перехвата, β₁, β₂, ..., βₚ — коэффициенты для входных признаков x₁, x₂, ..., xₚ.

Чтобы расширить логистическую регрессию до многоклассовой классификации, мы используем функцию активации softmax вместо сигмовидной функции. Функция softmax обобщает сигмовидную функцию на несколько классов и выводит распределение вероятностей по всем классам. Это гарантирует, что сумма предсказанных вероятностей равна 1.

Функцию softmax можно определить следующим образом:

softmax (zᵢ) = exp (zᵢ) / Σⱼ (exp (zⱼ))

Здесь zᵢ представляет логит для класса i, а zⱼ представляет логит для класса j. Функция softmax возводит в степень логиты и нормализует их путем деления каждого возведенного в степень значения на сумму всех возведенных в степень значений.

В многоклассовой логистической регрессии мы стремимся узнать коэффициенты β₀, β₁, β₂, ..., βₚ для каждого класса, аналогично бинарной логистической регрессии. Модель предсказывает вероятность того, что входные данные принадлежат каждому классу, и относит их к классу с наибольшей вероятностью.

Чтобы проиллюстрировать мультиклассовую логистическую регрессию, давайте рассмотрим простой пример с двумя входными функциями (x₁ и x₂) и тремя классами.

import numpy as np
import matplotlib.pyplot as plt

# Generate some random data
np.random.seed(42)
num_samples = 100
x1 = np.random.normal(loc=-2, scale=1, size=num_samples)
x2 = np.random.normal(loc=1, scale=1, size=num_samples)
X = np.vstack((x1, x2)).T
y = np.random.randint(low=0, high=3, size=num_samples)

# Plot the data
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1)
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('Multiclass Logistic Regression - Data')
plt.show()

(Вы можете найти полный код в моем GitHub.)

Приведенный выше код генерирует случайный набор данных с двумя входными функциями (x₁ и x₂) и присваивает метки 0, 1 и 2 трем классам. Точечная диаграмма визуализирует точки данных разными цветами, представляющими каждый класс.

Чтобы выполнить многоклассовую логистическую регрессию, мы можем использовать библиотеки, такие как scikit-learn в Python. Вот пример использования класса LogisticRegression scikit-learn с активацией softmax:

from sklearn.linear_model import LogisticRegression

# Create a logistic regression model with softmax activation
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')

# Fit the model on the training data
model.fit(X, y)

# Plot the decision boundaries
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, 0.02),
                       np.arange(x2_min, x2_max, 0.02))
Z = model.predict(np.c_[xx1.ravel(), xx2.ravel()])
Z = Z.reshape(xx1.shape)

plt.contourf(xx1, xx2, Z, cmap=plt.cm.Set1, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1)
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('Multiclass Logistic Regression - Decision Boundaries')
plt.show()

(Вы можете найти полный код в моем GitHub.)

Приведенный выше код создает модель LogisticRegression с параметром 'multinomial' для многоклассовой классификации и использует решатель 'lbfgs' для оптимизации параметров модели. Затем модель обучается на входных функциях X и соответствующих им метках y. Наконец, границы решений нанесены вместе с точками данных следующим образом.

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

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