This pack of programs/libs can help you with Collaborative filtering algorithm in your app. Next description taken in Russian
- CollaborativeFiltering - библиотека для выполнения user-based или item-based коллабаративной фильтрации
- CollaborativeFilteringConsole - консоль, для использования библиотеки
- CollaborativeAgent - консоль - обработчик, подключающийся к серверу (пока не реализовано) или загружающий тестовые данные из файла и проверяющий их корректность
- CollaborativeFilteringTest - unit-тесты для библиотеки
- DatasetSplitter - консольное приложение для разбиения данных на чанки
- KPILibrary - заимствованная библиотека для работы с Smart M3
- csharp-generator.rb - генератор кода тест кейса из csv файла
Библиотека, для осуществления предсказаний оценок.
Пример использования
// создадим анализатор
var analyzer = new CollaborativeFiltering.Analyzer();
// добавим оценки
analyzer.AddMark(new CollaborativeFiltering.Mark(1, 1, 2));
analyzer.AddMark(new CollaborativeFiltering.Mark(2, 1, 4));
analyzer.AddMark(new CollaborativeFiltering.Mark(4, 1, 5));
analyzer.AddMark(new CollaborativeFiltering.Mark(7, 1, 3));
analyzer.AddMark(new CollaborativeFiltering.Mark(9, 1, 2));
// ... еще оценки
// рассчитаем коэффициенты
analyzer.InitCoefficients();
// получим матрицу оценок (в которой оценки со знаком "-" - исходные, "+" - рассчитанные)
var matrix = analyzer.GetMarks(CollaborativeFiltering.BaseAnalyzer.FilteringType.UserBased);
// проверим, что для пользователя 1 предсказана оценка 3 для объекта 5
Assert.AreEqual(3, matrix[1][5]);
Консоль - обработчик, подключающийся к серверу (пока не реализовано) или загружающий тестовые данные из файла и проверяющий их корректность.
- путь к индекс файлу [обязательный]
Индекс файл представляет из себя csv файл без заголовка, с колонками variant и answer_file. Answer-файл - файл ответов, полученный из CollaborativeFilteringConsole
1,.\AgentData\1-answer.csv
Консоль, рассчитывающая на основе файла с существующими оценками, предсказанные оценки.
- путь к исходному файлу [обязательный]
- режим рассчета - item или user [обязательный]
- файл вывода рассчитанных оценок [необязательный]
Файлы должны быть написаны, используя формат CSV, но без заголовков.
Колонки должны идти в следующей последовательности
- user
- item
- rate