Эта глава пролетит быстро, потому что мы возьмем базу данных РитейлМарта из главы 6. Используя те же самые данные, вы лучше поймете различия в применении двух моделей, которые я собираюсь вам предложить, и регрессионных моделей из предыдущей главы. Техники моделирования, которые мы будем использовать в этой главе, придуманы не так давно. Они более интуитивны и, вероятно, являются одними из самых мощных технологий ИИ, существующих на данный момент.
Также мы построим кривые ошибок в точности, как в главе 6, так что я не буду тратить много времени на объяснение расчетов параметров качества работы модели. Загляните в главу 6, если вдруг захотите освежить в памяти понятия «точность» и «чувствительность».
Итак, начнем. В таблице, которую вы, возможно, загрузили, есть лист TD, содержащий обучающие данные из главы 6 с уже настроенными фиктивными переменными (подробнее также в главе 6). Отличительные признаки пронумерованы от 0 до 18 в строке 2. Нумерация пригодится нам чуть позже для записей результатов (рис. 7–1).
Также рабочая таблица содержит лист Test Set из главы 6.
С этими данными вам предстоит сделать в точности то же, что вы делали в главе 6 – предсказать значения в столбце Pregnant с помощью данных слева от него, а затем проверить точность на тестовом наборе.
Оценка недостающей величины
В примере РитейлМарта, приведенном в главе 6 и продолженном здесь, вы работаете с набором данных, в котором нет пробелов. Для многих моделей, построенных на транзакционных данных бизнеса, это весьма актуально. Но и вы столкнетесь с ситуацией, когда в какой-нибудь строке данных не окажется элемента.
К примеру, если вы строите рекомендательную бизнес-модель для сайта знакомств и включаете в анкету профиля пользователя вопрос, слушает ли он симфоническую хэви-метал группу Evanescence, то резонно ожидать, что часть пользователей оставит эту графу незаполненной.
Как же обучать модель, если респондент оставил пустой графу с вопросом об Evanescence?
На этот вопрос есть множество ответов. Я перечислю коротко несколько моментов, от которых можно оттолкнуться.
• Просто выкиньте строки с недостающими значениями. Если эти значения более или менее случайны, потеря пары строк обучающей последовательности не будет критичной. Хотя как раз в примере с сайтом знакомств эти пропуски, скорее всего, будут носить намеренный, а не случайный характер, так что из-за потери строк набор данных может искаженно отображать реальность.
• Если значения столбца – числовые, пропущенные значения можно заменить средними по параметру. Подстановка недостающих значений часто называется imputation (приписывание). Если столбец категорийный, используйте самое популярное значение категории. Опять же, в примере с пристыженными фанатами Evanescence, самым популярным ответом будет «Нет», следовательно, заполнение самым популярным значением – не лучший выход, если человек вдруг решит проверить свой профиль.
• Вдобавок к предыдущей опции вы можете вставить рядом еще один столбец, заполненный нулями, пока не появится недостающее значение – в этом случае 0 становится 1. Таким образом вы заполняете пропущенные значения как можете, но рекомендуете модели не очень-то им доверять.
• Вместо использования среднего можно обучить модель типа общей линейной модели из предыдущей главы «додумывать» недостающие значения, используя данные из других столбцов. Это, конечно, лишняя работа, но она того стоит, если у вас небольшой набор данных и вы не можете себе позволить потерю точности или целых строк.
• К сожалению, последний подход (как и все остальные, упомянутые в этой заметке) отмечен отпечатком излишней самонадеянности. Он подразумевает отношение к приписанным данным как к гражданам высшего класса, если они предсказаны графиком регрессии. Чтобы обойти этот недостаток, те, кто работает со статистикой, часто используют статистические модели и создают несколько графиков регрессии. Пропуск в данных заполняется несколько раз с помощью этих моделей, каждая из которых, в свою очередь, создает свой набор данных. Дальше над вставленными наборами данных можно проводить любой анализ и комбинировать в итоге любые его результаты. Эта операция называется множественной подстановкой (multiple imputation).
• Еще один неплохой подход называется подстановкой k ближайших соседей. Используя расстояния (глава 2) или матрицы смежности (глава 5), можно найти k ближайших соседей пропущенного значения. Вычислите среднее взвешенное расстояние (или самую распространенную величину, которая вам нравится) до значений соседей и вставьте его вместо пропуска в данных.