Обмен технологиями

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

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Что такое логистическая регрессия?

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

2. Почему машинному обучению необходимо использовать логистическую регрессию?

1. Бинарная классификация

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

Например:

  • Прогнозируйте, нажмет ли пользователь на рекламу
  • Определите, является ли электронное письмо спамом
  • Диагностировать, есть ли у пациента заболевание

Все эти примеры имеют общую особенность: есть только два результата: истинный (1) и ложный (0).

2. Многокатегорийная классификация

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

Например:

  • Классификация объектов при распознавании изображений
  • Классификация текста (классификация новостей, анализ настроений и т. д.)

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

3. Вероятностное предсказание

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

Например:

  • Прогнозируйте вероятность того, что клиент купит продукт.
  • Оцените вероятность риска дефолта заявителя на получение кредита

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

Если вы не поняли роль логистической регрессии, это не имеет значения, я приведу вам простой для понимания пример.

Представьте, что вы врач и вам необходимо определить, есть ли у пациента определенное заболевание. Логистическая регрессия — это умный помощник, который поможет вам принять такое решение. Точно так же, как врач будет смотреть на различные показатели физического осмотра пациента, логистическая регрессия будет учитывать множество связанных факторов (мы называем их особенностями). Некоторые показатели могут быть более важными, чем другие. Логистическая регрессия присваивает каждому фактору «вес», отражающий его важность. Наконец, вместо того, чтобы просто сказать «да» или «нет», это дает вероятность. Например: «Вероятность того, что этот пациент заболеет, составляет 70%». Можно установить норматив, например, если он превышает 50%, это считается «да», в противном случае — «нет». Логистическая регрессия «учится» на большом количестве известных случаев. Точно так же, как врач, набирающийся опыта через большое количество случаев.

Конечно, роль логистической регрессии выходит далеко за рамки этого, поскольку она ограничена пространством (На самом деле, я просто хочу лениться), не буду вдаваться в подробности.

3.Хорошо, давайте представим формулу логистической регрессии.

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

1. Формула линейной регрессии

у = б0 + б1х1 + б2х2 + ... + бн*хн

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

Вот пример линейной регрессии

Не беда, если вы не понимаете код, просто посмотрите на картинку

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.font_manager as fm
  4. # Generate some simulated house data
  5. np.random.seed(0)
  6. area = np.random.rand(100) * 200 + 50 # House area (square meters)
  7. price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
  8. # Fit the data using linear regression
  9. from sklearn.linear_model import LinearRegression
  10. model = LinearRegression()
  11. model.fit(area.reshape(-1, 1), price)
  12. # Get the regression coefficients
  13. b0 = model.intercept_
  14. b1 = model.coef_[0]
  15. # Plot the scatter plot
  16. plt.scatter(area, price, label="House Data")
  17. # Plot the regression line
  18. plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
  19. # Set the plot title and axis labels
  20. plt.title("Linear Regression of House Area and Price")
  21. # Set the font to SimSun (楷体)
  22. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
  23. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  24. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
  25. # Add legend
  26. plt.legend()
  27. # Show the plot
  28. plt.show()

1. Создайте 100 данных моделирования дома.

  1. np.random.seed(0)
  2. area = np.random.rand(100) * 200 + 50
  3. price = 2 * area + 5000 + np.random.randn(100) * 500

2. Используйте линейную регрессию, чтобы подогнать данные.

  1. from sklearn.linear_model import LinearRegression
  2. model = LinearRegression()
  3. model.fit(area.reshape(-1, 1), price)

3. Получить коэффициент регрессии (b0 ~ bn)

  1. b0 = model.intercept_
  2. b1 = model.coef_[0]

4. Нарисуйте диаграмму рассеяния

plt.scatter(area, price, label="House Data")

5. Нарисуйте линию регрессии

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6. Установите заголовок статьи

plt.title("Linear Regression of House Area and Price")

7. Установите курсив и размер шрифта (если есть).

  1. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
  2. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  3. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. Добавьте легенду

plt.legend()

9. Отображение диаграмм

plt.show()

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

Результаты бега следующие:

Некоторые люди могут спросить: почему мы собираем такой большой объем данных?

Хороший вопрос~

Имея эти данные, можно ли примерно рассчитать у = б0 + б1х1 + б2х2 + ... + бн*хн А что насчет коэффициента?

Конкретно:

  • y представляет целевую переменную, которую мы хотим спрогнозировать, например цены на жилье.
  • x1, x2, ... xn представляют факторы, влияющие на целевую переменную, такие как площадь дома, количество комнат, географическое положение и т. д.
  • b0, b1, b2,... bn представляют степень влияния каждого фактора на целевую переменную, то есть коэффициент, который мы хотим вычислить.

Собрав большой объем данных, мы можем использовать модель линейной регрессии для расчета этих коэффициентов и построения прогнозной модели.Эта модель может помочь нам понять влияние различных факторов на целевую переменную и предсказать значение целевой переменной в будущем (аналогично y = kx + b в математике. Зная конкретные k и b, мы можем предсказать y, получив x , разница в том, что коэффициентов k здесь больше)

2.формула сигмовидной функции

σ(x) = 1 / (1 + exp(-x))

Изображение функции sig выглядит следующим образом:

Вопрос 1: Почему стоит выбрать сигмовидную функцию?

Как мы упоминали ранее, самое основное применение логистической регрессии — решение задач двоичной классификации.

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

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

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

Вопрос 2: Как классифицировать сигмовидные функции?

Тогда кто-то снова хочет сказать, что вы ошибаетесь. Хотя сказано, что две стороны могут быть бесконечно близки, середина не может быть достигнута. Например, 0,5 находится между 0 и 1, тогда вы говорите, что 0,5 близко к 0. Или оно приближается к 1?

Хоть и говорят, что числа в середине не могут быть близкими, я могу установить это искусственно~

Например, если я помещу числа >= 0,5 в категорию 1, а числа < 0,5 в категорию 0, проблема будет решена~

Поэтому 0,5 — это не критическая точка, а искусственно установленный нами порог классификации.

3. Формула логистической регрессии

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))

Мы уже так много говорили, просто чтобы представить эту формулу.

У вас болит голова, просто глядя на это? У меня болит голова, просто глядя на это, так почему бы нам не упростить это ~

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

Кхм, я отвлекся~ ИтакЛогистическая регрессия на самом деле представляет собой линейную регрессию + сигмовидную функцию.

z в сигмовидной функции использует линейную регрессию у = б0 + б1х1 + б2х2 + ... + бн*хн заменить

Так что же это делает?

ОК, давайте посмотрим~

4. Сущность и функции логистической регрессии

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

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

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

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

Например:

Функцию слева можно рассматривать как функцию линейной регрессии, а функцию справа — отображаемую сигмовидную функцию.

Все фотографии в этой статье взяты из[Машинное обучение] Логистическую регрессию можно изучить за десять минут, ее легко понять (включая процесс искрового решения)_bilibili_bilibili