Оценка тегов (контролируемое обучение)

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

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

Мой подход состоит в разделении образцов на два набора, один из которых содержит все образцы, помеченные как «A», и один набор, содержащий все «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} только для того, чтобы решить, является ли сэмпл «А» или «Не А». Затем {W}, ... {V, W}, {V, X}, ... {V, W, X}, ... {V, W, X, Y, Z}. Кажется, это сложность (2 ^ n - 1).

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


person Matthias Ivantsits    schedule 29.01.2017    source источник
comment
Категории можно отсортировать по коэффициенту ошибок O (nlogn) от малого до большого. Затем выберите верхние k-категории на основе совокупного коэффициента ошибок, основанного на совокупном количестве событий Occ A и Occ Not A для категорий top-k, O (n). Кроме того, вы можете рассмотреть возможность предварительного, добавив некоторые константы в #occ A и #occ Not A, чтобы категории с менее определенным коэффициентом ошибок можно было каким-то образом отфильтровать.   -  person Sanghack Lee    schedule 22.07.2017


Ответы (1)


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

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

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 и т. Д.

person David Dale    schedule 09.11.2017