Эта история первоначально была опубликована на Nucleusbox
Добро пожаловать в очередной блог о логистической регрессии в Python. В предыдущем блоге Логистическая регрессия для машинного обучения с использованием Python мы видели одномерную логистическую регрессию. И мы увидели основные концепции двоичной классификации, сигмовидной кривой, функции правдоподобия, а также шансов и логарифмических шансов.
В этом разделе сначала будут рассмотрены концепции многомерной логистической регрессии. А затем мы будем строить логистическую регрессию в питоне.
Логистическая регрессия для машинного обучения — один из самых популярных алгоритмов машинного обучения для бинарной классификации.
Многомерная логистическая регрессия для машинного обучения
В этой логистической регрессии будет использоваться несколько переменных. Как мы видим, есть много переменных для классификации оттока.
Например:
В многомерной логистической регрессии у нас есть несколько независимых переменныхX1, X2, X3, X4,…, Xn. Таким образом, выражение сигмоидальнойфункции будет таким, как показано ниже.
Пример использования телекоммуникационного оттока
Итак, теперь мы будем строить модель логистической регрессии с использованием варианта использования телекоммуникационного оттока.
Есть компания X, которая получает большую часть дохода от использования голосовых и интернет-услуг. И эта компания ведет информацию о заказчике.
- Информация о
- Демография
- Услуга доступна
- Расходы
Есть другая информация, которую они поддерживают, и они хотят понять поведение клиентов. Они хотели знать, уйдет ли клиент.
Итак, теперь давайте начнем и построим модель, которая скажет нам, будет ли отток клиентов или нет. Отток означает, что клиент переключится на другого оператора связи.
Итак, импорт и объединение данных
# Importing Pandas and NumPy import pandas as pd import numpy as np
# Importing all datasets churn_data = pd.read_csv("./churn_data.csv") customer_data = pd.read_csv("./customer_data.csv") internet_data = pd.read_csv("./internet_data.csv")
Итак, у нас есть три файла CSV. Данные об оттоке первого файла, которые содержат информацию о клиенте, второй содержит демографические данные клиента. И в-третьих, в нем есть информация, связанная с использованием Интернета клиентом.
Итак, мы объединим все эти три набора данных в один единый фрейм данных.
#Merging on 'customerID'
df_1 = pd.merge(churn_data, customer_data, how='inner', on='customerID')
#Final dataframe with all predictor variables
telecom = pd.merge(df_1, internet_data, how='inner', on='customerID')
Подготовка данных
Теперь мы выполним подготовку данных, теперь преобразуем категориальную переменную в 1 или 0.
# Converting Yes to 1 and No to 0
telecom['PhoneService'] = telecom['PhoneService'].map({'Yes': 1, 'No': 0})
telecom['PaperlessBilling'] = telecom['PaperlessBilling'].map({'Yes': 1, 'No': 0})
telecom['Churn'] = telecom['Churn'].map({'Yes': 1, 'No': 0})
telecom['Partner'] = telecom['Partner'].map({'Yes': 1, 'No': 0})
telecom['Dependents'] = telecom['Dependents'].map({'Yes': 1, 'No': 0})
Теперь создадим фиктивную переменную. В этом процессе мы преобразуем категориальную переменную в фиктивные/индикаторные переменные. Потому что модель машинного обучения понимает только числовую переменную. и если у нас есть какая-либо категориальная переменная, мы можем создать горячее кодирование.
Почему данные One-Hot Encode в машинном обучении?
Хорошим примером одноразового кодирования является категориальная переменная. Но вопрос в том, почему требуется однократное кодирование. Почему мы не можем вписать данные непосредственно в модель.
Таким образом, в категориальной переменной из Таблицы 1 индикатор оттока будет «Да» или «Нет», что является не чем иным, как категориальной переменной. Многие алгоритмы машинного обучения не могут работать с категориальными переменными. Потому что все они требовали числовой переменной. Только алгоритм дерева решений может работать с категориальными переменными.
Это означает, что категориальная переменная должна быть преобразована в числовую форму. Теперь мы можем преобразовать эту категориальную переменную двумя способами.
- Числовое кодирование
- однократное кодирование
При числовом кодировании каждая уникальная категориальная переменная преобразуется в целочисленное значение. например, индикатор оттока из Таблицы-1 преобразуется в Да=1 и Нет=2.
Но есть одна проблема с использованием этой числовой кодировки для порядка. Из-за этого модель предполагает, что естественный порядок между категориями может привести к снижению производительности или неожиданным результатам.
В этом случае к целочисленному представлению может применяться однократное кодирование. Здесь переменная, закодированная целым числом, удаляется и для каждого уникального целочисленного значения добавляется новая двоичная переменная.
Например :
Индикатор оттока имеет три категориальных значения Да, Нет, Возможно. Поэтому необходимы три двоичные переменные. Значение «1» помещается в двоичную переменную для оттока и значения «0» для другого индикатора оттока. Двоичные переменные часто называют «фиктивными переменными».
Yes, No, Maybe
1, 0, 0
0, 1, 0
0, 0, 1
Итак, вернемся к нашей проблеме, теперь мы преобразуем все категориальные переменные в фиктивные переменные.
Сноски:
Дополнительное чтение
- Логистическая регрессия для машинного обучения
- Функция стоимости в логистической регрессии
- Оценка максимального правдоподобия (MLE) для машинного обучения
Хорошо, все, мы закончили. Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь комментировать. Скоро я подниму тему машинного обучения.