Подбор предметов

Теперь вы знаете, как искать похожих людей и рекомендовать предметы данному человеку. Но что если нужно узнать, какие предметы похожи друг на друга? Вы могли столкнуться с такой ситуацией на сайтах онлайновой торговли, особенно если сайт еще не собрал о вас достаточно информации. На рис. 2.4 показан фрагмент страницы сайта Amazon для книги «Programming Python».

Рис. 2.4. Amazon показывает книги, похожие на «Programming Python»

В данном случае вы можете определить степень сходства, выявив людей, которым понравился данный товар, и посмотрев, что еще им понравилось. По существу, это тот же метод, которым мы уже пользовались для определения похожести людей, – нужно лишь вместо людей всюду подставить товары. Стало быть, мы сможем применить уже написанные функции, если преобразуем словарь, заменив

{‘Lisa Rose’: {‘Lady in the Water’: 2.5, ‘Snakes on a Plane’: 3.5}, ‘Gene Seymour’: {‘Lady in the Water’: 3.0, ‘Snakes on a Plane’: 3.5}}

на

{‘Lady in the Water’:{‘Lisa Rose’:2.5,’Gene Seymour’:3.0}, ‘Snakes on a Plane’:{‘Lisa Rose’:3.5,’Gene Seymour’:3.5}} и т. д.

Добавьте в файл recommendations.py функцию для выполнения такого преобразования:

def transformPrefs(prefs): result={}

for person in prefs: for item in prefs[person]: result.setdefault(item,{})

# Обменять местами человека и предмет result[item][person]=prefs[person][item] return result

А теперь вызовем функцию topMatches, чтобы найти фильмы, похожие на «Superman Returns»: >> reload(recommendations)

>> movies=recommendations.transformPrefs(recommendations.critics) >> recommendations.topMatches(movies,’Superman Returns’)

[(0.657, ‘You, Me and Dupree’), (0.487, ‘Lady in the Water’), (0.111, ‘Snakes on a Plane’), (-0.179, ‘The Night Listener’), (-0.422, ‘Just My Luck’)]

Обратите внимание, что в этом примере встречаются отрицательные коэффициенты корреляции. Это означает, что тем, кому нравится фильм «Superman Returns», фильм «Just My Luck» обычно не нравится (рис. 2.5).

Можно пойти еще дальше и получить рекомендуемых критиков для данного фильма. Быть может, так вы решите, кого приглашать на премьеру?

>> recommendations.getRecommendations(movies,’Just My Luck’)

[(4.0, ‘Michael Phillips’), (3.0, ‘Jack Matthews’)]

Не всегда очевидно, что перестановка людей и товаров приведет к полезным результатам, но во многих случаях это позволяет провести интересные сравнения. Сайт онлайновой торговли может хранить истории покупок, чтобы рекомендовать товары посетителям. В этом случае описанная выше перестановка людей и товаров позволит найти людей, которые могли бы купить определенный товар. Это может оказаться очень полезным при планировании маркетинговых акций для продвижения товаров. Еще одно потенциальное применение – рекомендование новых ссылок посетителям, которые могли бы ими заинтересоваться.

Рис. 2.5. Между фильмами «Superman Returns» и «Just My Luck» наблюдается отрицательная корреляция

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100