Найти тему

Logistic Regression в Машинном обучении простыми словами

Логистическая регрессия (LogReg) – это алгоритм классификации, используемый для отнесения наблюдений к дискретному набору классов. В отличие от Линейной регрессии (Linear Regression), которая выводит непрерывные числовые значения, LogReg преобразует свой вывод с помощью Сигмоида (Sigmoid), чтобы вернуть значение вероятности, которое затем может быть округлено в сторону одного из дискретных классов:

-2

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

Натренируем Нейронную сеть (Neural Network), предсказывающую, согласится ли клиент банка взять кредит. Для начала импортируем необходимые библиотеки:.

-3

Загрузим Датасет (Dataset):

-4

Подготовленный банковский набор данных выглядит следующим образом:

-5

Все категориальные переменные, такие как «Работа», были закодированы, то есть каждому виду образования был присвоен числовой псевдоним. Для булевых признаков вроде «Ипотека» двум возможным значениям «Да» и «Нет» были присвоены значения 1 и 0. Числовые признаки, такие как «Возраст» были стандартизованы, дабы степень их воздействия на модель была адекватной.

Разделим данные на Тренировочную (Train Data) и Тестовую (Test Data) части. Чтобы оценить предсказательную способность модели, нам предстоит случайным образом отделить от основного массива двадцать процентов наблюдений на проверку. Признаков (Feature) у нас предостаточно, потому опускаем те из них, что обладают наименьшей Важностью признака (Feature Importance):

-6

Целевую переменную (Target Variable) y мы тоже опустили в объекте X, потому что тут мы храним переменные, предсказывающие согласие клиента. Для y мы создадим отдельный одноименный объект, который будет представлять целевой признак:

-7

Библиотека SkLearn поможет нам максимально быстро разделить датасет случайным образом на тренировочную и тестовую части в стандартной пропорции 80 на 20:

-8

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

-9

Пропорция 20 на 80 выдержана (7.113 на 28.448):

-10

Популярных типов Моделей (Model) не так уж и много. Сейчас мы познакомимся с логистической регрессией – базовой разновидностью нейронной сети, которая прекрасно подходит для освоения азов. Инициируем ее, а вместе с этим еще и четыре других модели:

-11

сv здесь – это Кросс-валидация (Cross Validation), то есть перекрестная проверка. Мы оценим с ее помощью эффективность каждой нейросети. Попробуем также Дерево решений (Decision Tree), Метод k-ближайших соседей (kNN), Метод опорных векторов (SVM) и Наивный байесовский классификатор (Naive Bayes):

-12

В реальности дело зачастую обстоит так, что Дата-сайентист (Data Scientist) не знает наверняка, какая модель лучше справится с задачей, потому обучает несколько таковых или использует так называемый ансамбль.

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

-13

С этой же целью создадим список моделей:

-14

И вот теперь мы отобразим с помощью цикла for, двойного счетчика i, model и функции enumerate() тестовые точности измерений каждой нейронной сети.

-15

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

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

Давайте немного задержимся на этом моменте: мы запускаем обучение моделей таким необычным образом. Чтобы отобразить тестовую точность каждой из них, используем так называемую Интерполяцию (Interpolation) и метод format(). На месте каждой пары фигурных скобок будет тип модели и соответствующая точность.

Передим для перекрестной проверки все необходимые аргументы – список признаков X, целевой признак y. Параметр cv, например, отвечает за способ формирования тестовых данных. Мы избираем accuracy в качестве метода сравнения. Метод mean() усредняет результат десяти проверок каждой из моделей на точность.

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

-16

Лучшая, как мы видим, – это Метод опорных векторов, которая добилась наивысшей точности в 91 с лишним процента. Это замечательный результат. Теперь мы можем передавать ей любую новую запись о клиенте, например, такую:

-17

И модель с высокой степенью точности предскажет, согласится ли человек взять кредит. Этот, кстати, согласится. Представьте, какие возможности это открывает для банков! По моим наблюдениям, крупные организации, вроде Сбербанка, Тинькофф банка, используют Машинное обучение и другие характеристики клиентов для предварительных заявок на кредит.

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

-18

Так повышается эффективность рекламы, и холодных звонков совершать приходится меньше.

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

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

Посмотрим, как выглядит тюнинг нашей первой LogReg:

-19

C (C Regularization Parameter) – это параметр штрафования или неверной классификации. Оказывается, за каждую ошибку модель можно штрафовать (penalty), и это увеличит эффективность.

Создадим объект clf и с его помощью осуществим автопоиск лучших параметров модели. Делается это так:

-20

verbose, равный 0, означает, что мы не хотим увидеть подробный отчет о поиске. n_jobs – это число одновременно запускаемых процессов поиска. -1 значит, что задействуется все процессоры. Теперь обучим нашу регрессионную модель с лучшими параметрами и определим новую точность:

-21

Скор улучшился и составляет теперь 92 с лишним процента:

-22

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

Фото: @ninjason

Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте наши курсы по Машинному обучению на Udemy.