plakhov: (Default)
А не хочет ли кто-нибудь обсудить одну штуку из области machine learning?

Неформально, задача такая: нужно построить почти бинарный классификатор (в каком смысле "почти" - см.ниже). Для этого есть некоторое (очень небольшое) количество фичей, каждая из которых имеет неотрицательную корреляцию с результатом. Процесс получения оценок допускает active learning, но при этом хочется уметь обойтись небольшим количеством оценок.

Навскидку кажется, что делать это нужно примерно как в этой, например, статье: Support Vector Machine Active Learning with Applications to Text Classication - использовать SVM, а для active learning на каждом шаге выбирать те примеры, которые после их классификации как можно сильнее сузят пространство допустимых гиперплоскостей в parameter space.

Проблема в том, что мне ужасно не нравится, как это работает на практике. Практически все предлагаемые к оценке примеры, начиная уже где-нибудь с первого десятка, как на подбор оказываются из "серой зоны", то есть либо такими, которые и человек не способен уверенно классифицировать, либо, что еще хуже, такими, которые данными фичами явно "не берутся".

Я обошел это, включив "серую зону" непосредственно в условия задачи - т.е. классификатор должен уметь отличать "точно да", "точно нет", и всё остальное. Это, в общем, работает, и уже гораздо лучше, но, к сожалению, этим решением я резко ограничиваю себе доступ к сокровищнице мировой мысли, поскольку постановка существенно более экзотическая (это, например, не совсем мультиклассификация, поскольку ответ вида "плюс с вероятностью 66%, минус с вероятностью 33%, серая зона с вероятностью 1%" абсолютно некорректен и не очень понятно, как его интерпретировать). Ну и начинаются какие-то хаки, problem-specific твики и т.п.

Нет ли способа лучше? Что известно, например, про active learning для постановки с "мягким бинарным классификатором" (когда ответ разрешается давать в форме "да с вероятностью 78%", а не просто "да")?

Upd. Спасибо всем за комментарии. В общем, я решил не изобретать велосипед, а использовать честный gradient boosting для логистической регрессии. Примеры для активного обучения при этом выбираю не такие, на которых вероятность близка к 50%, а такие, на которых она близка к, условно говоря, 40% или к 60%, в зависимости от того, каких оценок (подожительных или отрицательных) классификатору не хватает. Плюс к этому у человека есть возможность сказать "не хочу оценивать этот пример", если его невозможно уверенно классифицировать. В сумме метод отлично работает, гораздо лучше всяких наколеночных, и лучше, чем SVM.

Profile

plakhov: (Default)
plakhov

August 2017

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2017 02:40 am
Powered by Dreamwidth Studios