Обсуждение:Практикум на ЭВМ (317)/2011-2012
Материал из MachineLearning.
Содержание |
Реальная задача «Topical Classification of Biomedical Research Papers»
Постановка, данные
Подробное описание задачи: [1].
Объект (журнальная статья) описывается 25640 признаками --- целые числа 0...1000. Каждый признак означает насколько сильно журнальная статья связана с медецинским термином. Признаковые описания разреженные: большая часть признаков у одного объекта равны 0, что означает что одна журнальная статья связана лишь с небольшим числом медецинских терминов.
Имеется 83 тематик (topics). По признаковому описанию журнальной статьи нужно сказать, к каким тематикам она относится. Выход классификатора: подмножество чисел 1..83.
Данные:
- тренировочная выборка, 10'000 объектов, для каждого объекта список тематик, к которым он относится
- тестовая выборка, 10'000 объектов
На сайте соревнования выложены текстовые файлы с матрицами объект-признак, после распаковки они весят под 500МБ и очень долго считываются в матлаб. Я сделал MAT-файл data.mat (8МБ), в котором лежат sparse-матрицы (вид представления матриц в матлабе при котором запоминается список ненулевых элементов матрицы):
-
X
,X_t
— объект-признак для тренировочной и тестовой выборок; -
Y
— матрица правильных ответов для тренировочной выборки, размера 10'000x83, в каждой строке стоят единицы на месте столбцов с номерами выбраных тематик.
Матлаб функция, которая записывает результат классификации, представленный в виде матрицы Nx83 (как Y
), в файл готовый для отправки в систему: [2].
Пример: решение, которое каждому объекту ставит в соответствие 5 наиболее часто встречаемых тематик
load('data.mat'); [~, idx] = sort(sum(Y), 'descend'); % после чего в idx номера тематик в порядке убывания их популярности Y_t = sparse(size(X_t, 1), size(Y, 2)); % пустая матрица ответа Y_t(:,idx(1:5)) = 1; % для каждого объекта выбираем 5 наиболее популярных тематик sparse2labels(Y_t, 'majority.csv');
Peter Romov 16:15, 9 февраля 2012 (MSK)
Система оценки
Эксперименты
Независимые классификаторы
Идея: свести задачу предсказания "подмножества" к задаче классификации на 2 класса.
Обучаем набор из 83 классификаторов для независимого решения по каждой тематике, каждый классификатор соответствует одной тематике и отвечает на вопрос "относится/не относится".
На некоторых объектах может получиться так, что ни один классификатор не дал положительного результата, но результат "пустое множество тематик" не допускается по правилам.
- Эту проблему я решил эвристически: такие объекты привязываются к одной тематике, выбирается та тематика, чей классификатор дал наиболее близкое к положительному решающее значение, т.е. чей классификатор наименее уверенно ответил отрицательно на вопрос "относится ли объект к тематике?" Таких объектов в тестовой выборке оказалось 188 (линейные классификаторы). Peter Romov 21:28, 9 февраля 2012 (MSK)
Утверждение: признаков в 2.5 раз больше числа объектов ⇒ по отношению к одной тематике, обучающая выборка линейно разделима, очень уверенно разделима. Peter Romov 21:28, 9 февраля 2012 (MSK)
Классификатор | Результат | Примечание |
---|---|---|
Линейные L2-reg L2-loss L1-reg L2-loss L2-reg L1-loss liblinear | 0.393 | Различные постановки задачи обучения дали одинаковые ответы (с точностью до выбора тематик), подбор коэффициента регуляризации бессмысленен (уверенная линейная разделимость). Что можно сделать: регулировать пороги решающих правил. |
Предположение: другие классификаторы / методы, принимающие решения независимо, будут давать схожий результат; предположение независимости принадлежности статьи к разным тематикам очень наивно и нужно двигаться в сторону учета зависимостей между тематиками. Peter Romov 21:28, 9 февраля 2012 (MSK)