Как использовать классический ML для улучшения распознавания товаров?
Что проверяют
Понимаете ли вы, где классическое ML реально помогает в распознавании товаров, а где его место давно заняли нейросети. Следом обычно спрашивают, как добавить новый товар без переобучения и как мерить качество на тысячах похожих SKU.
Как отвечать
Честная позиция: сырые пиксели в SVM или Random Forest сейчас никто не подаёт. Классика работает в связке с признаками, которые уже кто-то посчитал.
- эмбеддинги плюс простой классификатор: предобученная сеть (ResNet, ViT, CLIP) выдаёт вектор, поверх него логистическая регрессия или линейный SVM. Обучается за минуты и нормально работает на малых данных;
- kNN по эмбеддингам: новый товар добавляется в индекс (FAISS, HNSW) несколькими эталонными фото, без переобучения. Для ассортимента, который меняется каждую неделю, это главный аргумент;
- текст и метаданные: название с этикетки после OCR идёт в TF-IDF и линейную модель, цена, категория и бренд в градиентный бустинг (CatBoost, LightGBM). Бустинг же удобно ставить сверху, чтобы свести ответы нескольких моделей в одно решение;
- классические признаки изображения: цветовые гистограммы, ORB или SIFT для сверки упаковки с эталоном. Помогают различить почти одинаковые товары, у которых на этикетке отличается только вкус.
Про качество: top-1 и top-5 accuracy, recall по каждому классу и macro F1, потому что ассортимент несбалансирован. Разбиение по времени или по магазинам, а не случайное. Предобработку собирают в sklearn.pipeline.Pipeline, чтобы масштабирование и отбор признаков не подглядывали в тест.
Где спотыкаются
Предлагают Random Forest на пикселях. Для изображений это слабый вариант, и интервьюер сразу поймёт, что практики не было.
Смотрят только на общую accuracy. На длинном хвосте редких товаров модель может ошибаться почти всегда, а средняя цифра останется красивой.
Делят данные случайно. Кадры с одной съёмки попадают и в обучение, и в тест, метрика получается завышенной, а в проде качество проседает.