Почему функция стоимости логистической регрессии имеет логарифмическое выражение?
Функция затрат для логистической регрессии
cost(h(theta)X,Y) = -log(h(theta)X) or -log(1-h(theta)X)
Мой вопрос заключается в том, что является основой для размещения логарифмического выражения для функции стоимости. Откуда это происходит? Я считаю, что вы не можете просто положить "-log" из ниоткуда. Если бы кто-то мог объяснить вывод функции стоимости, я был бы благодарен. спасибо.
Ответы
Ответ 1
Источник: мои собственные заметки, сделанные во время курс Standford Machine Learning в Курсере, автор Andrew Ng. Все кредиты ему и этой организации. Курс свободно доступен для всех, кто будет принят в своем собственном темпе. Изображения сделаны мной, используя LaTeX (формулы) и R (графика).
Функция гипотезы
Логистическая регрессия используется, когда переменная y, которая хочет быть предсказанной, может принимать только дискретные значения (то есть: классификация).
Учитывая проблему двоичной классификации (y может принимать только два значения), то, имея набор параметров θ и множество входных признаков x, функция гипотезы может быть определена так, что она ограничена между [0, 1], в которой g() представляет сигмоидальную функцию:
![введите описание изображения здесь]()
Эта функция гипотезы представляет в то же время оцененную вероятность того, что y = 1 на входе x, параметризованном θ:
![введите описание изображения здесь]()
Функция затрат
Функция стоимости представляет собой цель оптимизации.
![введите описание изображения здесь]()
Хотя возможное определение функции стоимости может быть средним для евклидова расстояния между гипотезой h_θ (x) и фактическим значением y среди всех m выборок в обучающем наборе, если функция гипотезы формируется с сигмоидальная функция, это определение приведет к невыпуклой функции стоимости, что означает, что локальный минимум можно было бы легко найти до достижения глобального минимума. Чтобы гарантировать, что функция стоимости является выпуклой (и, следовательно, обеспечивает сходимость к глобальному минимуму), функция стоимости преобразуется с использованием логарифма сигмоидной функции.
![введите описание изображения здесь]()
Таким образом, целевая функция оптимизации может быть определена как среднее из затрат/ошибок в обучающем наборе:
![введите описание изображения здесь]()
Ответ 2
Эта функция стоимости является просто переформулировкой критерия вероятности maximum- (log-).
Модель логистической регрессии:
P(y=1 | x) = logistic(θ x)
P(y=0 | x) = 1 - P(y=1 | x) = 1 - logistic(θ x)
Вероятность записывается как:
L = P(y_0, ..., y_n | x_0, ..., x_n) = \prod_i P(y_i | x_i)
Лог -l Ikelihood это:
l = log L = \sum_i log P(y_i | x_i)
Мы хотим найти θ, которая максимизирует вероятность:
max_θ \prod_i P(y_i | x_i)
Это то же самое, что максимизация журнала -l ikelihood:
max_θ \sum_i log P(y_i | x_i)
Мы можем переписать это как минимизацию стоимости C = -l:
min_θ \sum_i - log P(y_i | x_i)
P(y_i | x_i) = logistic(θ x_i) when y_i = 1
P(y_i | x_i) = 1 - logistic(θ x_i) when y_i = 0
Ответ 3
Мое понимание (не 100% эксперт здесь, я могу ошибаться) заключается в том, что log
можно грубо объяснить как un-do exp
, который появляется в формуле для gaussian плотность вероятности. (Помните -log(x) = log(1/x)
.)
Если я правильно понимаю Епископа [1]: если мы предположим, что наши положительные и отрицательные образцы обучения взяты из двух разных гауссовских кластеров (другое место, но такая же ковариация), тогда мы сможем разработать идеальный классификатор. И этот классификатор выглядит так же, как логистическая регрессия (например, граница линейного решения).
Конечно, следующий вопрос: почему мы должны использовать классификатор, который является оптимальным для разделения гауссовых кластеров, когда наши учебные данные часто выглядят иначе?
[1] Распознавание образов и машинное обучение, Кристофер М. Бишоп, глава 4.2 (вероятностные генерирующие модели)
Ответ 4
Дело в том, что функция стоимости (функция сигмоида) будет возвращать выходное значение между [0,1], но когда мы складываем значения сигмоида по большим точкам данных, мы можем столкнуться с проблемами численной стабильности, так как результаты функции сигмоида могут быть очень маленькие десятичные числа. Использование функции log() в функции sigmoid также позволяет решить возникающие проблемы с числовыми вычислениями, фактически не влияя на цель оптимизации.