2017-01-29 3 views
3

У меня есть несколько тысяч образцов, которые уже обозначены как «A» или «Not A». Каждый образец присваивает категории [0-n].Оценка тегов (контролируемое обучение)

Я пытаюсь найти, какие категории подходят для маркировки нового образца как «A» или «Not A».

Мой подход разбивает образцы на два набора, один из которых содержит все образцы, помеченные как «A», и один набор, содержащий все «Not A».

Теперь я создаю набор из всех разных категорий и подсчитываю, как часто каждая категория возникает в наборе «А» и «Не А».

Затем я вычисляю коэффициент ошибок, основанный на вхождениях в двух наборах (#occurrences в «Not A»/(#occurrences в «A» + #occurrences в «Not A»)) для каждой категории. Затем они сортируются по возрастанию (в соответствии с коэффициентом ошибок).

Теперь задача состоит в том, чтобы выяснить, какая из этих категорий подходит для заполнения образца как «А».

---------------------------------------------------- 
| Category | error ratio | #occ "A" | #occ "Not A" | 
-------------------------------------------------- 
| V  | 0   | 2  | 0   | 
---------------------------------------------------- 
| W  | 0   | 59  | 0   | 
---------------------------------------------------- 
| X  | 0,138  | 125  | 20   | 
---------------------------------------------------- 
| Y  | 0,901  | 9  | 82   | 
---------------------------------------------------- 
| Z  | 1   | 1  | 0   | 
---------------------------------------------------- 

Поэтому прежде всего мне нужно решить, сколько наблюдений необходимо для дальнейшей обработки моих категорий. В приведенной таблице V и Z, вероятно, не очень хорошие категории, потому что слишком мало случаев. Но существует ли статистический подход для определения того, какие категории следует отбрасывать?

После этого мне нужно выбрать, где находится граница моего решения. Я думал о создании всех возможных комбинаций категорий, затем измерял точность и выбирал самый большой набор с более высокой точностью, чем ~ 95%.

На первом этапе я использовал бы только {V}, чтобы выбрать, является ли образец «A» или «Not A». Тогда {W}, ... {V, W}, {V, X}, ... {V, W, X}, ... {V, W, X, Y, Z}. Кажется, что это сложность (2^n - 1).

Поскольку у меня есть несколько тысяч категорий, это невозможно. Есть ли алгоритм оптимизации, который я могу использовать для этой цели?

+0

Вы можете отсортировать категории по коэффициенту ошибки O (nlogn) от малого до большого. Затем выберите верхние k-категории, основанные на суммарном коэффициенте ошибок, основанном на кумулятивных подсчетах ок. «A» и «не A» для категорий top-k, O (n). Кроме того, вы можете рассмотреть «предыдущий», добавив некоторые константы в #occ «A» и #occ «Not A», чтобы как-то отфильтровать категории с меньшим количеством ошибок. –

ответ

0

Вам, вероятно, не нужно изобретать велосипеды.

Вы можете кодировать данные в двоичном образом, как это:

A V W X Y Z 
1 1 1 0 0 1 
0 0 1 1 0 0 
1 0 1 1 1 0 
... 

После этого, вы можете кормить свои данные любого алгоритма классификации, как наивного байесовского, логистическая регрессия, решение дерева классификатора, SVM, и др так далее.

Смежные вопросы