Это 20-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Logistic Regression
В отличие от линейной регрессии, предсказываемый здесь y является дискретным значением. Используемый алгоритм логистической регрессии является одним из самых популярных и широко используемых алгоритмов обучения на сегодняшний день.
Помните классификацию обучения с учителем и без учителя? Классификация Эмай: спам/не спам? Онлайн-транзакции: мошенничество (да/нет)? Опухоль: злокачественная/доброкачественная
Электронная почта: это спам Онлайн-транзакции: есть ли мошенничество? Классификация опухоли: добросовестно злокачественная
Если вы помните, то знаете, что все вышеперечисленное — это дискретное контролируемое обучение. Три вышеперечисленные проблемы имеют общие черты:
у∈{0,1}
0: отрицательный класс"
1: «Положительный класс»
Конечно, не все дискретные задачи являются либо черными, либо белыми и имеют только два исхода, а также может быть конечное число y∈{0,1,3,...,n}.
Например
Начните с простого двухклассового дискретного:
Прогнозирование доброкачественной или злокачественной опухоли по ее размеру:
Если мы по-прежнему будем использовать метод линейной регрессии для подгонки, это не сработает. Например вот так:
Теперь мы предполагаем для этой подобранной линииЗлокачественный, в противном случае доброкачественный. Вы можете сказать, что это не подходит.
А вдруг:
Есть много отвратительных опухолей, которые считаются доброкачественными.
Таким образом, линейная регрессия не подходит для дискретных задач.
логистическая регрессия
Как насчет дискретной регрессии? Сначала мы должны убедиться:
Таким образом, у вас не будет таких проблем, как линейная регрессия. Линейная регрессия не имеет значения, как вы к ней подходите. Пока он превышает определенный диапазон, он всегда будет отображатьсяСлучай.
Как это улучшить?
При этом используется сигмовидная функция, также известная как логистическая функция:
После применения формулы линейной регрессии к логистической функции мы получаем:
Теперь известно, какЗначение фиксировано между 0 и 1, так как же описать результат вывода?
Расчетная вероятность того, что y = 1 на входе x.
Описывает вероятность вывода, когда вход x равен y = 1.
Например, y = 1 представляет злокачественную опухоль, а результат, полученный пользователем при вводе x, равен 0,7.
Вместо того, чтобы говорить: «Поздравляем, у вас злокачественная опухоль», вы должны сказать: «Вероятность того, что у вас злокачественная опухоль, составляет 70%».
Нормальный результат, выраженный в вероятностных терминах:
Из приведенной выше формулы также можно вывести
граница решения
Только что упоминалось выше, чтобы описать результаты, чтобы сказать, что вход x возможность y=1. Но в строгом смысле не все считается возможным, когда y=1.
Предполагать:
- predict y=1 if
- predict y=0 if
Вообще говоря,Больше или равно 0,5 означает заключение относительно y=1, а меньше 0,5 означает заключение относительно 0.
Обратите внимание, чтобы различать логику: например, после ввода x, y=0,2, вы не можете сказать, что у вас есть 20%-й шанс быть злокачественной опухолью, но что у вас есть 80%-й шанс быть доброкачественной опухолью. .
Приведенное выше утверждение также может быть эквивалентно
Предполагать:
- predict y=1 if
- predict y=0 if
из-за вышеизложенногоИзображение положительное, когда z>0, и отрицательное, когда z, поэтому приведенное выше преобразование может быть выполнено.
иГраница решениякогда.
Нарисуйте изображение, чтобы понять более интуитивно:
На приведенном выше рисунке предполагается, что мы нашли функцию прогнозирования,в, внесение
Вам не нужно беспокоиться о том, как получилась функция предсказания сейчас, это будет рассмотрено далее в статье.
вэтоэту прямую. Эта прямая линия является границей решения. И область красного креста над этой линиейПлощадь называется площадью y=1. И наоборот, синий кружок внизу — это область y=0.
The decision boundary is a property of the hypothesis.
Граница решения — это свойство гипотетической функции, не зависящее от данных. То есть, хотя нам нужен набор данных для определения значения θ, как только он определен, наша граница решения определена, а остальное не имеет ничего общего с набором данных, и набор данных не должен быть визуализируется на изображении.
Теперь более сложный пример:
Для этого изображения наша функция предсказания,в
Когда у = 1, это
Когда у = 0, это
В этом примере граница решения
Как подобрать логистическую регрессию
Training set:
m examples
How to choose parameters ?
Начнем с нашего тренировочного набора, который составляет m точек. Перечислите x как матрицу, как и раньше, и добавьте,
Тогда как выбрать θ?
Чтобы рассчитать θ, нам сначала нужно найти функцию стоимости.
функция стоимости
Помните функцию стоимости для линейной регрессии?
Чтобы написать это по-другому, используйте
Представляет разницу между функцией прогнозирования и фактическим значением, а функция стоимости J представляет среднее значение после суммирования затрат всех обучающих выборок и функции прогнозирования.
Таким образом, линейную функцию ретроспективных затрат также можно записать в виде:
Если вы продолжите использовать эту функцию стоимости в дискретных значениях, результатом будет невыпуклая функция после рисования изображения. Длинное дно такое, а значит, гладко найти оптимальное решение не получится.
Итак, нам нужно найти выпуклую функцию как функцию стоимости логистической регрессии:
Logistic regression cost function
Если y=1, изображение выглядит следующим образом:
Мы знаем, что диапазон значений h(x) находится в диапазоне от 0 до 1. В сочетании с характеристиками изображения журнала мы можем понять, как выглядит приведенное выше изображение.
У этой функции есть несколько интересных приятных свойств:
Когда функция стоимости равна 0, это функция нашей гипотезы., То есть мы прогнозируем злокачественную опухоль, а фактические данные, то есть у больного действительно злокачественная опухоль. То есть функция стоимости равна 0, и мы предсказываем правильно.
Но если наша гипотетическая функциякак правилоКогда 0, функция стоимости стремится к положительной бесконечности.
Captures intuition that if (предсказывать), но y=1, мы очень дорого накажем алгоритм обучения.
Если взять на себя функциюравный0 эквивалентно утверждению, что для y=1, то есть злокачественной опухоли пациента, наша предсказанная вероятность равна 0.
Если представить это в реальной жизни, то это равносильно тому, чтобы сказать пациенту: вы вообще не можете быть злокачественной опухолью! На самом деле, если опухоль действительно злокачественная, то слова врача — крупная врачебная ошибка. Врачам приходится платить большую цену. Но в этой функции он может стремиться только к 0, а не к 0.
Рассмотрим случай y=0:
Функция стоимости равна 0, y=0 означает, что у пациента доброкачественная опухоль, и мы прогнозируем функциюЭто означает, что предсказанная нами опухоль доброкачественная, и прогноз полностью верный, поэтому функция стоимости равна 0.
Captures intuition that if (предсказывать)
y=0 представляет собой доброкачественную опухоль у пациента, но мы прогнозируем функциюравный1, значит, прогнозируем злокачественную опухоль, и говорим пациенту: у вас не может быть доброкачественной опухоли. В жизни, если в семье доброкачественная опухоль, слова врача вызовут ненужную панику...
Итак, интересная и приятная вещь в этой функции заключается в том, что она не может быть слишком многословной.
Функция стоимости была упомянута выше:
Logistic regression cost function
Note: or 1 always
Теперь упростим:
Почему эта формула после упрощения?
Просто возьмите число непосредственно в формулу выше.
- y = 1:
- y = 0:
Поэтому две приведенные выше формулы напрямую объединяются в одну формулу, и нет необходимости снова судить о значении y.
Теперь мы можем написать функцию стоимости для логистической регрессии:
Logistic regression cost function
Согласно этой функции стоимости, мы должны найти, то есть параметр θ, который позволяет функции стоимости достичь минимального значения.
Затем нам снова нужно сделать градиентный спуск.
градиентный спуск
Gradient Descent
Want Repeat {
} (simultaneously update all )
к вышеизложенномуНайдя частную производную, подведем ее к формуле градиентного спуска и окончательно получим следующий вид:
Gradient Descent
Want Repeat {
(simultaneously update all )
эммммм, теперь вы нашли проблему, формулу градиентного спуска для логистической регрессии и формулу градиентного спуска для линейной регрессиивыглядитТочно так же.
почему жирныйвыглядит, потому что все-таки функции предсказания у них разные.
Так что, хотя это выглядит одинаково, на самом деле это совсем другое.
Расширенная оптимизация
Говоря о линейной регрессии, мы сказали, что в дополнение к использованию градиентного спуска мы также можем использовать нормальные уравнения для нахождения наилучшего θ. То же самое верно и для логистической регрессии, где мы можем использовать другие алгоритмы, помимо градиентного спуска. (Все три перечисленных ниже требуют функции стоимости и частной производной функции стоимости. Разница в том, что она отличается от части итерации градиентного спуска)
- Conjugate gradient
- BFGS
- L-BFGS
Преимущества:
- No need to manually pick α
- Часто быстрее, чем градиентный спуск. Недостатки:
- More complex
По сравнению с градиентным спуском эти три алгоритма не требуют выбора скорости обучения α и работают быстрее, чем градиентный спуск. Недостатком является более сложный алгоритм.
Конечно, большая сложность вовсе не является недостатком, потому что вам не нужно знать принцип, вы можете просто использовать то, что написали другие. Оригинальные слова Учителя Ву Энда: «Я использую их более десяти лет, но я узнал о некоторых деталях только несколько лет назад».
На ум приходит забавный стебель: у дорогих вещей есть только один недостаток, то есть они дорогие, но это не вина вещей, это моя вина.
Octave и MATLAB имеют такую библиотеку, просто используйте ее напрямую. Что касается вашего использования C, C++, python и т. д., то вам, возможно, придется попробовать еще несколько библиотек, чтобы найти лучшую реализацию.
Как применить к логистической регрессии?
theta
function [jVal, gradient] costFunction (theta)
code to compute
gradient code to compute
gradient code to compute
...
gradient code to compute
Например:
Теперь есть пример с двумя параметрами, и невооруженным глазом видно, что оба θ равны 5, когда функция стоимости минимальна (равна 0). Ну а теперь, чтобы узнать алгоритм, делаем вид, что не знаем результат.
function [j,gradient] = costFunction(theta)
%代价函数J
j = (theta(1)-5)^2 + (theta(2)-5)^2;
gradient = zeros(2,1);
%偏导
gradient(1) = 2*(theta(1)-5);
gradient(2) = 2*(theta(2)-5);
endfunction
Функция costFunction имеет два возвращаемых значения. Одна из них — функция стоимости J, а другая — частная производная от J, которая используется для хранения вектора результата.
%octave中输入:
options = optimset ('GradObj','on','MaxIter','100');
initheta = zeros(2,1);
[Theta,J,Flag] = fminunc (@costFunction,initheta,options)
- optimset: сделать настройки с четырьмя параметрами:
- GradObj: установка целевых параметров градиента
- Убедитесь, что предыдущая настройка включена
- Максимальное количество итераций
- Установите значение максимального количества итераций
- fminunc: функция неограниченной минимизации Octave, которая должна передавать три параметра.
- Функции, написанные вами, должны начинаться с @
- Ваша предустановка θ должна быть двумерным вектором и выше. Если это действительное число, функция завершится ошибкой.
- настройки этой функции
Окончательный результат выполнения настолько длинный, что Theta сохраняет значение θ, когда конечная функция стоимости минимизируется. J указывает на оптимальное решение функции стоимости, а Flag = true указывает на то, что оно сошлось.
Мультиклассовая классификация
Что такое мультиклассовая классификация?
Например, вы хотите автоматически классифицировать другое электронное письмо на: рабочее, друзья, семья, другие.
Как быть с этой классификацией?
Using an idea called one-versus-all classification, we can then take this and make it work for muti-class classification, as well.
Используя идею классификации «один ко многим», мы также можем применить идею двухклассовой классификации к многоклассовой классификации.
Here's how one-versus-alll classiffication works. And, this is also sometimes called one-versus-rest.
Теперь представьте состязательный метод множественной классификации (один к одному остатку):
Let's say, we have a training set
Используйте треугольник для 1, квадрат для 2 и крест для 3
Теперь измените его на три отдельные бинарные классификации:
Здесь таблица i=1 — это время, когда треугольник является положительным классом. Классификаторы i выше обучены для каждого из этих случаев.
в классификации один ко многим
One-vs-all Train a logistic regression classifier for each class to predict the probability that
On a new input , to make a prediction, pick the class that maximizes
Мы получаем классификатор логистической регрессии,Предсказать вероятность класса i, когда y=i. Наконец, чтобы сделать прогноз, мы даем новое входное значение x, чтобы получить результат прогноза, все, что нам нужно сделать, это запустить входные данные x в каждом классификаторе и, наконец, выбрать категорию с наибольшей функцией прогнозирования, которая является результатом y мы хотим предсказать.