2013-03-06 6 views
1

Я выполнил выбор функции χ² в моих учебных документах, уже преобразованных в векторы объектов TF * IDF, используя sklearn.feature_extraction.text.TfidfVectorizer, который по умолчанию производит нормализованные векторы. Однако после выбора наиболее информативных признаков top-k векторы больше не нормализуются из-за удаления размеров (все векторы теперь имеют длину < 1).Повторная нормализация векторов признаков после выбора функции

Желательно ли нормализовать векторы признаков после выбора функции? Я также не очень понимаю основную разницу B/T нормализации и масштабирования. Имеют ли они подобные серверы для таких учащихся, как SVC?

Заранее благодарим за ваш ответ!

ответ

2

Это на самом деле много вопросов в одном. Основная причина для нормализации на векторах tf-idf заключается в том, что их точечные продукты (используемые SVM в их решающей функции) легко интерпретируются как cosine similarities, являющиеся основой сравнения векторных документов при поиске информации. Нормализация гарантирует, что

"hello world"    -> [1 2] 
"hello hello world world" -> [2 4] 

стать тем же вектором, так конкатенация документа на себя не меняет границ решения и сходство между этими двумя документами точно один (хотя и с масштабированием сублинейного, sublinear_tf в конструкторе векторизатора , это уже не так).

Основные причины для масштабирования - avoid numerical instability issues. Нормализация берет на себя большинство из них, потому что функции уже находятся в диапазоне [0, 1]. (Я думаю, что это также связано с регуляризацией, но я не часто использую SVM).

Как вы заметили, chi² «денормализует» векторы объектов, поэтому, чтобы ответить на исходный вопрос: вы можете попробовать перенормировать их. Я сделал это, добавив выбор функции chi² в пример классификации документов scikit-learn, и это помогло некоторым оценщикам и пострадало от других. Вы также можете попробовать сделать chi² на ненормализованных векторах tf-idf (в этом случае я рекомендую вам попробовать установить sublinear_tf) и после этого сделать либо масштабирование, либо нормализацию.

+0

спасибо @larsmans за отличный ответ. Я буду экспериментировать с вашими предложениями. –

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

  • Нет связанных вопросов^_^