Известно, что в любой компании сотрудники пытаются извлечь больше выгоды чем, скажем так, положено. И мы бы хотели реализовать поиск такой нестандартной деятельности. Задача усложняется тем, что мы не знаем, какая деятельность вредная. Но знаем, что у большинства пользователей она нормальная.
И сейчас мы хотим найти соответствующего специалиста для открытого проекта по решению такой задачи. Все этапы и результаты мы хотим публиковать здесь на хабре. Участие в проекте поощряется материально. Собственно, первый этап — сформулировать задачу сколько-нибудь корректно и структурировано. Если вы чувствуете в себе силы и интерес к такой деятельности то пишите в каментах или в форму обратной связи на сайте, я свяжусь напрямую.
UPD.
Попробую все-таки чуть конкретизировать задачу. А то возникает ощущение, что недостаточно подробно донес суть.
Итак, есть IEM-система. Это следующее поколение развития систем автоматизации предприятия. И для текущей задачи можно считать, что это просто свежая ERP система, в которой все данные о предприятии согласованы, достоверны, лежат в единой базе в структурированном виде и т.д. и т.п.
Соответственно, есть куча информации о действиях пользователей системы, контрагентов их параметрах (типа оборачиваемости, движения денег, рентабельности вплоть до конкретной единицы SCU). Параметров таких можно набрать сотни и тысячи.
Необходимо решить задачу выделения значимых параметров, построения гипотез, расчета и поиска соответствующих моделей. Как пример можно приводить менеджеров по продажам. Их 1000 человек, и все делают примерно одинаковые операции. Но кто-то (возможно) делает что-то не так как остальные.
Можно, конечно, пытаться искать например тех, у кого больше возвратов в гарантию, или маленькая рентабельность. Можно опускаться до уровня отдельных операций — продаж, закупок перемещений и рассматривать параметры этих отдельных операций.
Но хочется попробовать сделать схему, при которой будет сформулирован алгоритм который позволит выявить значимые параметры (или определить, что таких нет), и далее найти метод нахождения «подозреваемых» которые чем-то отличаются.
Какие методы тут использовать — вопрос к специалистам по ML, матстатистике и прочим нейросеткам.
И собственно за это мы готовы платить.
Комментарии (20)
yusman
27.01.2017 15:45Похоже вы путаете «статистику» и «расследование фактов».
Идентификация базируется уже на каких то исследованных фактах, например, вы уже нашли мошенников и зафиксировали их. И далее:
1. скормили машине,
2. обучили ее,
3. она нашла кореляции фактов мошенничества с какими то другими показателями.
4. Применяете полученную модель для дальнейших поисков мошенничества.
Можно попробовать провести классификацию по общим признакам, но все равно, нужно расследовать, копать ручками по локоть.
Боюсь, что ваша задача не решается через чистый ML в текущей ее постановке.
labboss
27.01.2017 16:28Необходимо понять что такое «деятельность» для бухгалтеров это одно, для разработчиков другое. нужно попытаться описать это свойствами\атрибутам\фичами. кластеризовать найти аномалии…
Rupper
27.01.2017 16:29Конечно, у разных ролей деятельность разная. Но у пользователей одной роли — одинаковая (в каком-то смысле).
Rupper
27.01.2017 19:11Попробую все-таки чуть конкретизировать задачу. А то возникает ощущение, что недостаточно подробно донес суть.
Итак, есть IEM-система. Это следующее поколение развития систем автоматизации предприятия. И для текущей задачи можно считать, что это просто свежая ERP система, в которой все данные о предприятии согласованы, достоверны, лежат в единой базе в структурированном виде и т.д. и т.п.
Соответственно, есть куча информации о действиях пользователей системы, контрагентов их параметрах (типа оборачиваемости, движения денег, рентабельности вплоть до конкретной единицы SCU). Параметров таких можно набрать сотни и тысячи.
Необходимо решить задачу выделения значимых параметров, построения гипотез, расчета и поиска соответствующих моделей. Как пример можно приводить менеджеров по продажам. Их 1000 человек, и все делают примерно одинаковые операции. Но кто-то (возможно) делает что-то не так как остальные.
Можно, конечно, пытаться искать например тех, у кого больше возвратов в гарантию, или маленькая рентабельность. Можно опускаться до уровня отдельных операций — продаж, закупок перемещений и рассматривать параметры этих отдельных операций.
Но хочется попробовать сделать схему, при которой будет сформулирован алгоритм который позволит выявить значимые параметры (или определить, что таких нет), и далее найти метод нахождения «подозреваемых» которые чем-то отличаются.
Какие методы тут использовать — вопрос к специалистам по ML, матстатистике и прочим нейросеткам.
И собственно за это мы готовы платить.
andreyverbin
28.01.2017 11:58Но хочется попробовать сделать схему, при которой будет сформулирован алгоритм который позволит выявить значимые параметры (или определить, что таких нет), и далее найти метод нахождения «подозреваемых» которые чем-то отличаются.
Все сильно зависит от того какие у вас данные. Мне, почему-то, в голову сразу приходит PCA. Может сработать если деятельность пользователей можно представить в виде числовых характеристик. Если повезет и пользователи хорошо приближаются линейной моделью, то отклонение от среднего и будет мерой необычности. Если нет, то можно пробовать модель усложнять, добавлять нелинейности и тд.
Какие методы тут использовать — вопрос к специалистам по ML, матстатистике и прочим нейросеткам.
Думаю вам надо пробовать разные методы и смотреть, что работает лучше. Все от данных зависит в конце концов, может даже выяснится, что на данных от разных организаций работают разные методы. Если бы меня попросили что-то подобное исследовать, я бы начал с PCA, затем деревья решений, затем нейронки.
labboss
28.01.2017 12:15значит получается что деятельность менеджера мы можем описать заказами и отказами и наверно чем-то ещё. все это рассчитываем. получается какое-то nмерное пространство
Rupper
29.01.2017 09:14Ок, и что делаем дальше? Какая метрка этого пространства?
andreyverbin
30.01.2017 00:06В этом и состоит задача — отыскать такую метрику, которая бы хорошо разделяла «правильных» и «неправильных» менеджеров. Кстати, может оказаться, что одной метрики мало и в разных частях пространства лучше работают разные метрики (это будет значит, что имеем дело с многообразием менеджеров)
andreyverbin
30.01.2017 00:02В принципе так и есть. PCA, например, часто используется чтобы выяснить какие параметры важные, а какие нет. В этом, как правило, основная загвоздка, потому что если заранее знать, что «менеджера можно описать заказами и отказами», то задача можно сказать уже решена.
Положим наш менеджер это n-мерный вектор, а мы хотим рассчитать какую-то характеристику, например «F(менеджер) = {плохой, хороший}». Еще предположим, что в данном векторе есть вся необходимая информация для рассвета нашей характеристики. Эта характеристика, в некоторой окрестности, приближается линейной комбинацией координат вектора-менеджера. Далее разбиваем все пространство на участки где лучше работает те или иные коэффициенты и вуаля.
Возможные проблемы
— что-то важное не попало в вектор менеджера (так скорее всего и будет если выбирать важные характеристики «на глазок»)
— может случится, что линейная комбинация приближает менеджера хорошо только на очень небольшом участкеRupper
30.01.2017 11:32Андрей, а Вы можете это сформулировать в виде строгих алгоритмов, а не идей?
andreyverbin
30.01.2017 14:27Все компоненты (PCA, деревья, нейронки и прочеее) уже есть готовые, например в numpy/scipy. Самого алгоритма, в смысле последовательности шагов и конкретных настроек, пока конечно нет, только общие идеи. Алгоритм может появиться только после работы с реальными данными. Не глядя на них можно бесконечно теоретизировать, что то, или иное решение будет работать или нет.
Вопросы о данных
— А они есть в наличии?
— Данные размечены? Например данные о продавце и флажок «хороший/плохой».
— Насколько данные зашумлены? Пропуски значений, ошибки ввода, bias оценок от разных людей (как в фильмах, кто-то всегда ставит хорошо, а у кого-то 3 звезды == 5 звезд)
djVano
31.01.2017 00:31Обратите внимание на существующие API это будет дешевле для MVP проекта и/или валидации решения. Вот например https://www.ibm.com/watson/developercloud/ Watson from IBM.
По поводу конкретных идей поведения можно решить напмример такие задачи:
1) По логам составить текст описывающий поведение рассматривамой сущности. Скормить его https://alchemy-language-demo.mybluemix.net/ и получить результат.
Например написать запросы которые дают оценку пользователя.
— He was one of the slowest person who created the order
select a, b from ( select a,b, rank() over (order by b) r from top_n_test ) where r<10
— The one who made one of the biggest order today
— He put relatively big comments for the order
— He was never late/early at work
— He took too many breaks over the period
2) Относительно персонала
Использовать Personality Insights предварительно переведя с русского.
https://www.ibm.com/watson/developercloud/personality-insights.html
Вложить еще логи чата работников, е-мейлов :)
BTW Есть возможность, что нить по 4-й или 5-й колонке что нить оформить, как раньше?)
labboss
30.01.2017 12:13моя идея как раз была в том чтобы кластеризовав найти тех кто отделяется от общей массы. ну т.е. если 99.999%% у которых 10 заказов и 10 отказов а у 0.0001 отказов больше — вот этих и надо искать. не очень понимаю как уменьшение размерности поможет нам.
Iora
На первый взгляд нужно выделить паттерны поведения среднестатистического пользователя. Так как у большинства деятельность «доверенная», то получится усредненная модель хорошего поведения, а возможные выбросы (то есть явные отклонения от нормы) могут указывать на вредную деятельность. Тут, правда, возможна ситуация, что это ошибается модель, и человек ничего «не-того» не делает. В этом случае можно использовать специально обученного человека на полставки, который будет убеждаться, что подозреваемый действительно творит не то. После этого система дообучается на этом вердикте, и в следующий раз лучше реагирует на такое поведение, которое вызвало реакцию системы. Эдакое мягкое обучение с учителем.
Rupper
Да, примерно так это мы себе и представляем. Но тут вопрос в деталях — какие параметры надо учитывать для определения поведения? Как их найти? Поможет ли нам тут факторный анализ и как его применить? Как считать отклонения, в каком пространстве и по какой метрике? Эти и другие вопросы и надо разобрать.
Но логику Вы поняли правильно.
Iora
Предложу другой вариант: можно анализировать логи, то есть действия пользователя в системе. Выделять действия, которые недобросовестные пользователи совершают чаще других (или которые совершают только они). Например: «нетипично, что человек задерживается на рабочем месте на 20 минут». В целом, таким путем можно много любопытного выяснить о коллективе.
А какие действия указывают на недобросовестность человека? Если они известны, то отсюда стоит начать. Если неизвестны, то анализировать все метрики и характеристики, которые можно получить и искать тех, кто отличается от основной массы.
Rupper
Я же сказал — неизвестно, какие действия недобросовестные.
Есть миллион всяких параметров. Надо каким-то образом определить значимые.