plakhov: (Default)
[personal profile] plakhov
А не хочет ли кто-нибудь обсудить одну штуку из области 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.

Date: 2011-02-13 11:39 am (UTC)
From: (Anonymous)
почему неотрицательную? ) главное чтобы не нулевую.
можно калибровать бинарный классификатор в вероятности в духе вот этого
http://www.cs.cornell.edu/~caruana/niculescu.scldbst.crc.rev4.pdf
http://en.wikipedia.org/wiki/Calibration_(statistics)

Date: 2011-02-13 12:00 pm (UTC)
From: [identity profile] chainiksu.livejournal.com
В определенных кругах это называется "апостериорная оценка" и "нормированные алгоритмы классификации". Возможно стоит погуглить в эту сторону.

Date: 2011-02-13 12:03 pm (UTC)
From: [identity profile] n0mad-0.livejournal.com
Я тут наверное очевидные вещи скажу =)

Понятно, почему примеры лезут из серой зоны: примеры, далекие от плоскости и суппортвекторов не влияют на положение самой плоскости; поэтому и интересны только близкие к плоскости (=серые).

Из этих соображений сколько нибудь избежать примеров из серой зоны не получится (думается мне).

А значит вопрос стоит в том, как поженить acitve learning и soft classification. Формулировка с вероятностями похоже на логистическую регрессию... Гугление нашло диссертацию какого-то перца на active learning for logistic regression , а вроде бы софт-классификация появляется из коробки с логрегрессией.

Впрочем, я далек от всего этого, могу и ошибаться =)

Date: 2011-02-13 05:54 pm (UTC)
From: [identity profile] petsen.livejournal.com
Слушай, а вот у нас в более-менее бинарной задаче есть, тем не менее, коассификатр по принципу "а с такой-то вероятностью, не-а с такой-то, серое с такой-то". Это то, что Женя С. делал. Почему там так можно, а в твоем случае некорректно?

Date: 2011-02-13 06:05 pm (UTC)
From: (Anonymous)
Это как раз абсолютно корректно, я просто не знаю, как при такой постановке должна выглядеть процедура выбора примеров для оценки. "Некорректно" я написал про интерпретацию её как задачи классификации на три класса, а не на два.

Date: 2011-02-13 06:47 pm (UTC)
From: [identity profile] petsen.livejournal.com
Я могу рассказать и может даже найти документальные следы, как и что мы с Женей делали, если интересно.

Date: 2011-02-13 06:20 pm (UTC)
From: (Anonymous)
те что ближе к 50% тех и дооценивать, вроде как ничего лучше сделать нельзя. Если реально есть большой класс "фичи не подходят" ты можешь тренировать 2 классифактора плюс-минус и берётся-неберётся. В обоих дооценивать тех кто ближе к 50%. Почему SVM btw, он же сосёт?

Date: 2011-02-13 07:09 pm (UTC)
From: [identity profile] kashnikov.livejournal.com
Чем похоже на опыт из On Multiclass Classification via a Single Binary Classifier, Ran El-Yaniv, Tomer Kotek, Dmitry Pechyony, Elad Yom-Tov. Возможно она Вам чем-нибудь поможет? :)

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

А вот это похоже на опыт Investigating the Effects of Selective Sampling on the Annotation Task, Ben Hachey, Beatrice Alex and Markus Becker. У Вас, конечно, несколько другой случай, но эта статья в любом случае заслуживает внимания :)

Я прошу заранее извинить, если ошибься, надеюсь, что не отнял много времени ;-)

Date: 2011-02-14 09:03 am (UTC)
From: [identity profile] bekabaka.livejournal.com
По-моему это как раз тот случай, где надо использовать type-2 fuzzy logic. Я по крайней мере так делал в похожей ситуации. Это нечёткая логика с двумя функциями принадлежности, в которой одна может выступать собственно мерой принадлежности, а вторая мерой надёжности.
Есть книжка Type-2 Fuzzy Logic: Theory and Applications, есть спецвыпуск Computational Intelligence Magazine об этом фокусе. Могу поделиться.

Date: 2011-02-15 03:18 pm (UTC)
From: [identity profile] uxus.livejournal.com
Судя по описанiю, задача не въ полученiи "естественной" классификацiи, а въ подгонѣ подъ какую-то прагматику (если "A", то дальше поступаемъ такъ, если "не-A", то эдакъ). Это похоже на правду?

Если похоже, то -


[...] ответ вида "плюс с вероятностью 66%, минус с вероятностью 33%, серая зона с вероятностью 1%" абсолютно некорректен и не очень понятно, как его интерпретировать

- не всё ли равно? Дальше надо подбирать (напр.) пороги, глядя на цѣлевую метрику качества (или что тамъ). Пусть хоть "A съ вѣроятностью 0,88, не-A съ вѣроятностью 0,79" - пусть слѣдующiй шагъ ML разбирается, что съ этимъ дѣлать.

Я совсѣмъ не о томъ?



Profile

plakhov: (Default)
plakhov

2017

S M T W T F S

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 06:53 pm
Powered by Dreamwidth Studios