Я пишу статью, в которой пытаюсь группировать постеры фильмов на основе их визуальных особенностей Цель состоит в том, чтобы объединить постеры фильмов, которые выглядят одинаково.
Чтобы получить количественное описание того, как «выглядят» плакаты, я выделил 25088 функций для всех плакатов, используя предварительно обученный VGG16 CNN. Эти функции хранятся в матрице с размерами ( # постеры фильмов, 25088 ).
На основе извлеченных функций я хочу:
- Создание групп / групп похожих постеров фильма, которые можно извлечь из сценария рекомендации.
- Получите список n наиболее похожих плакатов с данным плакатом (например, n наиболее похожих плакатов с плакатом Мадагаскара).
Я буду использовать алгоритм кластеризации: K-означает , и я оценил качество кластеризации, используя Коэффициент силуэта .
Я пробовал следующее:
- Кластеризация с использованием необработанных элементов с помощью K-средних (с использованием косинусного сходства)
- Выполнение PCA (10 компонентов) перед кластеризацией
- Выполнение NMF (10 компонентов) перед кластеризацией
- Вычисление матрицы сходства, чтобы можно было получить список n самых похожих постеров фильма.
Я пытаюсь найти лучшее и самое простое решение. Поэтому у меня два вопроса:
- Использование PCA и NMF приводит к более высокому Силуэтному коэффициенту (соответственно 0,2 и 0,35) по сравнению с 0,01 по необработанным данным. Это потому, что большая часть отклонений отбрасывается через PCA и NMF? Я обеспокоен тем, что это так, поскольку коэффициент силуэта повышается, поскольку я уменьшаю количество компонентов как в PCA, так и в NMF.
- Чтобы получить список из n наиболее похожих плакатов, я вычислил матрицу сходства, из которой я печатаю фильмы с наибольшим косинусным сходством с данным фильмом. Есть ли способ сделать это без расчета матрицы сходства? Мне кажется, что это должно быть возможно с использованием информации в выходных матрицах из PCA и NMF.