Big Data не только для big компаний, или Как краудсорсинг помог найти волшебную таблетку

О том, как стартап смог собрать армию агентов-асессоров, численности которой позавидовали бы интернет-гиганты или даже сам Александр Македонский, рассказывает сооснователь компании Pharmznanie Мария Рябуха.

В закладки

Это история о кейсе на 1,5 миллиона строк, 15 миллионов рублей и одном мозговом штурме, который помог эти деньги сэкономить

Мария Рябуха, сооснователь компании Pharmznanie

Внимание, задача

Каждый месяц наша IT-платформа «ФармМаркет» загружает несколько десятков миллионов строчек с данными от аптек. У нас ровно неделя, чтобы превратить этот убийственный объем в отчёты о продажах конкретных препаратов. 75% данных разбирается автоматически специальным алгоритмом. Но часть данных машине не по зубам. И около 1,5 миллионов строк остаётся наразобранными.

Сейчас объясню, почему так происходит на простом примере. Компания «Польфарма» производит ацетилсалициловую кислоту «Алька-Прим таблетки шипучие 330 мг, 10 штук». Казалось бы, ну что мешает аптеке так и занести этот товар себе в систему учета? Но что-то мешает. В отчётах мы получаем реальные примеры строк:

И об это многообразие вариантов «аль-пр» и «тш» наш машинный алгоритм ломает себе зубы, кости и мозг.

«Почему нет единого реестра препаратов?» – спросите вы. Это особенности рынка. Такой реестр есть у крупных аптечных сетей. А вот аптеки-«малыши», с которыми работаем мы, пользуются разными системами учета. И в этих системах реестров либо вообще нет, либо они неполные.

Итого, 1,5 миллиона строк с разнородными данными. Машина, которая умирает в попытках определить, что такое «тш» и «пф». И мы, у которых всего 7 дней на разбор всех строчек. А как бы вы решили эту задачу?

1 500 000 черных дыр

Нас было 13, мы сидели на совещании, когда наш IT-отдел сообщил, что на разбор разнородных строк понадобится либо ещё миллион лет, либо 15 миллионов рублей. «Мы-то думали, что занимаемся маркетингом, а на самом деле — настоящей «бигдатой», — воскликнули мы и схватились за голову. «Машинное обучение нам поможет», — успокоил IT-отдел.

Как люди обучают машины

Чем совершеннее становится искусственный интеллект, тем больше он нуждается в интеллекте человеческом. Машинное обучение, о котором так много говорят, основано на примерах, подаваемых людьми. Например, чтобы Facebook научился находить на фото ваших друзей, вы должны несколько раз отметить их вручную. Чтобы «умная машина» смогла распознавать речь — переводить запросы в духе «Ок, гугл», нужно чтобы тысячи агентов вручную подтвердили версии, которые выдает компьютер. Именно человек оценивает релевантность найденных документов поисковым запросам Google, распределяет изображения по категориям, отмечает контент для взрослых, чтобы впоследствии нейронная сеть занималась всем этим сама.

С нашими «Алька-Пр 10 тш» та же самая история. Необходимо было провести адскую работу: сопоставить, найти соответствия — кликнуть, сопоставить, найти соответствия. И так с каждой из 1 500 000 строк.

Варианты решения

Аутсорсинг: долго и дорого

15 миллионов – именно столько запросил один профильный ресурс, который специализируется на разборе данных и составлении справочников. Кроме миллионов рублей, они запросили также 1,5 года на автоматизацию процесса. Сумма — огромная, сроки — нереально долгие. Мы же стартап, нам все нужно быстро и масштабируемо — клиенты не будут ждать отчеты годами. Не подходит.

Своими силами: не тот масштаб

Второй вариант, который мы рассмотрели, — создать собственную службу асессоров, то есть сотрудников с профильным фармацевтическим образованием, которые будут заниматься исключительно уничтожением «черных дыр». Допустим, у нас 10 таких специалистов, каждый в день обрабатывает по 1000 строк. Значит, со всем объемом мы справимся за 150 дней и потратим примерно 3,5 млн рублей. Уже легче и проще.

Какие минусы у этого решения? Во-первых, бюджет будет расти, поскольку потребуется обязательная в таких случаях проверка и выявление ошибок. Во-вторых, полгода займет разбор уже поступивших данных, но ведь к нам постоянно приходят новые. Снова мимо.

Краудсорсинг: задание выполнено

И тут кто-то произнес: а что если предложить разбирать строчки самим пользователям нашего проекта, который специализируется на обучении фармацевтов? И делать это за баллы?

Тут надо пояснить. Дело в том, что у нашего проекта есть огромная «армия» специалистов с фармацевтическим образованием. Ежемесячно 60 000 фармацевтов и провизоров посещают вебинары на нашей сайте Pharmznanie.ru. У самого Александра Македонского, когда он отправился в поход против Персии, было и того меньше — каких-то 50 тысяч. Причем мы точно знаем, что это армия подготовленных бойцов — профессиональных фармацевтов: они и только они смогут опознать все эти «тш» и «№10».

И вот им-то мы и предложили стать «агентами “Фармзнания”» и помочь нам разобрать ворох данных. Небесплатно, конечно: за «накликанные» строки асессоры могут получить деньги, а могут — бонусные баллы-«знания» и обменять их на сайте pharmznanie.ru на посещение учебного мероприятия или приятный сувенир. По опыту скажу, баллы пользуются огромным успехом: пользователи с большим азартом включаются в игру — зарабатывают и тратят бонусы.

Итак, в июле мы приступили к разработке идеи: создали интерфейс для разбора данных, разослали письма 4000 пользователей с просьбой помочь нам стать лучше… И моментально получили восторженные ответы от 10% потенциальных «агентов»: «Да, хотим! Говорите, что нужно делать!»

В начале августа запустили систему в тестовом режиме, чтобы определить, сколько в среднем строк может разобрать один человек. Оказалось, что 700-800 строк в день – это среднее количество для агента, который работает на постоянной основе за оплату. У агента-волонтера, «играющего» в разбор строк за баллы, скорость ниже, около 100 строк в день. Плюс выше вероятность ошибок. Данные приходится верифицировать за счет двойного сопоставления. Зато получаем мы их бесплатно. Экономия времени и бюджета феноменальная!

«Армия «Фармзнания»» раскусила 1,5 млн строк за месяц — к середине сентября. Все сопоставления были сохранены в нашу базу данных для дальнейшего машинного обучения. В акции приняло участие 60 «агентов» за деньги и около 450 — за баллы.

Всего на проект мы потратили около 840 тыс. рублей — сравните это с 15 млн!


Еще один важный момент: эту механику можно использовать постоянно. Появляется в нашем активе новая аптека, приходят новые данные, мы тут же даем задание нашим агентам — они их разбирают за пару дней. Вот вам и столь важная для стартапа скорость и масштабируемость.

Что мы будем делать дальше с этими строчками?

Мы продолжаем обучать свой алгоритм, привлекая агентов платно и бесплатно. Уже сегодня это позволило нам разбирать данные в 2,5 раза быстрее. Но то ли ещё будет. В следующем году мы ожидаем 10-кратный рост объема данных.

Количество желающих воспользоваться «ФармМаркетом» постоянно растет: в месяц каждый менеджер проекта подключает по 180-200 точек аптечных продаж. К концу года мы хотим довести их число до 3000-4000, а дальше в планах подключение 10 000 аптек.

Аптеки-«одиночки» часто пребывают в режиме ручного управления. Заведующая, она же продавец, она же специалист по закупкам интуитивно, на глаз определяет, какие лекарственные средства и в каких размерах заказывать. Иногда ей помогает программа автоматического заказа, но в ней нет доступа к большим массивам данных с рынка, а это легко приводит к ошибкам в категорийном менеджменте.

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

При этом компания «Фармзнание» не является дистрибьютором, который зарабатывает на поставках лекарств. Мы всего лишь «гики-айтишники», которые хотели разобрать 1,5 млн строк данных и найти волшебную таблетку.

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

Ваша Маша Рябуха

#кейсы #краудсорсинг #фарма

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Ирина Дроздова-Куривчак", "author_type": "self", "tags": ["\u0444\u0430\u0440\u043c\u0430","\u043a\u0440\u0430\u0443\u0434\u0441\u043e\u0440\u0441\u0438\u043d\u0433","\u043a\u0435\u0439\u0441\u044b"], "comments": 6, "likes": 23, "favorites": 42, "is_advertisement": false, "subsite_label": "flood", "id": 46780, "is_wide": false, "is_ugc": true, "date": "Mon, 01 Oct 2018 09:48:54 +0300" }
{ "id": 46780, "author_id": 111851, "diff_limit": 1000, "urls": {"diff":"\/comments\/46780\/get","add":"\/comments\/46780\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/46780"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "possessions": [] }

6 комментариев 6 комм.

Популярные

По порядку

Написать комментарий...
5

Очень крутая идея для бизнеса - продавать пользователям их же данные и отличное решение задачи в статье!

Ответить
5

Спасибо, Анатолий!

Ответить
4

Очень интересная статья, спасибо!

Ответить
2

Интересная статья и нестандартный подход к решению проблемы. Скажите пожалуйста Вы не рассматривали вариант, при котором аптеки-"одиночки" (да и вообще все аптеки) будут пользоваться единым реестром препаратов, который разработает ваша компания на основании данных от производителей? В этом варианте отпадет необходимость ручного анализа товарных позиций.

Ответить
1

Тимур, это один из возможных вариантов решения задачи, который мы, конечно же, рассматривали. Однако на данный момент по разным причинам аптекам с которыми мы работаем, удобнее пользоваться различными реестрами либо обходиться вообще без них. И мы как раз предоставляем им возможность работать на таких условиях.

Ответить
0

А регулярные выражения уже не такие модные, да?

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления
{ "page_type": "default" }