Библиотека системы рекомендаций MyMediaLite
Сегодняшний проект отличается от остальных. Сначала я отложил этот рассказ, чтобы потом решить написать о нем или нет. Мне кажется, что он замечательный, но я не уверен насколько он «забавен» и насколько он выходит из принятых здесь рамок. Что меня подтолкнуло к публикации, так это мысль насколько этот проект оригинален и отличается от остальных, что здесь ранее не было чего-то подобного, что я не в состоянии увидеть подобных библиотек и мысль о том, какие клёвые вещи можно сделать с его помощью…
Библиотека системы рекомендаций MyMediaLite
MyMediaLite – это облегченная, многоцелевая библиотека алгоритмов системы рекомендаций.
Она предназначена для использования в двух самых общих сценариях совместной фильтрации:
· предсказание рейтинга (т. е. в диапазоне от одной до пяти звезд)
· предсказание элементов по неявному отзыву (т. е. по щелчкам мыши или по покупкам)
MyMediaLite – свободно доступное ПО (с открытым исходным кодом), и может использоваться и распространяться в условиях GNU General Public License (GPL) .
...
MyMediaLite предоставляет выбор среди множества методов рекомендации:
· дюжины различных рекомендателей
· методы, использующие совместные данные и атрибутов и содержимого
MyMediaLite готова к использованию :
- MyMediaLite включает процедуры оценки предсказания рейтингов и предсказания элементов; она может определять MAE , RMSE , AUC , prec@N, MAP и NDCG .
- Также в ее состав входит утилита командной строки, читающая простой текстовый формат входной информации.
MyMediaLite компактна : ядро библиотеки имеет размер около 150 Kб.
Переносимость: Написана на C# для платформы .NET; работает на любой архитектуре, поддерживаемой Mono : Linux, Windows, Mac OS X.
MyMediaLite наконференции ACM Recommender Systems 2011 вЧикаго
Вот пример фрагмента кода:
using System;
using MyMediaLite.Data;
using MyMediaLite.Eval;
using MyMediaLite.IO;
using MyMediaLite.ItemRecommendation;
public class ItemPrediction
{
public static void Main(string[] args)
{
// load the data
var user_mapping = new EntityMapping();
var item_mapping = new EntityMapping();
var training_data = ItemData.Read(args[0], user_mapping, item_mapping);
var test_users = training_data.AllUsers; // users that will be taken into account in the evaluation
var candidate_items = training_data.AllItems; // items that will be taken into account in the evaluation
var test_data = ItemData.Read(args[1], user_mapping, item_mapping);
// set up the recommender
var recommender = new MostPopular();
recommender.Feedback = training_data;
recommender.Train();
// measure the accuracy on the test data set
var results = Items.Evaluate(recommender, test_data, training_data, test_users, candidate_items);
foreach (var key in results.Keys)
Console.WriteLine("{0}={1}", key, results[key]);
// make a prediction for a certain user and item
Console.WriteLine(recommender.Predict(user_mapping.ToInternalID(1), item_mapping.ToInternalID(1)));
}
}
Несколько замечаний: Несмотря на то, что все ПО написано на C# основной проект прекрасно открывается и компилируется в VS2010 (по крайней мере, для меня), для многих может оказаться проблемой откомпилировать MovieDemo. Он основан на GTK-Sharp и в нем есть ряд ссылок, которые обычный разработчик в VS может не иметь. Однако если вы пользуетесь MonoDev, то это труда не составит...
Наконец, если вы уже задумывались о добавлении некоторых «рекомендательных» возможностей в свое приложение или сайт, но самостоятельная разработка такой функциональности напрягает ваш мозг, возможно, вы захотите ознакомиться с этим проектом.