Мультиклассовая классификация текста в R

Я построил случайный лес для мультиклассовой классификации текста. Модель вернула точность 75%. Всего имеется 6 этикеток, однако из 6 классов классифицированы только 3, а остальные не классифицируются. Я был бы очень признателен, если бы кто-нибудь мог сообщить мне, что пошло не так.

Ниже приведены шаги, которые я выполнил.

ПОДГОТОВКА ДАННЫХ

  • Создайте вектор слов для описания.

  • Постройте корпус, используя вектор слов.

  • Задачи предварительной обработки, такие как удаление чисел, пробелов,
    стоп-слов и преобразование в нижний регистр.

  • Создайте матрицу терминов документа (dtm).
  • Удалите редкие слова из приведенного выше dtm.

  • Вышеупомянутый шаг приводит к матрице частоты счета, показывающей частоту каждого слова в соответствующем столбце.

  • Преобразуйте матрицу частот подсчета в двоичную матрицу экземпляров, которая показывает вхождения слова в документе как 0 или 1, 1 для присутствия и 0 для отсутствия.

  • Добавьте столбец метки из исходного набора данных с преобразованным dtm. Столбец меток имеет 6 меток.

ПОСТРОЕНИЕ МОДЕЛИ

  • Произвольно выберите dtm и разделите его на обучающий набор и набор для тестирования.
  • Постройте базовую модель случайного леса с 7-кратной перекрестной проверкой.
  • Проверить точность модели на обучающем наборе и на тестовом наборе.

    Делюсь ссылкой на результаты (если здесь разрешено).

    http://rpubs.com/shanmukha_karthik/346007


person Karthik Shanmukha    schedule 03.01.2018    source источник
comment
1. Не могли бы вы показать нам частотную таблицу распределения меток на обучающем наборе? Поскольку остальные 3 метки имеют меньшую пропорцию (отсюда несбалансированные данные), ваш обучающий набор может действительно иметь несколько (или ни одного) из этих меток. 2. Я не использовал rpart для целей мультикласса, но вы не указали глубину деревьев, поэтому модель может быть недостаточно разделена для всех 6 меток. 3. Не могли бы вы показать нам сводку модели, чтобы проверить глубину (или среднее значение) деревьев?   -  person Sixiang.Hu    schedule 03.01.2018
comment
@ Sixiang.Hu Я добавил частотную таблицу распределения меток в обучающий набор. проверьте эту ссылку   -  person Karthik Shanmukha    schedule 04.01.2018
comment
TBH, возможно, вы захотите попробовать использовать что-то отличное от случайного леса - ваш dtm будет разреженной матрицей, поскольку в любом документе большинство слов в корпусе не встречается. Обычно SVM или MNB работают лучше aclweb.org/anthology/P12-2018   -  person TMrtSmith    schedule 23.02.2018


Ответы (1)


Существует множество возможностей повысить точность: 1. Попробуйте увеличить размер классов, имеющих менее 1000 экземпляров. 2. Попробуйте использовать несколько пороговых значений для удаления разреженных терминов, например; 0,991,0,99,0,999 и т. Д. И соответствующим образом проверьте точность 3. Используйте выделение корней, оно используется для получения корневой формы слов 4. Вы используете только Term frequency (TF) при создании файла dtm. Попробуйте также использовать показатель tfidf, просто добавив.

tdm <- DocumentTermMatrix(corpus,
       control = list(weighting = function(x) weightTfIdf(x, normalize = FALSE),stopwords = TRUE))

5. Попробуйте использовать другой пакет, например; от mlr используйте рейнджеров для обучения RandomForest.

Надеюсь, у вас это сработает.

person Ahsan Nawaz    schedule 20.04.2018