Унификация работы с данными в рамках программ лояльности
Казалось бы, что может быть проще – собирай, храни и используй клиентскую информацию, содержащуюся в анкетах лояльности. Но не тут-то было! Как сделать предоставленные в спешке клиентами данные пригодными к обработке, рассказывает наш постоянный автор Олег Брагинский, основатель «Школы траблшутеров» и директор «Бюро Брагинского».
Бумажные бланки и интернет-анкеты заполняют небрежно: заносят данные не в те поля, злоупотребляют сокращениями, тестируют «дуракоустойчивость» системы. Использование интернет-браузеров на рабочих компьютерах сотрудников с включенной функцией автозаполнения катастрофически множит ошибки, формируя равновесные распределения «Наталья» и «Наталия», «Жукова Маршала» и «Маршала Жукова».
Проблем добавляют сотрудники, присваивающие себе несколько идентификаторов лояльности, чтобы не быть пойманными на аномальном росте бонусов, баллов и скидок. Клиенты тоже не стесняются требовать очередную карту взамен забытой дома, что в 13% случаев оказывается ложью. Передача карт друзьям и знакомым некритична с точки зрения предоставления скидки (для этого они и предназначены), но разрушает модели пользовательского поведения.
Обучение, контроль и наказание персонала не спасают ситуацию – данные серьезно загрязнены. Выход на будущее – внедрение интеллектуальных справочников быстрого ввода, выравнивание прошлого – чистка, доопределение и дедубликация записей. Эта работа, выполнение которой потребует в том числе ручного труда, займет уйму времени и иногда будет казаться бессмысленной, как следствие – возникнут порывы удалить недочищенную часть базы. Удержитесь от резких движений и будете щедро вознаграждены точностью предсказания построенных моделей.
Типичные погрешности столбцов полей в 0,2–0,6% кажутся незначительными, но приводят к неточности 4,5–11,2% строк базы, что делает разработку моделей бесперспективной. Запомните правило «грязного квадрата»: ошибки в x% описаний объектов превращаются в x2 % неточности прогнозов. Пятипроцентная неточность означает ошибку в каждом четвертом случае, а 10%-ная погрешность – полный абсурд предсказаний, напрочь оторванный от жизни.
Построение системы корректирующих фильтров позволяет не только улучшить прошлое, но и не пропускать грязевой сель в настоящее Передача карт друзьям и знакомым некритична с точки зрения предоставления скидки (для этого они и предназначены), но разрушает модели пользовательского поведения
Построение системы корректирующих фильтров позволяет не только улучшить прошлое, но и не пропускать грязевой сель в настоящее. Рассмотрим несколько методик организации работы с данными в рамках программ лояльности. В статье приведены цифры, полученные по итогам исследования 27 баз данных в 5 странах за 12 лет, среди которых:
• 11 розничных сетей по продажам электроники; • 5 ресторанных объединений; • 4 продуктовых ритейлера; • 3 страховые компании; • 2 банка; • оператор мобильной связи; • конгломерат монобутиков.
Текстовые строки разбейте на атомы – минимальные неделимые компоненты. Нужно учитывать, что в строке «ФИО», предназначенной для внесения фамилии, имени и отчества, должна быть предусмотрена возможность написания двойных имен и пр.: Анна-Мария, Смирнова-Балацкая и даже Андреевна-Сергеевна – сам бы не поверил, если бы не увидел своими глазами. Для адресов места регистрации, проживания и работы количество атомов может превышать 50, в основном из-за сложносочиненных адресов со множеством владений, строений, корпусов и дробей.
Проверьте допустимость встречаемости символов – постройте маски для большинства полей, проверьте символы малых частот и их сочетаемости – биграммы, триграммы и квадрограммы. Сможете обнаружить ошибки или узнать много нового об имеющихся данных.
Определите максимальные и минимальные значения – постройте сводные таблицы, чтобы внимательно рассмотреть малые и большие показатели для чисел и длин текстовых строк и выявить аномальные, незначащие значения или «недописки». Особое внимание уделите датам – там скрываются горы необъяснимых ошибок.
Проведите оптимизацию длины полей, устраняя незначащие элементы:
• двойные пробелы, в начале и конце строки; • пробелы, скобки и дефисы в номере телефона; • задвоенные кавычки, дефисы и прочие повторяющиеся знаки. Рассчитайте частотные коэффициенты встречаемости отдельно для фамилии, имени, отчества: • Ф-Ф – компонент фамилии в справочнике фамилий; • Ф-И – компонент фамилии в справочнике имен; • Ф-О – компонент фамилии в справочнике отчеств; • И-И – компонент имени в справочнике имен; • И-Ф – компонент имени в справочнике фамилий; • И-О – компонент имени в справочнике отчеств; • О-О – компонент отчества в справочнике отчеств; • О-Ф – компонент отчества в справочнике фамилий; • О-И – компонент отчества в справочнике имен.
Выполните необходимые перестановки, если элементы занимают «не свои» столбцы.
Аналогичную работу следует провести с регионами, городами, типами улиц, улицами, чтобы «тупик Остапа Бендера» и «Остапа Бендера тупик» перестали быть различными географическими объектами. Похожая участь постигнет и многословные названия юридических лиц: «Предприятие с иностранными инвестициями – Торговый дом “АБВ”» и «Торговый дом предприятия с иностранными инвестициями ”АБВ”».
Откорректируйте поля в пределах смысловых групп – коды стационарных телефонов должны соответствовать регионам, почтовые индексы – городам, а типы улиц одинакового написания корреспондироваться в пределах населенных пунктов.
Введите и соблюдайте сокращения – фразу «Общество с ограниченной ответственностью» следует выносить в «Форму собственности» и заменять на «ООО», «Воинская часть No 12345» – разбить на столбцы «ВЧ» и «12345». Так же действуем с формулировками «Садовое общество», «Лодочная пристань» и «Дачно-строительный кооператив»: «СС», «ЛП» и «ДСК».
Рассчитайте расстояние Левенштейна для текстовых строк с низкими коэффициентами встречаемости – минимальное количество операций вставки или удаления или замены символа на другой. Сравнивая редкие строки с частыми, найдите расстояния 1 и 2: вероятны ошибки, опечатки, пропуск или смешение порядка следования символов при наборе, которые поддаются автоматизированной коррекции.
Отработайте типовые окончания текстовых строк – «-вич» и «-вна» обычно бывают окончаниями, определяющими пол и тип строки «Отчество». Завершающие символы «-адзе», «-ий», «-ко» часто характеризуют фамилии и национальность. Имена и фамилии, заканчивающиеся на гласные, преимущественно принадлежат женщинам.
Введите расчетные столбцы. Многим фамилиям, именам и отчествам можно сопоставить пол:
• 0 – мужской • 1 – женский • 5 – средний (например, украинские фамилии на «-ко») • 8 – неопределенный для неславянских.
Рисунок 1. Тренд снижения количества записей базы данных при очистке Таблица 1. Прогресс снижения количества записей базы данных при очистке
Проголосуйте расчетными столбцами. Аббревиатура «1ж-2м» означает, что пол, вероятно, мужской, так как имеем два мужских компонента, а «1м-2ж» – женский. Прочие случаи не подлежат автоматической коррекции и исследуются в ручном режиме.
Проведите орфографическую коррекцию. Ошибки в написании слов обернутся плохой сворачиваемостью и появлением редких элементов реляционных справочников. Используем MS Word и не морщимся. Да, нетехнологично. Знаете способ лучше? С удовольствием прочту вашу статью в этом же журнале.
Займитесь доопределением пустот по однозначным полям. «Мобильный телефон» и «Электронная почта» с любыми двумя полями из ФИО удачно определяют третье: по пропущенному имени или отчеству при наличии фамилии и мобильного телефона или отчества и email легко доопределить недостающее поле. Инициалы в этом случае тоже можно считать пустотой, причем обладающей функцией косвенной проверки. Почему не прямой? «Шура» = «Александр», а «Лана» = «Светлана».
Кстати, чуть не забыл, все коррекции текстовых строк делятся на два типа: замещающие, когда вы подменяете старую строку «корректной», и внутренние, когда клиенту вы пишете «Шура», но для скорингов используете полную форму имени.
После доопределения приходит час свертки – дедубликации строк с равными показателями значащих полей. Похожие строки объединяются в группы дубликатов, которым в новом столбце проставляется идентификатор с самой младшей датой. Так сможете привязать несколько карт лояльности к одному человеку с момента выдачи первой, что поможет корректно строить графу совершенных покупок.
Взаимопроверяем молекулы – разные ФИО по одному адресу и наоборот часто принадлежат семье или родственникам, что позволяет организовать карты в домохозяйство или откорректировать написание атомов.
Парсим примечания – строки произвольного ввода хоть и являются атавизмом, помогают получить альтернативные адреса и телефоны, ФИО родственников и прислуги, рабочие и домашние email’ы, добавочные номера офисных АТС.
Выделяем субатомы – email содержит часть строки до символа @, которая обычно уникальна даже для больших баз, а вот домены и субдомены вполне корректируемы по словарям. Аналогично 2–4 и 5–7 символы мобильных телефонов сохраняют префикс мобильного оператора и серию, по которой возможно узнать дату выдачи идентификатора.
Рисунок 2. Сравнение компонентной чистоты начальной базы и после коррекции Рисунок 3. Сравнение уникальности начальной базы и после коррекции Рисунок 4. Динамика изменения максимальной длины полей начальной базы и после коррекции Рисунок 5. Динамика изменения суммарной длины полей начальной базы и после коррекции
Проверяем коэффициенты доверия – малые значения произведений после перемножения частот встречаемости атомов «ФИО» и «Адреса» указывают на потенциальные ошибки и редкие случаи. Значения, находящиеся в верхних 99% цифрового ряда, вполне пригодны для дальнейшего анализа, а вот ниже – первые кандидаты на удаление из-за недоверия к странным сочетаниям значений атомов.
Не буду утомлять вас прочими методами работы с грязными данными, лишь предостерегу:
• описывайте и сохраняйте скрипты; • создавайте копии базы перед массовыми операциями; • сначала тестируйте выборки, потом производите обновления; • предусмотрите возможность повторить процесс с самого начала.
Отслеживайте процесс и прогресс, чтобы остановиться, когда темп борьбы за чистоту данных начнет спадать (рис. 1).
Приведенный на рис. 1 и в табл. 1 пример отражает сворачивание базы в 52,6 млн записей до 41,7 млн и улучшение качества базы: количество записей на уникальный номер телефона лояльного клиента уменьшилось с 3,16 до 2,49 с одновременным улучшением качества информации.
Выводы по оценке прогресса 1. Большое продвижение по уникальности записей произошло в процессе парсинга и доопределения адресов. В адресе возникновение ошибки имеет высокую вероятность и значительное разнообразие: грамматика, пунктуация, сокращения, порядок следования атомов. 2. Чистка ФИО и определение формы собственности компаний оказались самыми короткими по времени этапами в обработке базы. В совокупности они дали существенное приращение по качеству данных. Проведите сравнение компонентной чистоты начальной базы и после коррекции, чтобы отследить динамику дооопределения полей (рис. 2 и рис. 3).
Выводы по динамике уникальности 1. Увеличение уникальности показателей связано с коррекцией значений по группам смысловых полей. Наибольший рост уникальности значений: «Город» – +34,2% (на 12,6 тыс. шт.), «Квартира» – +12,0% (на 3,2 тыс. шт.), «Улица» – +4,0% (на 14,3 тыс. шт.), «Фамилия» – +0,4% (на 18,2 тыс. шт.). 2. Уменьшение уникальности некоторых показателей произошло вследствие исправления ошибок в написании. Каждая ошибка в написании – появление уникального значения. Уменьшение уникальности происходит в полях типизируемых значений: «Имя», «Отчество», «Область», «Район», «Тип города». 3. Наибольшее уменьшение уникальности (исправление нетипичных значений) сделано в значениях «Область»: –98,2% (на 1,5 тыс. шт.), «Адрес»: –94,1% (на 2,4 млн шт.), «Район»: –87,9% (на 7,0 тыс. шт.), «Отчество»: –8,2% (на 8,6 тыс. шт.), «Имя»: –4,4% (на 2,6 тыс. шт.). 4. Почти по всем показателям из группы «Адрес» произошло уменьшение пустотности после обработки кроме собственно поля «Адрес», в котором фиксируется его полная строка. Изменения произошли в процессе распарсивания и корректировки ошибочных значений атомов. 5. Удаление пустотности эффективно происходит по параметрам, дополнение которых формулируется алгоритмически и автоматизируется программными средствами. 6. Наибольшее уменьшение пустотности: «Код города»: –52,5% (на 0,7 млн записей), Тип улицы: –27,4% (на 0,1 млн записей), «Квартира»: –26,6% (на 0,2 млн записей).
Сравните максимальные длины полей начальной базы и после коррекции, чтобы отследить динамику дооопределения (рис. 4).
Выводы по динамике максимальной длины полей 1. Длина полей измерялась для данных, записываемых текстовыми строками. Сокращение полей допускалось, если не приводило к содержательной потере данных. 2. В среднем удалось сократить длину текстовых полей на 45%. 3. По количеству символов наиболее сокращенными оказались: «Адрес» – на 97 символов, «Фамилия» – на 50, «Улица» – на 47 и «Город» – на 27 символов. 4. Больше чем вполовину удалось сократить: «Адрес»: на 80,8%, «Квартира»: на 72,2%, «Дом»: на 66,7%, «Корпус»: на 54,5%, «Улица»: на 54,0% и «Имя»: на 50,0%. Оцените наполненность базы, просуммировав длины полей (рис. 5).
Выводы по суммарной длине полей 1. Суммарная длина полей характеризирует длину значений всей базы и непосредственно связана с ее размером. 2. Суммарную длину полей удалось сократить на 41,6% без потерь в информационной содержательности данных. 3. Больше всего суммарная длина сокращена для полей: «Отчество»: –45,6% (на 199,4 млрд символов), «Имя»: –45,4% (на 126,6 млрд символов) и ИНН: –43,1% (на 177,2 млрд символов). 4. Меньше остальных удалось ужать «Адрес»: –0,8% (на 0,1 млрд символов).
Дальнейшая работа с данными в рамках программ лояльности описана в сотнях учебников и статей, тут трудно блеснуть оригинальными мыслями. Привыкните сами и приучите аналитиков – прежде чем использовать информацию и строить прогнозы, надо потратить достаточное время на достижение приемлемой чистоты данных. Удачи вам в борьбе за приверженность потребителей!