Матчинг что это
«Матчинг» – искусственный интеллект в действии
GoodsForecast
Российская компания GoodsForecast, разработчик решений для планирования и оптимизации цепочек поставок, резидент «Сколково», разработала новую технологию «матчинга» чековых данных. Система, основанная на искусственном интеллекте, позволяет решать проблему сопоставления и распознавания различных товарных позиций (SKU) в торговых точках. Благодаря уникальному алгоритму точность сопоставления наименований товарных позиций в ритейле повышается до 90–95%, а с поддержкой операторов – до 99%.
О компании и новом сценарии применения технологии искусственного интеллекта в ритейле журналу «Retail & Loyalty» рассказывает Андрей Лисица, генеральный директор компании GoodsForecast.
Андрей Лисица
генеральный директор компании GoodsForecast
Визитная карточка
Компания GoodsForecast входит в группу компаний «Форексис» и специализируется на разработке и внедрении программных решений в области управления и оптимизации цепочек поставок в сфере производства, дистрибуции и розничной торговли. Группа компаний была основана в 2000 году на базе Вычислительного центра Российской академии наук в научной школе академика Юрия Ивановича Журавлева, который начал заниматься областью математики, которая сейчас называется machine learning и data mining, еще в 60-х гг. ХХ века. Главной целью создания компании стало прикладное применение разработанных математических моделей и алгоритмов для бизнеса.
Основатели компании являются выпускниками Московского физико-технического института (ФизТех), а топ-менеджмент – это выпускники Московского Государственного Университета им. М. В. Ломоносова. Долгое время компания росла за счет студентов этих двух вузов, а сегодня обеспечивает высококвалифицированной работой более 200 человек.
GoodsForecast является участником консорциума, созданного Центром хранения и анализа больших данных при МГУ, и поддерживает тесную связь с академической и прикладной наукой. Например, сразу несколько сотрудников компании входят в экспертные рабочие группы по стандартизации
(ГОСТ и ISO) в области искусственного интеллекта. Благодаря использованию инновационных подходов к развитию бизнеса в 2013 году компания стала резидентом «Сколково».
Помимо решения задач прогнозирования спроса, GoodsForecast также представляет программные решения для планирования продаж и операций, планирования производства, управления товарными запасами, а также аналитику упущенных продаж и прогнозирование промоакций.
Компания является многократным победителем различных конкурсов по точности прогнозирования.
От взаимодействия с ОФД до алгоритма сопоставления наименований товаров
Изменения в Федеральном законе №54 «О применении контрольно-кассовой техники» обязали всех игроков розничной индустрии с 1 февраля 2017 года осуществить поэтапный переход на онлайн-фискализацию. Ритейлеры начали отправлять электронные версии бумажных чеков операторам фискальных данных (ОФД). Наличие таких агрегированных данных об устройстве спроса на российском потребительском рынке открыло новые возможности, в первую очередь, для аналитических компаний, таких как GoodsForecast.
На сегодняшний день нашими партнерами являются четыре крупнейших ОФД, обслуживающих около 70% онлайн-касс.
Поскольку рынок ОФД очень молод, единые правила игры еще не сформированы, что влечет за собой определенные трудности на начальном этапе сотрудничества с каждым новым партнером. Однако в будущем мы рассчитываем, что опыт/экспертиза работы с крупными ОФД в определенных направлениях будет заложен в основу стандартов для подключения других ОФД.
GoodsForecast выступает в качестве эффективного «мостика» между ОФД, ритейлерами и производителями. С одной стороны, мы налаживаем тесные связи с ОФД, с другой – благодаря своим компетенциям гораздо лучше ОФД понимаем, чего именно хотят клиенты из индустрии.
Сегодня мы работаем в основном с индивидуальными проектами больших компаний, но в планах – расширить клиентский портфель за счет налаживания сотрудничества с предприятиями малого и среднего бизнеса, которые по объективным причинам не имеют финансовых возможностей для инвестиций в собственные инновационные проекты. В этой связи партнерство с ОФД нам также интересно, в том числе и как инструмент для создания и продвижения массового продукта.
Какие возможности открывают данные ОФД?
Ценообразование
осуществлять мониторинг цен на рынке (какие цены на аналогичные товары на небольшом удалении от магазина?) и использовать эту информацию в своей ценовой политике;
Ассортиментное планирование
проводить анализ ассортиментной матрицы, выявлять пользующиеся спросом недостающие позиции и открывать их;
Открытие новых точек
определять, какие товары в той или иной локации пользуются наибольшим спросом, оценивать платежеспособность населения каждой локации и сформировавшиеся там покупательские предпочтения, а значит помогать прогнозировать спрос и объемы продаж в конкретной торговой точке;
Мониторинг рынка
производителям – в режиме почти реального времени осуществлять мониторинг цен и объемов продаж своих товаров и товаров конкурентов, снижать временные и материальные затраты на получение соответствующей информации от дистрибьютеров и торговых сетей, быстрее реагировать в контексте текущей ситуации (особенно важно в условиях карантина), повышать эффективность промо;
Скоринг
с помощью опции в банковских мобильных приложениях, которая позволяет клиенту видеть свои покупки, банк не только получает доступ к информации о сумме транзакции и торговой точке, в которой она совершена, но видит все его покупки, что позволяет ему более тонко понимать клиента, предлагать персонализированные скидки, кредиты и т.п.
Закупки
делать прозрачными закупки для госструктур и больших компаний, точно определять справедливую минимальную цену в контракте, которая зачастую сильно варьируется в зависимости от региона присутствия.
По некоторым из приведенных выше примеров у нас уже есть примеры реально работающих проектов. Основная сложность их реализации заключается в распознавании конкретных товаров в данных ОФД. .
Основные проблемы сопоставления и распознавания товаров и пути их решения
На сегодняшний день в России не существует единой базы наименований товаров. Если в крупных торговых сетях товарные позиции более-менее стандартизованы (например, первое слово в наименовании означает категорию, второе – бренд и т.д.), то в сетях уровня ниже и в отдельных магазинах написание наименований зачастую производится в хаотичном для общего восприятия порядке. Например, детальный анализ 10–15% рынка выявил несколько десятков тысяч вариантов написания пачки сигарет PARLIAMENT AQUA BLUE (алфавит, сокращения, ошибки, пр.). Из-за большой вариативности написания вручную создавать справочник наименований и в дальнейшем работать с ним не представляется возможным. Без математики и алгоритмов здесь не обойтись!
Показательным примером является проблема двойных названий. Например, если человек понимает, какой артикул кроется за наименованием «водка «Огурцы», то система видит два ключевых слова и не может определить что это – алкоголь или овощ? Кроме того, названия товарных позиций часто сокращают. Так, например, для своего удобства ритейлер может обозначить красную пачку сигарет, пользующуюся наибольшим спросом, как «LM» (без обозначения цвета), при этом синяя будет значиться, как «LM синий». Зачастую аналогичная путаница встречается и с вкусовыми характеристиками. Например, «Молочный шоколад», «Чудо-шоколад» или «Молочко с запахом шоколада». Все эти товары относятся к абсолютно разным категориям – кондитерское изделие, напиток и парфюмерия соответственно. И таких примеров может быть множество. Не стоит забывать об англицизмах, ошибках, сокращениях и т.п. Со всей этой запутанной массой вариантов достаточно сложно работать.
Для соотнесения различных вариантов написания наименований к конкретным товарам используются различные алгоритмы. Так, некоторые решения при помощи метрики высчитывают «расстояние» между строками (например, пиво «Балтика 3» в жестяной банке 0,50 л.) и таким образом определяют, что это за товар.
Мы же предлагаем совершенно иной подход, делая акцент не на метрические данные, а вычленение сути, которая заложена человеком в строку с названием товара – на основании всевозможных строк с названиями товаров, которые мы получаем из интернет и от ОФД, алгоритм определяет часто встречаемые слова (бренды, категории, важные свойства и т.п.) и самостоятельно предлагает правила, идентифицирующие среди набора строк конкретные товары и категории.
Мы разработали эффективный визуальный инструмент, позволяющий операторам верифицировать правила, предлагаемые машиной, а также вносить свои собственные, тем самым постепенно обучая и улучшая промышленный алгоритм.
Как правило, на первичную настройку оператору требуется несколько недель, после чего система работает в автоматическом режиме. Чтобы обработать спорные случаи (и убедиться в том, что точность «матчинга» не падает, а остается на согласованном с клиентом уровне) оператору необходимо дополнительно несколько часов в месяц на их устранение. Введение в систему каждой новой категории занимает определенное время в зависимости от ее размера.
Матчинг сделок
Матчинг сделок — это процент сделок с известным источником. Простыми словами — это когда мы знаем, какой канал привел к каждой продаже. Например, мы установили, что пользователь видел нашу рекламу в поисковой выдаче перед тем, как зайти на сайт, оставить заявку, пообщаться с менеджером и оформить покупку.
Термин из категории
26 терминов
- каналы с высоким ROMI могут на деле не приносить сделок;
- источники, которые отмечаются в отчетах как неэффективные, могут быть ключевыми в цепочке принятия решений клиента.
Кому и зачем отслеживать матчинг сделок
Матчинг сделок нужно отслеживать как маркетологам, так и владельцам бизнеса — это важный показатель, который позволяет достоверно оценить результаты продвижения: работает ли контекстная или таргетированная реклама, партнерские размещения, нативные статьи, цифровая наружка (та, что показывается на билбордах, суперсайтах, ситибордах и медиафасадах).
Особенно важен процент матчинга для бизнеса, в котором у потенциальных клиентов длинный цикл принятия решения о покупке: например, как в нишах недвижимости, авто и b2b. Там информация о первом контакте пользователя с брендом может потеряться из-за времени: часто в системе аналитики учитываются данные только за последние 90 дней, а человек может принимать решение о покупке недвижимости больше года. И можно просто не учесть, что первое касание клиента с брендом произошло после клика по контекстной рекламе 14 месяцев назад.
Как повысить матчинг сделок
- Отслеживать все коммуникации с клиентами. Нельзя упускать из виду любые каналы связи с пользователями: чат-боты, чаты на сайтах, просмотр объявлений.
- Учитывать весь путь клиента с самой первой сессии и длину цикла сделки. Путь клиента зачастую начинается не с обращения в компанию, а раньше — с просмотра рекламы или прочтения нативной статьи о продукте. Стандартное окно ретроспективы в аналитике — 90 дней, но для ниш с долгим сроком принятия решений о покупке такой цикл может быть слишком коротким. А значит, данные о пути клиента могут оказаться искаженными. То есть вы попросту не увидите, с какого канала на самом деле пришел клиент. Решить эту проблему помогут два инструмента — лид-формы и омниканальные платформы, такие как Calltouch, Exponea, Smartis и eSputnik. Они позволят вам собрать в одном месте все контакты пользователя с брендом и отследить весь его путь к покупке.
- Использовать кросс-девайс технологии, чтобы отслеживать все контакты пользователя с брендом, даже если он заходил на сайт с разных устройств. Например, клиент впервые увидел рекламу с планшета, через месяц зашел на сайт со смартфона и оставил заявку, через неделю посмотрел новые предложения с десктопа и т. д. При этом человек может использовать не только личные устройства, но и рабочие или принадлежащие членам семьи. Поэтому важно иметь инструменты под капотом системы аналитики, которые позволят узнавать одного и того же пользователя, даже если он заходит с множества устройств, склеить все касания и объединить их в карточку клиента с привязкой к номеру телефона.
- Сквозная аналитика и кастомная модель атрибуции для среднего и малого бизнеса без программирования
- Источники трафика и страницы сайта — как найти слабое место
- Делаем сквозную аналитику на коленке из Google Sheets, GA и Tilda
- 9 полезных отчетов Яндекс.Метрики для специалиста по рекламе
- Сквозная аналитика для интернет-магазина: основные составляющие и инструменты
- 10 причин, почему данные в Яндекс.Директе и Яндекс.Метрике не сходятся
Матчинг что это
This entails conformity or identity based on a matching nature, circumstance, quality, quantity or [. ]
form such that no exceptions or privileges
are granted that would deny one person access to the rights conferred upon another within the same time frame or for the same reason.
daccess-ods.un.org
Это касается сходства или совпадения на основании одинакового характера, обстоятельств, качества, [. ]
количества или формы; при этом не предусматривается
исключений или преимуществ, лишающих лицо прав, предоставляемых другому лицу в сходных равных обстоятельствах.
daccess-ods.un.org
A stainless steel standing grate with matching protective caps, optionally matt or shiny, rounds off the complete package.
Отдельным артикулом поставляется решетка из нержавеющей стали по выбору в матовом или глянцевом исполнении.
Whilst FABS, which had been operational for a few months only, should facilitate the task of matching allocations with expenditures, much more would depend upon how the ADGs of the Sectors executed the programme, as their achievements under the resultsbased management criteria could affect the level of budget allocations in the future.
unesdoc.unesco.org
Хотя система FABS, вступившая в действие лишь несколько месяцев тому назад, и должна облегчить задачу приведения ассигнований в соответствие с расходами, гораздо большее будет зависеть от того, каким образом заместители Генерального директора по различным секторам осуществляют программу, поскольку в условиях применения критериев управления, ориентированного на конкретные результаты, их достижения могут сказаться на уровне бюджетных ассигнований в будущем.
unesdoc.unesco.org
The increasing use of “data mining” by intelligence agencies, entailing the matching of various databases according to a number of variables, blurs the boundary between permissible targeted surveillance and problematic mass surveillance which potentially amounts to arbitrary or unlawful interference with privacy.
daccess-ods.un.org
Все более широкомасштабное использование спецслужбами методов «добычи данных», что предполагает сопоставление различных баз данных по ряду показателей, размывает границу между разрешенным целевым наблюдением и спорными массовыми проверками, которые могут доходить до произвольного или незаконного вмешательства в личную жизнь.
daccess-ods.un.org
The Board noted that the second official annual report to the Administrator on the activities of the Multi-Donor Trust Fund Office was submitted late, on 7 April 2010; in some instances there was delayed reporting to the donors because of late submission by some participating organizations; and that the accounting recognition of the administrative agent fee did not result in matching of the expenditure of the Office with its revenue.
daccess-ods.un.org
Комиссия отметила, что второй годовой доклад Администратору о деятельности Управления целевых фондов с участием многих доноров был представлен с опозданием 7 апреля 2010 года; в некоторых случаях отчетность донорам представлялась с опозданием из-за несвоевременного представления материалов рядом участвующих организаций; и порядок регистрации в учетных записях сбора административного агента не позволял соотносить расходы и поступления Управления.
daccess-ods.un.org
Forensic human identification of human remains is based on the comparison and matching of information obtained from the deceased (post-mortem data) with equivalent information from the missing person (ante-mortem data).
daccess-ods.un.org
Судебно-медицинское опознание человеческих останков основано на сравнении и установлении соответствия информации о погибшем (данные, полученные после смерти) и информации о пропавшем без вести лице (данные, полученные до смерти).
Elixir: Сопоставление с образцом (Pattern Matching)
Одна из главных особенностей функционального программирования — сопоставление с образцом. Применяется очень широко, так что вряд ли можно найти такую программу на функциональном языке, где нет Pattern Matching (PM).
Сопоставление с образцом используется для:
— присвоения значений переменным;
— извлечения значений из сложных структур данных;
— условных переходов.
Рассмотрим все эти случаи на примерах.
Присвоение значений переменным:
a = 123 IO.puts(a) # => 123
Эта элементарная конструкция, которая выглядит как присваивание значения переменной, на самом деле не является присваиванием. Присваивания в Эликсире нет, а оператор = называется оператор сопоставления (match operator).
В данном коде значение справа — 123 , сопоставляется с шаблоном слева — переменной a . И поскольку шаблон соответствует значению, то сопоставление происходит успешно, и переменная а связывается со значением.
Однако, это тривиальный случай. Чтобы понять PM нужно, рассмотреть более сложные случаи.
Извлечение значений из сложных структур данных
user = = user IO.puts(name) # => Bob IO.puts(age) # => 25
Первая строка опять выглядит как присваивание. Только значение более сложное — кортеж из трех элементов. А вот вторая строка уже интереснее.
Слева от оператора = шаблон, который ограничивает множество значений. Этот шаблон может совпасть только с такими значениями, которые являются кортежами из трех элементов, первым элементом обязательно должен быть атом :user , а второй и третий элемент могут быть любыми.
Справа от оператора = находится значение, которое мы сравниваем с шаблоном. В данном случае значение извлекается из переменной user , но оно может быть и результатом вызова функции или литералом.
Сопоставление проходит успешно, и в результате переменные шаблона name и age получают значения «Bob» и 25 .
В случае, если значение не совпадает с шаблоном, возникает исключение:
= # ** (MatchError) no match of right hand side value: = # ** (MatchError) no match of right hand side value:
Первое значение не совпало, потому что :dog != :user . Второе значение не совпало, потому что в кортеже 4 элемента, а не 3.
И значение, и шаблон могут быть сложными структурами с любой глубиной вложенности:
users = [ >, > ] [, >] = users IO.puts(name) # => Bill IO.puts(lang1) # => Python IO.puts(lang2) # => JavaScript
Здесь у нас список из двух элементов. Каждый элемент является кортежем из 4-х элементов. 4-й элемент кортежа, это вложенный кортеж. И в нем еще один вложенный список. Наш шаблон повторяет всю эту структуру и извлекает значения из 4-го уровня вложенности.
Обратите внимания на символ подчеркивания. Он совпадает с любым значением, и применяется, когда это значение не нужно, мы не хотим сохранять его в переменную.
Если переменная встречается два раза, то значения в этих местах должны быть одинаковыми:
= # match = # match = # ** (MatchError) no match of right hand side value:
Но это не касается символа подчеркивания:
= # match = # match = # match
Теперь формализуем то, что мы узнали. Итак, у нас есть оператор сопоставления = , слева от него шаблон, и справа значение.
[pattern] = [value]
Шаблон может включать:
— литералы
— переменные
— универсальный шаблон (символ подчеркивания)
Значение может включать:
— литералы
— переменные
— выражения
Литералы в шаблоне слева должны совпасть с литералами, переменными, и результатами вычисления значений справа. Все в целом должно совпасть по структуре. Тогда переменные в шаблоне слева получают свои значения из соответствующих позиций справа. Универсальный шаблон совпадает с чем угодно.
Сопоставление с образцом также используется для ветвлений в коде (условных переходов):
— конструкция case
— клозы функций (clause)
— обработка исключений (rescue, catch)
— чтение сообщений из mailbox процесса (receive)
Конструкции case и function clause рассмотрим в следующей теме. Обработка исключений и чтение сообщений будут позже в курсе.
Задание
Реализуйте функцию get_age(user) , которая принимает объект user , представленный в виде кортежа , и возвращает возраст (age).
Реализуйте функцию get_names(users) , которая принимает список из трёх объектов user , представленных такими же кортежами, и возвращает список из трёх имен.
bob = helen = kate = Solution.get_age(bob) # => 42 Solution.get_age(helen) # => 20 Solution.get_age(kate) # => 22 Solution.get_names([bob, helen, kate]) # => ["Bob", "Helen", "Kate"]
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.