Грэг Дункан
Сегодняшний проект отличается от остальных. Сначала я отложил этот рассказ, чтобы потом решить написать о нем или нет. Мне кажется, что он замечательный, но я не уверен насколько он «забавен» и насколько он выходит из принятых здесь рамок. Что меня подтолкнуло к публикации, так это мысль насколько этот проект оригинален и отличается от остальных, что здесь ранее не было чего-то подобного, что я не в состоянии увидеть подобных библиотек и мысль о том, какие клёвые вещи можно сделать с его помощью…
Библиотека системы рекомендаций MyMediaLite
MyMediaLite – это облегченная, многоцелевая библиотека алгоритмов системы рекомендаций. Она предназначена для использования в двух самых общих сценариях совместной фильтрации: · предсказание рейтинга (т. е. в диапазоне от одной до пяти звезд) · предсказание элементов по неявному отзыву (т. е. по щелчкам мыши или по покупкам) MyMediaLite – свободно доступное ПО (с открытым исходным кодом), и может использоваться и распространяться в условиях GNU General Public License (GPL) .
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 предоставляет выбор среди множества методов рекомендации:
· дюжины различных рекомендателей
· методы, использующие совместные данные и атрибутов и содержимого
MyMediaLite готова к использованию:
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, то это труда не составит...
Наконец, если вы уже задумывались о добавлении некоторых «рекомендательных» возможностей в свое приложение или сайт, но самостоятельная разработка такой функциональности напрягает ваш мозг, возможно, вы захотите ознакомиться с этим проектом.