Библиотека системы рекомендаций MyMediaLite


Грэг Дункан

Сегодняшний проект отличается от остальных. Сначала я отложил этот рассказ, чтобы потом решить написать о нем или нет. Мне кажется, что он замечательный, но я не уверен насколько он «забавен» и насколько он выходит из принятых здесь рамок. Что меня подтолкнуло к публикации, так это мысль насколько этот проект оригинален и отличается от остальных, что здесь ранее не было чего-то подобного, что я не в состоянии увидеть подобных библиотек и мысль о том, какие клёвые вещи можно сделать с его помощью…

Библиотека системы рекомендаций MyMediaLite

MyMediaLite – это облегченная, многоцелевая библиотека алгоритмов системы рекомендаций.

Она предназначена для использования в двух самых общих сценариях совместной фильтрации:

· предсказание рейтинга (т. е. в диапазоне от одной до пяти звезд)

· предсказание элементов по неявному отзыву (т. е. по щелчкам мыши или по покупкам)

MyMediaLite – свободно доступное ПО (с открытым исходным кодом), и может использоваться и распространяться в условиях GNU General Public License (GPL) .

MyMediaLite: Возможности

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 в Чикаго

clip_image002

Вот пример фрагмента кода:

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, то это труда не составит…

Наконец, если вы уже задумывались о добавлении некоторых «рекомендательных» возможностей в свое приложение или сайт, но самостоятельная разработка такой функциональности напрягает ваш мозг, возможно, вы захотите ознакомиться с этим проектом.

Comments (0)

Skip to main content