본문 바로가기
Programming_Collective Intelligence/2.추천시스템 만들기

제품 매칭

by 볼록티 2019. 12. 28.
728x90
반응형

지금까지는 유사한 사람을 찾는 방법과 한 사람에게 제품들을 추천하는 방법을 보았다. 이제부터는 한 제분과 다른 제품이 얼마나 비슷한지 살펴본다. 이런 기능은 쇼핑몰에 자주 방문하지 않는 사람들에게 제공한다. 예컨데 아마존 웹페이지가 있다.

 

특정 물건을 좋아한 사람들이 좋아한 다른 것들을 살펴보아 유사도를 구한다. 이것은 앞에서 두 사람 간의 유사도를 측정한 방식과 동일한 방법이다. 단지, 사람을 물건으로 대치하면 된다. 딕셔너리 형태를 변경하면 전에 사용했던 방법과 동일하게 적용할 수 있다.

 

{'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}}

위의 딕셔너리에서 사람이름과 제품이름을 바꾸어주면 아래와 같다.

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

 

모두 바꾸어 보자.

def transformPrefs(prefs):
    result={}
    for person in prefs:
        for item in prefs[person]:
            result.setdefault(item,{})
            
            # 사람과 제품을 바꿈
            result[item][person]=prefs[person][item]
            
    return result

위의 함수로 제품과 사람 위치를 바꾸어 줄 수 있다.

 

 

이제 특정 제품과 가장 유사한 제품을 찾아본다.

imp.reload(rating)
movies=rating.transformPrefs(rating.critics)
rating.topMatches(movies,'Superman Returns')

전에 작성한 topMatches 함수를 사용하여 'Superman Returns'와 가장 유사한 영화를 찾아보면, 아래와 같은 결과를 얻을 수 있다.

 

 

 

사람과 제품의 위치를 바꿔 유용한 결과를 얻을 것인지는 확실치 않지만, 대다수 흥미로운 비교 결과는 얻을 수 있었다. 온라인 소매상의 경우 개인에게 상품을 추천하기 위해 구매 이력을 수집하려 할 것이다. 위와 같이 제품을 사람으로 바꾸면 특정 상품을 구매할 사람들을 찾는데 유용하게 사용할 수 있다.  이러한 방법은 특정한 물건의 처분을 위한 마케팅 게획 수립에 매우 유용하다. 또한 사람들이 좋아할 만한 새로운 링크를 링크 추천사이트에서 보여주는 용도로도 좋다.

 

 

 

 

728x90
반응형

댓글