Существует DBUnit. Это не позволит Вам тестировать свой код jdbc без базы данных, но кажется, что Вы могли представить различный набор покупок путем эмуляции базы данных.
Позвольте мне объяснить процедуру, которую представили авторы (как я понял):
Входные данные:
Вывод:
Это можно повторить для группы элементов, а затем мы возвращаем N элементов с наивысшими оценками (самые высокие прогнозируемые оценки)
Процедура:
Алгоритм очень похож на наивный метод KNN (поиск по всем обучающим данным, чтобы найти пользователей с рейтингами, аналогичными целевому пользователю, затем объединить их оценки, чтобы дать прогноз [голосование]) .
Этот простой метод не очень хорошо масштабируется, поскольку количество пользователей / элементов увеличивается.
Предлагаемый алгоритм состоит в том, чтобы сначала сгруппировать обучающих пользователей в K групп (группы людей, которые оценили элементы одинаково), где K << N ( N - общее количество пользователей).
Затем мы сканируем эти кластеры, чтобы определить, к какому из них целевой пользователь ближе всего (вместо того, чтобы смотреть на всех обучающихся пользователей).
Наконец, мы выбираем из них l и делаем наш прогноз как средневзвешенный по расстоянию до этих l кластеров.
Обратите внимание, что используемая мера сходства - коэффициент корреляции , а алгоритм кластеризации представляет собой алгоритм деления пополам K-средних. Мы можем просто использовать стандартные k-среднее , а также другие метрики сходства, такие как Евклидово расстояние или косинусное расстояние.
Первая формула на странице 5 - это определение корреляция:
corr(x,y) = (x-mean(x))(y-mean(y)) / std(x)*std(y)
Вторая формула представляет собой средневзвешенное значение:
predRating = sum_i(rating_i * corr(target,user_i)) / sum(corr(target,user_i))
where i loops over the selected top-l clusters
Надеюсь, это немного проясняет ситуацию :)
Программирование коллективного разума - это действительно удобный вводный курс с большим количеством примеров код на Python. По крайней мере, это поможет подготовить почву для понимания математики в научных статьях по этой теме.
Алгоритм интеллектуальной сети (Х. Марманис, Д. Бабенко, публикация Мэннинга) - вводный текст по теме. Он также охватывает концепции поиска, но его основное внимание уделяется классификации, системам рекомендаций и т. Д. Это должно стать хорошим учебником для вашего проекта, позволяющим вам задавать правильные вопросы и копать глубже, где вещи кажутся более перспективными или практичными в вашей ситуации.
Книга также включает «освежение» соответствующих математических тем (в основном линейной алгебры), но это повторение минимально; вы добьетесь большего успеха в Интернете.
Приятный способ открыть для себя линейную алгебру или вернуться в нее - это следовать проф. Серия лекций Гилберта Стрэнда 18.06 , доступная на MIT OpenCourseWare
Линейная алгебра - не единственный путь к спасению;