Рубрики
Без рубрики

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

Введение: Сегодня мы воспитываем наши руки с нашими первыми алгоритмами машинного обучения! … Теги с Python, MachineLearning, учебником.

Введение:

Сегодня мы воспитываем наши руки с нашими первыми алгоритмами машинного обучения! Хотя мы начинаем простые, эти алгоритмы все еще очень полезны и могут быть использованы в качестве базовой линии для измерения более поздних алгоритмов обучения машины, которые мы охватываем – для обеспечения ведения алгоритма, как мы ожидаем.

Интуиция:

Часто, когда у нас есть набор точек данных в науке, мы хотим нарисовать прямую линию наилучшего в соответствие с точками (см. Рисунок выше). Линейная регрессия включает в себя изучение этой прямой линии наилучшего соответствия, только с большим количеством измерений – вместо осей х х х и у y y У нас есть оси х 1 , х 2 , Отказ . . , х n x_1, x_2, …, X_N х 1 , х 2 , . . . , х n и у y y .

В линейной регрессии мы используем эту прямую линию наилучшей посадки и значения для х 1 , х 2 , Отказ . . , х n x_1, x_2, …, X_N х 1 , х 2 , . . . , х n , который мы называем Особенности ввода предсказать ценность вывод y y y . Это полезно в регрессионных задачах, например цены на жилье.

Теперь вместо реального выхода числа предположим, что мы хотели классифицировать этот вклад как один из двух классов E.g. Мошеннические VS не мошеннические данные кредитных карт. Логистическая регрессия Включает в себя принятие этого вывода и применение функции решения для этого – мы в конечном итоге с вероятностью – если рядом с 1 входным является одним классом, а если ближе к 0 вход – это другой класс. Мы можем думать об этой вероятности, как «доверие» алгоритма.

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

Математика:

Уравнение для линейной регрессии естественным образом распространяется от уравнения прямой линии:

Так же, как м м м Является ли градиент линии, мы назначаем веса к функциям ввода – пусть w i W_I w i Обозначим вес, соответствующую функции х я X_I x i – Вы можете свободно думать о варенье i W_I w i Как градиент линии в направлении х я X_I x i ось.

Другим способом мышления в установке линии наилучшего соответствия является как проецирование исходных точек данных y y y на линию, обозначающую нашу Проекция как у ^ \ hat {y} y ^ . Расширение этого на n n n Размеры, вместо линии, рассмотрим N-мерную гиперплоскость, которую мы проецируем наши точки данных на.

Так что уравнение для линейной регрессии:

Для логистической регрессии мы применяем Сигмоид Функция Σ ( X ) \ sigma (x) σ ( x ) На этот вывод – это масштабирует значения от 0 до 1 (чтобы получить вероятность) – см. График ниже:

Обозначение:

Одна конвенция мы будем следовать за ( x ( я ) , y ( i ) ) (x ^ {(i)}, y ^ {(i)}) ( x ( я ) , y ( я ) ) относится к т H ^ {th} т H Обучение пример, с у ^ ( i ) \ hat {y} ^ {(i)} y ^ ( i ) Соответствующий прогноз модели. В общем ( я ) ^ {(i)} ( я ) относится к стоимости для Я т h I ^ {th} Я T H Пример тренинга. Мы используем м м м Чтобы обозначить количество примеров в учебном наборе и n n n обозначить количество функций ввода.

Матрицы

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

Итак, здесь мы храним наш вход в n х м матрица X X X и этикетки как 1 х м матрица Y Y У . Тогда мы можем представлять W W W как 1 х n Матрица и выразить расчет как:

Y ^ = W . X + B \ hat {y} .x + b У ^ = W . Х + B – Примечание Y ^ \ hat {y} Y ^ имеет же размеры, что и ярлыки Y У Y .

В общем, если у нас есть уравнение формы C Я j = Σ к A i k B к J C_ {ij} = \ sum_k a_ {ik} b_ {kj} C i J = Σ к A i k B k j Это соответствует матрице умножения C = A . B C.B C = A . B

(Здесь у нас есть Y ^ 1 Я = Σ J = 1 n W 1 J Х J Я \ hat {y} {1i} =} ^ {n} {w_ {1j} x_ {ji}} Y ^ 1 Я = Σ J = 1 n W 1 j Х J я )

Код:

Мы будем писать фрагменты кода в Питон И мы используем Numpy (Библиотека линейной алгебры) для выполнения математических операций.

Наша мотивация проблема для линейной регрессии – Бостонские цены на жилье набор данных, а для логистической регрессии Рак молочной железы DataSet (классифицирующая опухоль как доброкачественная/злокачественная). Смотрите Jupyter ноутбук увидеть входную предварительную обработку.

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

Со всеми, что сказано, давайте погрузимся в код – Обратите внимание, как np.dot используется для умножения матрицы.

import numpy as np #we use numpy to do the maths operations

#_lin refers to linear regression, _log for logistic regression
#similarly _train for training set, _test for test set.

#initialise weights and bias to random values
# we'll get to training them  in the next blog post.
W_lin = np.random.randn(Y_lin_train.shape[0], X_lin_train.shape[0]) #1xm matrix
b_lin = np.random.randn(Y_lin_train.shape[0],1) #1x1 matrix

W_log = np.random.randn(Y_log_train.shape[0], X_log_train.shape[0])#1xm matrix
b_log = np.random.randn(Y_log_train.shape[0],1)) #1x1 matrix

#Linear Regression
def forward_lin(X, W, b):
    return np.dot(W,X)+b

def sigmoid(z):
    return 1.0/(1+np.exp(-z))

#Logistic regression
def forward_log(X,W,b):
    return sigmoid(forward_lin(X,W,b))

Вывод:

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

Оригинал: “https://dev.to/mukulrathi_/linear-and-logistic-regression-3c9h”