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

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

Машинное обучение: краткое введение

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

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

Один из интересных способов познакомиться с машинным обучением — изучить самые популярные модели, делать заметки или даже писать статьи и практиковаться в их использовании. В этой конкретной статье я расскажу об одной такой модели и объясню ее применение и использование.

Этот сборник статей я назвал «Модели, которые я люблю».

Модели, которые я люблю: Логистическая регрессия

Логистическая регрессия — это простой алгоритм параметрической классификации, который является одним из наиболее важных алгоритмов в обучении с учителем — в более общем плане логистическая регрессия определенно должна быть частью набора инструментов каждого инженера машинного обучения. Это метод, заимствованный машинным обучением из области статистики, и метод перехода к задачам бинарной классификации (задачи с двумя значениями класса), т. е. он вычисляет или предсказывает вероятность бинарного (да/нет, 1/0 , спам/не спам, заражено/не заражено). Примером логистической регрессии может быть применение машинного обучения для определения вероятности заражения человека COVID-19 или нет.

Алгоритм прошел долгий путь и завершился несколькими версиями с дальнейшими улучшениями на каждой итерации. Здесь я более подробно рассмотрю эволюцию и текущие приложения алгоритма логистической регрессии, сосредоточив внимание на следующем:

· Какое место занимает логистическая регрессия среди алгоритмов машинного обучения и что она делает?

· Не запутайтесь в названии!

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

· Что мы знаем о сигмовидной/логистической функции

· За кулисами: понимание работы математики логистической регрессии

· Простая реализация с помощью scikit-learn

· Показатели

· Преимущества и недостатки логистической регрессии

· Применение логистической регрессии в реальных задачах

· Основные выводы

Какое место занимает логистическая регрессия среди алгоритмов машинного обучения и что она делает?

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

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

Проще говоря, он предсказывает вероятность возникновения события, подгоняя данные к логит-функции. Следовательно, он также известен как логит-регрессия. Поскольку он предсказывает вероятность, его выходные значения лежат между 0 и 1 (как и ожидалось).

Не запутайтесь в названии!

Это классификация, а не алгоритм регрессии. Вот краткое объяснение:

Он называется «Логистическая регрессия», потому что его основная техника очень похожа на линейную регрессию.

Термин «логистика» взят из функции логита, используемой в этом методе.

Вот упрощенный конвейер, как работает логистическая регрессия.

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

В линейной регрессии независимые переменные (например, возраст и пол) используются для оценки конкретного значения зависимой переменной (например, массы тела).

Напротив, логистическая регрессия имеет дело с дихотомической зависимой переменной, которая может принимать только два значения (0 или 1). Цель состоит в том, чтобы оценить вероятность того, что результат будет равен 1. Это означает: Насколько вероятно наличие заболевания, если рассматриваемое лицо имеет определенный возраст, пол и статус курения.

Чтобы проиллюстрировать это, давайте рассмотрим другой пример. Предположим, ваш друг предлагает вам решить викторину. Есть только 2 варианта исхода — либо ты его решишь, либо нет. А теперь представьте, что вам задают множество тестов, пытаясь понять, в каких предметах вы хороши. Результат этого исследования будет примерно таким: если вам дали задачу десятого класса по тригонометрии, вероятность того, что вы решите ее, составляет 70%. С другой стороны, если это вопрос по истории на уровне профессора, вероятность получить ответ составляет всего 30%.

Это то, что дает вам логистическая регрессия — она предсказывает вероятность и использует для этого сигмоидальную функцию.

Что мы знаем о сигмовидной/логистической функции

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

Это σ : R → [0, 1] «выжимает» точки из реальной прямой в [0, 1].

Где e — основание натуральных логарифмов (число Эйлера или функция EXP() в вашей электронной таблице), а value — фактическое числовое значение, которое вы хотите преобразовать.

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

Вот, пожалуйста:

Несколько математических свойств сигмовидной/логистической функции включают в себя:

· Домен: (-∞, +∞)

· Диапазон: (0, +1)

· σ(0) = 0.5

· Функция монотонно возрастает.

· Функция непрерывна всюду.

· Функция дифференцируема везде в своей области определения.

· Численно достаточно вычислить значение этой функции в небольшом диапазоне чисел, например, [-30, +30]. Для значений меньше -30 значение функции почти равно нулю. Для значений больше 30 значение функции почти равно единице.

Но почему сигмовидная функция? Предположим, у нас есть набор данных с точками данных в двух крайних кластерах (см. график ниже). Понятно, что нам нужно что-то вроде волнистой линии (или изогнутой синей линейки в форме буквы «S» на правом графике), чтобы правильно разделить наши точки данных.

Алгоритм логистической регрессии представляет собой схему поиска наиболее оптимальной S-образной линии.

За кулисами: понимание работы математики логистической регрессии

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

Я собрал процесс математической реализации в одном изображении:

Обратите внимание на тот факт, что размещение функции линейной регрессии в сигмовидной/логит-функции гарантирует, что независимо от того, в каком диапазоне находятся значения x, будут получены только числа от 0 до 1. Рассмотрим пример. Вероятность того, что при заданных значениях независимой переменной дихотомическая /разделенная на две отдельные части/ зависимая переменная y равна 0 или 1, определяется формулами:

Таким образом, чтобы вычислить вероятность того, что человек болен или не болен, используя логистическую регрессию для приведенного выше примера, параметры модели b1, b2, b3 и a должны быть сначала определены. Как только они будут определены, уравнение для приведенного выше примера будет

Понятно, что все это изучается не для применения в повседневной работе, а для того, чтобы иметь общие знания и хорошее понимание алгоритма, так как большинство из нас будут использовать библиотеки вроде scikit-learn для быстрого и простого решения задач. Итак, давайте посмотрим на это.

Простая реализация с помощью scikit-learn

Для этого простого примера я буду использовать набор данных Iris. Это классический набор данных в области машинного обучения и науки о данных, который часто используется в качестве эталонного набора данных для тестирования и сравнения различных алгоритмов машинного обучения. Набор данных содержит 150 образцов цветов ириса, по 50 образцов каждого из трех разных видов: Iris setosa, Iris versicolor и Iris virginica.

Набор данных Iris имеет три класса, поэтому по умолчанию это не проблема бинарной классификации. Однако мы можем выполнить бинарную классификацию набора данных Iris, рассмотрев только два из трех классов. Например, мы можем создать задачу бинарной классификации, предсказав, является ли цветок ириса Iris setosa или нет (т. е. Iris versicolor или Iris virginica). Для этого нам сначала нужно преобразовать целевую переменную (виды) в двоичную переменную, где 1 указывает на Iris setosa, а 0 указывает либо на Iris versicolor, либо на Iris virginica.

Вот пример кода на Python /с пошаговыми комментариями/, использующего scikit-learn для выполнения бинарной классификации набора данных Iris путем предсказания, является ли цветок ириса Iris setosa или нет:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Load the Iris dataset
iris = load_iris()

# Create a binary target variable
y = (iris.target == 0).astype(int)

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(iris.data, y, test_size=0.2, random_state=0)

# Create a logistic regression model
model = LogisticRegression()

# Train the model on the training data
model.fit(X_train, y_train)

# Predict the classes of the test set
y_pred = model.predict(X_test)

# Calculate the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

В этом коде я сначала загружаю набор данных Iris, используя функцию load_iris scikit-learn. Затем он разбивается на обучающую и тестовую выборки с помощью функции train_test_split.

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

Наконец, обученная модель используется для прогнозирования классов тестового набора с использованием метода прогнозирования, а затем для печати точности модели с использованием метода оценки.

Показатели

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

Вот некоторые из наиболее распространенных показателей:

При расчете значений метрик используются следующие дескрипторы:

· ТП — истинно положительные результаты

· TN – истинные отрицания

· FP — ложные срабатывания

· FN — ложноотрицательные результаты.

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

Выбор метрики зависит от конкретной проблемы и желаемого компромисса между различными аспектами производительности модели.

Преимущества и недостатки логистической регрессии

Применение логистической регрессии в реальных задачах

Логистическая регрессия имеет широкий спектр приложений в различных областях. Некоторые распространенные применения логистической регрессии:

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

· Маркетинг. Логистическую регрессию можно использовать для прогнозирования вероятности покупки клиентом определенного продукта или услуги на основе его демографических и поведенческих характеристик.

· Финансы. Логистическую регрессию можно использовать для прогнозирования вероятности дефолта по кредиту на основе различных финансовых и демографических факторов.

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

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

Ключевые выводы

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