Вопрос или проблема
Я новичок в машинном обучении и науке о данных, и у меня возникают трудности с простой задачей. В моей задаче мне дана серия данных $X_i$, где $X_i = (x_{i1}, x_{i2})$, и у каждой точки данных есть метка $y_i$, где $y_i \in [-1, 1]$.
Моя первая задача заключается в следующем: дан вектор веса $w$, напишите функцию для расчета логистической потери (также известной как отрицательная логарифмическая правдоподобие) для данной выборки данных.
Мне также поставлена задача разработать функцию, которая вычисляет градиент логистической потери, оцениваемой при $w$, и обе эти функции будут использоваться совместно для выполнения градиентного спуска на данной выборке данных. Пока что меня строго интересует разработка первой функции.
Я понимаю логарифмическое правдоподобие как $\sum_{i=1}^n y_i \log p(x_i) + (1 − y_i) \log (1 − p(x_i))$ для бинарного классификатора, но не уверен, как написать функцию, которая вычисляет отрицательное логарифмическое правдоподобие. В частности, как мы вычисляем $p(x_i)$ и как в это вовлечен данный вектор веса $w$?
В вашем наборе данных две характеристики $x_{i1}$ и $x_{i2}$ для каждой точки данных, $i$. Таким образом, ваш вектор веса будет выглядеть как [$w_0$,$w_1$,$w_2$], где $w_0$ — это смещение, а следующие два элемента — веса, соответствующие двум характеристикам соответственно.
Следовательно, предсказанный результат будет
$p(x_i) = w_0 + (w_1*x_{i1}) + (w_2*x_{i2})$
Классовые метки -1 и 1. Следовательно, это задача бинарной классификации. Было бы неплохо иметь метки 0 и 1 для использования стандартной формулы для логарифмического правдоподобия. Поэтому подумайте о замене -1 на 0. Затем примените предложенную вами формулу для расчета логарифмического правдоподобия.
В противном случае, если вы не предпочитаете изменять метки и оставить их [-1,1] как таковые, измените формулу следующим образом:
$log{-}likelihood = \sum_{i=1}^n max(y,0)*\log p(x_i) + min(1-y,1)*(1-\log p(x_i))$
Первый член в формуле должен стать равным нулю, когда метка $y$ равна -1, а второй член должен стать равным нулю, когда метка $y$ равна 1.
После получения логарифмического правдоподобия просто измените его знак ($-1 * log{-}likelihood$), чтобы получить отрицательное логарифмическое правдоподобие.
Надеюсь, это поможет.
Ответ или решение
Чтобы найти логистическую потерю (также известную как отрицательная логарифмическая правдоподобие) в задаче бинарной логистической регрессии, важно понимать, как работает модель логистической регрессии, а также принципы вычисления логистической потери.
Введение в бинарную логистическую регрессию
В бинарной логистической регрессии используемая модель вычисляет вероятность принадлежности объекта к положительному классу. Для заданного веса $w$ и входных данных $X_i$ (где $Xi = (x{i1}, x_{i2})$) вероятности $p(x_i)$ определяются следующим образом:
$$
p(x_i) = \sigma(w \cdot X_i) = \frac{1}{1 + e^{-(w_0 + w1 x{i1} + w2 x{i2})}}
$$
Здесь $\sigma$ – это сигмоидная функция, а $w_0, w_1, w_2$ – это веса, которые включают смещение и коэффициенты для признаков соответственно.
Формула логарифмического правдоподобия
Ваша задача – написать функцию для вычисления логистической потери. Основная формула для логарифмического правдоподобия выглядит следующим образом:
$$
\text{log-likelihood} = \sum_{i=1}^n y_i \log p(x_i) + (1 – y_i) \log (1 – p(x_i))
$$
Однако, поскольку ваши метки $y_i$ принимают значения -1 и 1, для применения этой формулы мы можем сделать несколько изменений.
Изменение меток
Чтобы преобразовать метки в стандартный формат для бинарной классификации, вы можете заменить -1 на 0. Это приведет к следующей формуле:
$$
\text{log-likelihood} = \sum_{i=1}^n (y_i + 1) / 2 \cdot \log p(x_i) + (1 – (y_i + 1) / 2) \cdot \log (1 – p(x_i))
$$
Тем не менее, если вы решите сохранить метки как -1 и 1, формула логарифмического правдоподобия будет выглядеть так:
$$
\text{log-likelihood} = \sum_{i=1}^n \max(y_i, 0) \cdot \log p(x_i) + \min(1 – y_i, 1) \cdot \log(1 – p(x_i))
$$
Расчет логистической потери
Теперь, чтобы вычислить логистическую потерю, нужно просто взять отрицательное значение логарифмического правдоподобия:
$$
\text{negative log-likelihood} = -(\text{log-likelihood})
$$
Пример реализации функции
Далее, представим реализацию данной концепции на Python.
import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def logistic_loss(X, y, w):
n = len(y)
p = sigmoid(X @ w) # X @ w вычисляет матричное произведение
# Преобразование y, если необходимо
y_transformed = (y + 1) / 2
# Вычисление логарифмического правдоподобия
log_likelihood = np.sum(y_transformed * np.log(p) + (1 - y_transformed) * np.log(1 - p))
# Возвращаем отрицательную величину логарифмического правдоподобия
return -log_likelihood
# Пример использования:
X = np.array([[1, 2], [1, 0], [0, 1]]) # Массив с данными
y = np.array([-1, 1, -1]) # Метки классов
w = np.array([0.5, 1.0, -1.0]) # Вектор весов
loss = logistic_loss(X, y, w)
print(f"Logistic loss: {loss}")
Заключение
Таким образом, мы рассмотрели, как вычислить логистическую потерю для бинарной логистической регрессии, используя заданный вектор весов и входные данные. Эта модель и основанные на ней методы, такие как градиентный спуск, лежат в основе многих применений в области машинного обучения. Понимание этих основ поможет вам более уверенно двигаться дальше в вашем обучении и практической деятельности в области машинного обучения и науки о данных.