Решаю типичную задачу из учебника - классификация объектов. В моем случае товары. Выбрал простейший алгоритм 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гиг памяти?