zaartix
@zaartix

Обязательно ли заполнять матрицу с примерами всем словарем возможных слов?

Решаю типичную задачу из учебника - классификация объектов. В моем случае товары. Выбрал простейший алгоритм NaiveBayes.

php-ml.readthedocs.io

Для начала создаю обучающую матрицу для рубрикатора верхнего уровня, т.е. авто, услуги, одежда и т.д. (без вложенных подрубрик).

Алгоритм действий такой:
Все слова преобразовываются в леммы (базовые формы слов), дальше в идентификатор леммы (айдишник).
После этого, как я понял, нужно создавать матрицу, где строкой является товар (в моем случае), а столбцами - "вес" слова в названии товара (TF-IDF значение). Вопрос как раз про эту часть. Из учебника как я понял, нужно, чтоб строка этой матрицы была размером с весь словарь, т.е. выглядеть будет примерно так
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4,0,0,0,0,0,0,0.7,0,0,0,1.2,0,0,0]

Т.е. размерность матрицы будет равна: "весь словарь возможных слов" на "количество товаров", т.е. на тестовой выборке из 10 тыс товаров у меня получился словарь уникальных слов размером 15 тыс. Таким образом матрица получается размерностью 15к на 10к.
Так и должно быть? Если да, тогда я не учень понимаю как можно пополнять обучающую базу, ведь если изменится размерность словаря, то придется составлять всю матрицу заново, т.к. ее размерность в ширину должна будет измениться.

При размерности датасета 15к на 10к это нормально, что для обучения отжирается 20гиг памяти?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
DanilBaibak
@DanilBaibak
Machine Learning engineer
Размер словоря можно ограничить, взяв топ, например, 5 тыс слов (предварительно отсортировав по "весу").

Существует ряд эвристик, которы так же можно применить:
  1. Исключить стоп-слова
  2. Не включать слова, которые встречаются "реже чем..."
  3. Не включать слова, которые встречаются "чаще чем..."


Рекомендую посмотреть на реализацию TfidfVectorizer от scikit-learn.
Ответ написан
@AlexSku
не буду отвечать из-за модератора
Есть такое понятие, как разреженная матрица. Запоминаются только ненулевые элементы (с координатами). Можно использовать обычный словарь (ассоциативный список).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы