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

Гипотеза

Помните, что гипотеза линейной регрессии такова:

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

Функция гипотезы возвращает вероятность того, что y = 1, учитывая x, параметризованный θ, записанный как: h (x) = P (y = 1 | x; θ). Границу принятия решения можно описать как: Прогноз 1, если θᵀx ≥ 0 → h (x) ≥ 0,5; Предскажите 0, если θᵀx ‹0 → h (x)‹ 0,5.

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

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

Интуитивно мы хотим назначить большее наказание при прогнозировании 1, когда фактическое значение равно 0, и когда прогнозируем 0, когда фактическое значение равно 1. Функция потерь логистической регрессии делает именно это, что называется логистическими потерями. См. Ниже. Если y = 1, глядя на график ниже слева, когда предсказание = 1, стоимость = 0, когда предсказание = 0, алгоритм обучения наказывается очень большими затратами. Точно так же, если y = 0, график справа показывает, что прогноз 0 не имеет наказания, но прогноз 1 имеет большое значение затрат.

Еще одно преимущество этой функции потерь заключается в том, что, хотя мы смотрим на нее отдельно по y = 1 и y = 0, ее можно записать как одну формулу, которая обеспечивает удобство вычислений:

Таким образом, функция стоимости модели - это сумма всех выборок обучающих данных:

Регуляризация

Прежде чем подбирать параметры для обучающих данных с помощью этой функции стоимости, давайте кратко поговорим о регуляризации. Обычно используются два типа регуляризации: L1 (лассо) и L2 (гребень). Вместо прямой оптимизации вышеуказанной функции стоимости с помощью регуляризации мы добавляем ограничение на размер коэффициентов, чтобы предотвратить переобучение. L1 и L2 адаптируют разные способы установки верхних границ коэффициентов, что определяет, что L1 имеет возможность делать выбор признаков, делая коэффициенты 0 для менее важных признаков и смягчая проблему мультиколлинеарности, в то время как L2 также штрафует очень большие коэффициенты, но не сделайте any равным 0. Также существует параметр, который управляет весом ограничения, λ, так что коэффициенты не будут подвергаться слишком жесткому наказанию, что приведет к недостаточной подгонке.

С точки зрения того, почему L1 и L2 имеют разные возможности из-за «возведенного в квадрат» и «абсолютного» значения, и как λ влияет на вес регуляризованного члена и исходного подходящего термина, это очень интересная тема. Мы не будем вдаваться в подробности здесь, но это определенно стоит вашего изучения и исследования. Ниже показано, как обновить исходную функцию стоимости до регуляризованной функции стоимости.

Оптимизация

При правильном алгоритме обучения мы можем начать подгонку с минимизации J (θ) как функции θ, чтобы найти оптимальные параметры. Мы все еще можем применить градиентный спуск в качестве алгоритма оптимизации. Он берет частную производную от J по θ (наклон J) и обновляет θ через каждую итерацию с выбранной скоростью обучения α, пока градиентный спуск не сойдется. См. Запрос Python ниже для оптимизации регуляризованной логистической регрессии L2. Здесь есть хорошая статья, в которой подробно объясняется векторизованная реализация процесса оптимизации.

## Vectorized Implementation of Optimization Using Gradient Descent
# Define Cost function
def cost(t, h, l=l, X=X, y=y, m=m):
    cost = np.transpose(-y)@np.log(h) - np.transpose(1-y)@np.log(1-h) + (l/2)*np.transpose(t[1:])@t[1:]
    cost = (1/m)*cost
    return cost

# Define first derivative of cost function
def cost_dev(j, t, X=X, y=y, m=m):
    dev = X[:, j]@(1/(1 + np.exp(-X@theta)) - y)
    dev = (1/m)*dev
    return dev
# Define iterations
cost_list = []
theta_temp = np.zeros(theta.shape)
theta_list = []
for i in range(1000000):
    
    for j in range(len(theta)): 
        if j == 0:
            theta_temp[j] = theta[j] - a*cost_dev(j, theta)
        else:
            theta_temp[j] = theta[j]*(1 - (a*lmbd)/m) - a*cost_dev(j, theta)
    
    theta = theta_temp        
    hypo = 1/(1 + np.exp(-X@theta))
    
    theta_list.append(list(theta))
    cost_val = cost(theta, hypo)
    cost_list.append(cost_val)

Я хотел бы немного поговорить о другом популярном алгоритме оптимизации, методе Ньютона, который применяет другой подход для достижения глобального минимума функции стоимости. Как и в случае с градиентным спуском, мы сначала берем частную производную от J (θ), которая является наклоном J (θ), и отмечаем ее как f (θ). Вместо уменьшения θ на определенную выбранную скорость обучения α, умноженную на f (θ), метод Ньютона получает обновленный θ в точке пересечения касательной к f (θ) на предыдущей оси θ и x. После количества итераций метод Ньютона сходится к f (θ) = 0.

См. Упрощенный график выше. Желтая пунктирная линия, начиная справа, представляет собой касательную к f (θ) в точке θ0. Он определяет положение θ1, а расстояние от θ0 до θ1 равно Δ. Этот процесс повторяется до тех пор, пока не будет найдено оптимальное θ, при котором f (θ) = 0, что на этом графике равно θ3. См. Уравнения обновления θ, как показано ниже.

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

Продолжение следует…