Я задал эти вопросы в списке рассылки R, но я думаю, что здесь лучше найти ответы и советы.Работа с различиями в пространственных объектах относительно классификации текста с использованием SVM
В настоящее время я работаю над текстовой классификацией эссе студента, стараясь идентифицировать тексты, соответствующие определенному классу. Я использую тексты от одного семестра (A) для обучения и текстов из другого семестра (B) для тестирования . Мой рабочий выглядит так:
- прочитать все тексты из A, построить DTM (A) с около 1387 терминов (пакет тм)
- читать все тексты из B, построить DTM (B) с примерно 626 термины
- поезд классификатор с DTM (A), с помощью SVM (пакет e1071)
Теперь я хочу, чтобы классифицировать все тексты в DTM (B) с помощью classifyer. Но , когда я пытаюсь использовать pred(), я всегда получаю сообщение об ошибке: Ошибка в eval (expr, envir, enc): объект «XY» не найден. Как я выяснил, причиной этого является то, что DTM (A) и DTM (B) имеют другое число , и поэтому не каждый термин, используемый для обучения модели, - , доступный в DTM (B).
Уверен, что это сложно сделать с помощью двух разных пространств объектов, но я хочу найти решение для этой «реальной проблемы». Идея состоит в том, чтобы идентифицировать текст или текст, который был добавлен студентом, соответствует другим текстам или нет. Поэтому моя наивная идея состоит в том, чтобы разработать модель прогнозирования с текстами из одного семестра [DTM (A)], а затем использовать эту модель для оценки нового текста из другого семестра [DTM (B)]. Поскольку новый текст отсутствует в исходном DTM, отличительные черты отличаются. До сих пор я только нашел код, который использует DTM, созданный из всех текстов, но для этого потребуется создать новый DTM (A) `и переустанавливать SVM каждый раз.
Мой вопрос: как я должен это иметь? Должен ли я соответствовать условиям , используемым в DTM (A) и DTM (B), чтобы получить идентичное пространство для объектов? Это может быть достигнуто либо сокращением числа терминов в DTM (A), либо , добавив несколько пустых/NA столбцов в DTM (B). Или есть другое решение к моей проблеме?
Сердечные приветы
Бьорн
Я думаю, http://stackoverflow.com/questions/39721737/how-to-handle-errors-in-predict-function-of-r может вам помочь. – abhiieor
Спасибо, но связанная с публикацией публикация не касается разных пространств объектов, что означает разные столбцы в DTM, но о разных уровнях категориальных переменных. – PsyR
Вы можете обобщить. Никакой метод машинного обучения не может справиться с новыми предикторами; которые вы получаете, когда создаете фиктивные переменные для категориальной переменной с новыми уровнями. По существу, как сказано в моем ответе, вам нужно сохранить список переменных, которые являются частью обучения и, следовательно, модели. Отфильтруйте данные теста/предсказания на основе этого списка, а затем продолжите с оценкой на обученном объекте. – abhiieor