Линейная регрессия и логистическая регрессия для введения в машинное обучение

машинное обучение

Это седьмой день моего участия в августовском испытании обновлений, подробности о мероприятии:Испытание августовского обновления

предисловие

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


Линейная регрессия

единичная линейная регрессия

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

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

Линейная квадратичная функция стоимости:

hθ(x)=θ0+θ1xh_{\theta}(x)=\theta_0+\theta_1x

Сумма квадратов ошибки моделирования:

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2J(\theta_0,\theta_1)=\dfrac{1}{2m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})^2

Несколько концепций:

  • Сумма квадратов ошибок (SSE): используется для указания того, насколько хорошо подходит функция.

  • Среднеквадратическая ошибка (MSE): относится к ожидаемому значению квадрата разницы между оценкой параметра и истинным значением параметра.

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

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

Идея алгоритма:

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

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

Формула (при условии двух параметров):θj=θjαθjJ(θ0,θj)\theta_j = \theta_j - \alpha\dfrac{\partial}{\partial\theta_j}J(\theta_0,\theta_j)

  • α\alphaэто скорость обучения, которая определяет, насколько мы делаем шаги вниз в направлении, которое больше всего снижает функцию стоимости.При пакетном градиентном спуске мы каждый раз вычитаем все параметры из обучения одновременно.Скорость, умноженная на производную от функция затрат.
  • для несколькихθ\theta, значение должно обновляться синхронно, и скорость обучения тоже будет обновляться, потому что чем ближе к крайней точке, наша скорость обучения, то есть размер шага спуска с горы, должна быть меньше, и результат будет более точным. На самом деле частная производная равна 0, так что она сходится к локальному оптимальному решению.

как выбратьα\alphaценность?

  • Основываясь на приведенном выше уравнении, мы можем видеть, что еслиα\alphaСлишком маленький, каждый шаг очень маленький, двигаясь понемногу к самой нижней точке, так что одна итерация займет много времени.
  • какα\alphaЕсли он слишком велик, то шаг перемещения слишком велик, он может пересечь нижнюю точку, и следующая итерация будет двигаться снова и снова, снова и снова пересекая нижнюю точку, что приведет к невозможности сходимости.
  • В общих практических приложениях набор интервалов, таких как[0.01,0.1,1,10][0.01,0.1,1,10]Таким образом, попробуйте несколько раз, а затем выберите соответствующий интервал в соответствии с результатами.

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

Линейная регрессия с градиентным спуском

Алгоритм градиентного спуска:

Repeat  until  convergence{θj=θjαθ0J(θ0,θ1)for  j=0  and  1}\begin{aligned} &Repeat\;until\;convergence\{ \\ & \quad\theta_j=\theta_j-\alpha\dfrac{\partial}{\partial\theta_0}J(\theta_0,\theta_1) \\ & \quad for\;j=0\;and\;1\\ &\} \end{aligned}

Получите функцию стоимости:

θjJ(θ0,θ1)=θj12mi=1m(hθ(x(i))y(i))2\dfrac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)=\dfrac{\partial}{\partial\theta_j}\frac{1}{2m}\sum\limits_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

j=0,θ0J(θ0,θ1)=1mi=1m(hθ(x(i))y(i)),θ0=θ0α1mi=1m(hθ(x(i))y(i))j=0,\quad\dfrac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)}),\quad\theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})

j=1,θ1J(θ0,θ1)=1mi=1m(hθ(x(i))y(i))x(i),θ1=θ1α1mi=1m(hθ(x(i))y(i))x(i)j=1,\quad\dfrac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)},\quad\theta_1=\theta_1-\alpha\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}

Мы также можем использовать **«наименьшие квадраты»** для решения модели. В линейной регрессии метод наименьших квадратов заключается в попытке найти прямую линию, которая представляет собой наименьшую сумму евклидовых расстояний от всех выборок до прямой линии, то есть в моделиJ(θ0,θ1)J(\theta_0,\theta_1)минимум.

Решение: соответственноθ0,θ1\theta_0,\theta_1Возьмите производную и установите желаемую формулу равной 0, чтобы решитьθ0,θ1\theta_0,\theta_1Оптимальным решением.

Множественная линейная регрессия

На самом деле это один признак => многомерный признак, представленный вектором

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

X=x(1):x(2):x(3):...особенность1особенность2особенность3особенность410.241620.635450.5608............=[x(1)Tx(2)Tx(3)T...x(n)T]X=\begin{matrix}\\\\x^{(1)}:\\x^{(2)}:\\x^{(3)}:\\...\end{matrix}\ begin{matrix}\\\text{feature}1&\text{feature}2&\text{feature}3&\text{feature}4\\1&0.2&41&6\\2&0.6&35&4\\5&0.5&60&8\\... &...&...&...\end{matrix}=\begin{bmatrix}x^{(1)^T}\\x^{(2)^T}\\x^{(3 )^T}\\...\\x^{(n)^T}\\\end{bmatrix}

x(i)x^{(i)}представительiiэкземпляр признака, то есть первый признак матрицы признаков.iirow, представляет собой вектор, такой какx(2)=[20.6354]x^{(2)}=\begin{bmatrix}2\newline0.6\newline35\newline4\end{bmatrix}

многомерныйhhВыражается как:

hθ(x)=θ0+θ1x+θ2x2+...+θnxnh_{\theta}(x)=\theta_0+\theta_1x+\theta_2x_2+...+\theta_nx_n

Видно, что параметрn+1n+1размерный вектор, размерность матрицы признаков равнаm*(n+1)m*(n+1), для удобства расчета введемx0=1x_0=1, то есть формула принимает вид:

hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxnh_{\theta}(x)=\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n

сделатьθ=[θ0θ1...θn]\theta = \begin{bmatrix}\theta_0\newline\theta_1\newline...\newline\theta_n\end{bmatrix}

Итак, для дальнейшего упрощения:hθ(x)=θTxh_{\theta}(x)=\theta^Tx

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

Расширяя градиентный спуск единичной линейной регрессии,

θjJ(θj)=θj12mi=1m(hθ(x(i))y(i))2\dfrac{\partial}{\partial\theta_j}J(\theta_j)=\dfrac{\partial}{\partial\theta_j}\frac{1}{2m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})^2

Масштабирование функций: Масштабируйте каждую функцию примерно до[1,1][-1,1]

Средняя нормализация: просто стандартизация

  • xi=xiμimaxminx_i = \dfrac{x_i-\mu_i}{max-min}
  • i>1,так какx0=1я> 1, \ текст {потому что} x_0 = 1

нормальное уравнение

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

X=особенность1особенность2особенность3особенность410.241620.635450.5608............=1x(1)T1x(2)T1x(3)T1...X=\begin{matrix}\\\text{feature}1&\text{feature}2&\text{feature}3&\text{feature}4\\1&0.2&41&6\\2&0.6&35&4\\5&0.5&60&8\\ ...&...&...&...\end{matrix}=\begin{matrix}\\\\1&x^{(1)^T}\\1&x^{(2)^T} \\1&x^{(3)^T}\\1&...\конец{матрица}

Запишите приведенную выше функцию стоимости в матричной форме:

J(θ)=12m(Xθy)T(Xθy)J(\theta)=\frac{1}{2m}(X\theta-y)^T(X\theta-y)

В самом деле, решаяJ(θ)J(\theta)минимальный параметрθ\thetaзначение, которое представлено следующим образом:

θ=argmin(Xθy)T(Xθy)\theta = argmin(X\theta-y)^T(X\theta-y)

сделатьEθ=(Xθy)T(Xθy)E_{\theta}=(X\theta-y)^T(X\theta-y),правильноθ\thetaВывод можно решить:

θ=(XTX)1XTy\theta = (X^TX)^{-1}X^Ty

Градиентный спуск против нормального уравнения

градиентный спуск нормальное уравнение
Необходимо выбрать скорость обученияα\alpha Скорость обучения не требуетсяα\alpha
Требуется несколько итераций Нет необходимости повторять операции, матричные операции можно выполнять всего одной строкой кода.
При множественных характеристиках лучшая адаптивность Вычислительная сложность обратной матрицы O(n3n^3), поэтому, если размер объекта слишком велик (особенно более 10 000 измерений), вычислительные затраты высоки, и этот метод не следует рассматривать.
Может применяться к некоторым более сложным алгоритмам, подходящим для различных типов моделей. Матрица должна быть обратимой, и для некоторых более сложных алгоритмов этот метод не будет работать. Подходит только для моделей линейной регрессии, не подходит для других моделей, таких как модели логистической регрессии.

Логистическая регрессия Логистическая регрессия

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

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

Функция распределения для логистической регрессии:SigmoidSigmoidфункция:g(z)=11+ezg(z)=\dfrac{1}{1+e^{-z}}, изображение функции выглядит следующим образом:

[Не удалось передать изображение по внешней ссылке, исходный сайт может иметь механизм защиты от пиявки, рекомендуется сохранить изображение и загрузить его напрямую (img-Cb4IBXex-1628157342810) (/imgs/Sigmoid function image.jpg)]

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

hθ(x)=g(θTx)=11+eθTxh_{\theta}(x)=g(\theta^{T}x)=\dfrac{1}{1+e^{-\theta^{T}x}}

в:xxпредставляет вектор признаков,θ\thetaПараметры просим принять.

P(y=1x;θ)=hθ(x)P(y=1|x;\theta)=h_{\theta}(x)

значит данныйxxиθ\thetaусловия, прогнозироватьy=1y=1Вероятность

Решающую функцию можно получить:

y(i)=1,if P(y=1x)>0.5y(i)=1, \text{if }P(y=1|x)>0.5

0.50.5Это порог, который мы выбираем.Конечно, другие значения могут быть выбраны в соответствии с реальной ситуацией.Например, предсказуемость положительного примера выше, и она может быть больше 0,5.

граница решения

Введение этого понятия цитирует курс ppt профессора Нг Энда.

Линейная граница решения

线性决策边界нелинейная граница请添加图片描述

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

Функция стоимости логистической регрессии определяется как:

J(θ)=1mi=1mCost(hθ(x(i))y(i))J(\theta)=\frac{1}{m}\sum\limits_{i=1}^m Cost(h_{\theta}(x^{(i)})-y^{(i)})

в:

Cost(hθ(x),y)={log(hθ(x))y=1Времяlog(1hθ(x))y=0ВремяСтоимость (h _ {\ theta} (x), y) = \ begin {cases} -log (h _ {\ theta} (x)) & y = 1 \ text {время} \\ - log (1-h _ {\ theta }(x))&y=0\text{случаи}\end{случаи}

Cost(hθ(x),y)Cost(h_{\theta}(x),y)Особенностями функции являются:

  • когда фактическоеy=1y=1час,hθ(x)=1h_{\theta}(x)=1Когда стоимость равна 0, когдаhθ(x)h_{\theta}(x)не для11, стоимость следуетhθ(x)h_{\theta}(x)становиться меньше и больше;
  • когда фактическоеy=0y=0час,hθ(x)=0h_{\theta}(x)=0Когда стоимость равна 0, когдаhθ(x)h_{\theta}(x)не для00, стоимость следуетhθ(x)h_{\theta}(x)расти все больше и больше;

Изображение выглядит следующим образом:在这里插入图片描述Можно еще упростить:

J(θ)=1mi=1m[y(i)log(hθ(x))+(1y(i))log(1hθ(x))]J(\theta)=-\frac{1}{m}\sum\limits_{i=1}^m [y^{(i)}log(h_{\theta}(x))+(1-y^{(i)})log(1-h_{\theta}(x))]

Используйте градиентный спуск

функция стоимости парыJ(θ)J(\theta)попросить совета

θJ(θ)=1mi=1m(hθ(x(i))y(i))x(i)\dfrac{\partial}{\partial\theta}J(\theta)=\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}

такое же правоθj=θjα1mi=1m(hθ(x(i))y(i))\theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})Продолжайте обновлять значение каждого параметра до тех пор, пока значение функции не станет минимальным, то есть значение производной стремится к00изθ\thetaВот и все.

Проблема мультиклассификации

обычно используетсяOne-vs-All, также известен какOne-vs-the Restметод достижения множественной классификации, которыйПроблема мультиклассификациипревратился вмножественная бинарная классификацияпроблема. Фактически, нужно по очереди рассматривать признак как положительный образец, а остальные — как отрицательные образцы, а затем выполнять обучение модели, как в двух классификациях. Если число признаков выборкиnn, в общей сложностиn1n-1граница решения.

Пример: данный вводxx, рассчитать отдельноhθ(i)(x),i=1,2,...,nh_{\theta}^{(i)}(x),i=1,2,...,n, а затем сравнить, еслиhθ(k)(x)h_{\theta}^{(k)}(x)ближайший11, затем предсказатьxxпринадлежатьkkсвоего рода.

переобучение и недообучивание

Что такое переоснащение?

недооснащение: Степень подгонки невысокая, данные далеки от кривой подгонки

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

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

Вышеупомянутая проблема переоснащения, то методы решения переоснащения, как правило, таковы:

  • Уменьшите количество функций. Это, очевидно, разрушает целостность функции.
  • Сохраните функции, но ослабьте коэффициенты некоторых членов более высокого порядкаθi\theta_i. Мы называем это ослаблением парного параметраθi\theta_iнаказание.

Так называемая регуляризация — это процесс ослабления признаков высокого порядка.

Регуляризация в линейной регрессии

На основе линейной регрессии введем параметрыλ\lambdaввести штраф за регуляризацию. Измените функцию стоимости на:

J(θ)=12mi=1m[(hθ(x(i))y(i))2+λi=1nθj2]=12m[(Xθy)T(Xθy)+λj=1nθj2]J(\theta)=\frac{1}{2m}\sum\limits_{i=1}^m [(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum\limits_{i=1}^{n}\theta_j^2 ]\\ =\frac{1}{2m}[(X\theta-y)^T(X\theta-y)+\lambda\sum\limits_{j=1}^{n}\theta_j^2]

λ\lambdaЧем больше значение, тем сильнее штраф за регуляризацию и тем лучше можно избежать переобучения. Конечно, он не может быть слишком большим, иначе параметр стремится к 0, и итоговое изображение может быть прямой линией.

В то же время есть соответствующие изменения в градиентном спуске:

Repeat  until  convergence{θ0=θ0α1mi=1m[(hθ(x(i))y(i))x0(i)]θj=θjα1mi=1m[(hθ(x(i))y(i))x(i)+λmθj]for j=1,2,..,n}\begin{aligned}&Repeat\;until\;convergence\{ \\ & \quad \theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits_{i=1}^m [(h_{\theta}(x^{(i)})-y^{(i)})x_0^{(i)}] \\ & \quad \theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^m [(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)} + \frac{\lambda}{m}\theta_j]\\ & \quad for \ j=1,2,..,n\\ &\}\end{aligned}

Его можно еще упростить до:

θj=θj(1αλm)α1mi=1m[hθ(x(i))y(i)]xj(i)\theta_j=\theta_j(1−\alpha\dfrac{\lambda}{m})−\alpha\dfrac{1}{m}\sum\limits_{i=1}^{m}[h_{\theta} (x^{(i)})−y^{(i)}]x^{(i)}_j

Можно видеть, что изменение алгоритма градиентного спуска регуляризованной линейной регрессии заключается в том, что каждый раз на основе правил обновления исходного алгоритмаθ\thetaзначение уменьшается на дополнительное значение, которое представляет собой каждое обновление в градиентном спуске.θ\thetaтакже уменьшитθ\thetaценность.

Если используется нормальное уравнение, его также можно решить следующим образом:

θ=(XTX+λ[0......001...0............00...1])1XTy\theta= (X^TX+\lambda \begin{bmatrix}0&...&...&0\\0&1&...&0\\...&...&...&...\\0&0&...&1\end{bmatrix})^{-1}X^Ty

Регуляризация в логистической регрессии

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

J(θ)=1mi=1m[y(i)log(hθ(x))(1y(i))log(1hθ(x))]+λ2mj=1nθj2J(\theta)=\frac{1}{m}\sum\limits_{i=1}^m [-y^{(i)}log(h_{\theta}(x))-(1-y^{(i)})log(1-h_{\theta}(x))]+\frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_j^2

Точно так же алгоритм градиентного спуска получается как:

Repeat  until  convergence{θ0=θ0α1mi=1m[(hθ(x(i))y(i))x0(i)]θj=θjα1mi=1m[(hθ(x(i))y(i))x(i)+λmθj]for j=1,2,..,n}\begin{aligned}&Repeat\;until\;convergence\{ \\ & \quad \theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits_{i=1}^m [(h_{\theta}(x^{(i)})-y^{(i)})x_0^{(i)}] \\ & \quad \theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^m [(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)} + \frac{\lambda}{m}\theta_j]\\ & \quad for \ j=1,2,..,n\\ &\}\end{aligned}

Уведомление,θ0\theta_0не участвует ни в одной регуляризации.

резюме

Разница между линейной регрессией и логистической регрессией

И линейная регрессия, и логистическая регрессия представляют собой обобщенную линейную модель. Линейная регрессия предполагает, что зависимая переменная y следует распределению Гаусса, а логистическая регрессия предполагает, что зависимая переменная y следует распределению Бернулли. Линейная регрессия — это задача регрессии, а логистическая регрессия — задача классификации.

Хотя логистическая регрессия и линейная регрессия выглядят одинаково после получения функции затрат, функция предположений двухhθ(x)h_{\theta}(x)это отличается.

  • Линейная регрессия:hθ(x)=θTxh_{\theta}(x)=\theta^{T}x
  • Логистическая регрессия:hθ(x)=g(θTx)h_{\theta}(x)=g(\theta^{T}x)g(z)g(z)заSigmoidSigmoidфункция

Код реализации домашнего задания после занятий прилагается (github):