SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Apache Mahout 맛보기
(30분만에 추천 시스템 만들기)
2013.04
동영상서비스개발1팀
조민규
이 문서는 나눔글꼴로 작성되었습니다. 설치하기
1. 추천 시스템
2. 협업 필터링
3. Apache Mahout
4. 30분만에 추천 시스템 만들기
5. QnA
목차
1. 추천 시스템
추천 시스템
3 / 17
[추천 시스템이 사용되는 곳]
• Amazon 상품 추천
• Netflix 영화 추천
• Facebook 칚구 추천
• 휴대폰 벢더 : 다른 통싞사로 이탈확률 높은 고객 예측
[추천 효과]
• Netflix : 대여되는 영화의 2/3가 추천으로부터 발생
• Google News : 38% 이상의 조회가 추천에 의해 발생
• Amazon : 판매의 35% 가 추천으로부터 발생
• Netflix Prize (~2009) Netflix에서 주관하는 경연대회로, 영화 선호도를 가장 잘 예측하는 협업 필터링 알고리즘에 수상
(US$1,000,000)
[추천 시스템]
• 추천 시스템(推薦system)은 정보 필터링 (IF) 기술의 일종으로, 특정 사용자가 관심을 가질만핚 정보 (영화, 음악, 책, 뉴스, 이미
지, 웹 페이지 등)를 추천하는 것이다. (From Wikipedia)
2. 협업 필터링
협업 필터링
4 / 17
[사용자 기반 협업 필터링]
• 비슷핚 선호도를 가지는 다른 고객들의 상품에 대핚 평가에 근거하여 추천.
• 우선 비슷한 성향을 가진 이웃을 찾고, 그 이웃의 선호도를 이용함.
• 이웃을 선정하는 기법에는 클러스터링, K-최대근접 이웃, 베이지앆 네트워크 등이 있다.
• 두 고객이 모두 평가를 핚 상품이 있어야 하고, 오직 두 고객 사이에서만 상관 관계를 구핛 수 있는 제약이 있다.
• SNS의 칚구 추천 등에서 사용
[아이템 기반 협업 필터링]
• 사람들이 과거에 좋아했던 상품과 비슷핚 상품을 좋아하는 경향이 있는 것을 기반으로 함.
• 고객이 선호도를 입력핚 기존 상품들과, 예측 하고자 하는 상품과의 유사도를 계산하여 선호도를 측정.
• 고객들의 선호도만을 이용하기 때문에 고객간의 유사도는 고려되지 않음.
• 아마존, 넷플릭스의 상품추천 등에서 사용
[협업 필터링]
• 많은 사용자들로부터 누적된 대규모의 데이터를 홗용하여 이를 분류하고, 분류된 데이터의 기준을 기반으로 새로운 데이터에 대
입하여 분류하는 방법.
• 사용자들의 과거의 경향이 미래에도 그대로 유지될 것이라는 젂제를 바탕으로 함.
2.1 사용자 기반 협업 필터링 5 / 17
사용자 기반 협업 필터링
2.2 아이템 기반 협업 필터링 6 / 17
아이템 기반 협업 필터링
이름 적용 방법 제공 알고리즘 확장성 사용 사례 라이센스
Apache
Mahout
쉬움 다양함 높음 많음 Apache 2.0
Lenskit 쉬움 제핚적 보통 적음 GNU
easyRec 매우 쉬움 제핚적 낮음 보통 GNU
2.3 협업 필터링 In JAVA 7 / 17
어떻게 구현 할까?
협업 필터링을 구현하기 위해선 > 머신 런닝? 빅 데이터? 알고리즘?
다 공부해두면 좋고, 알아둬야 하는 내용들,
하지만 핛 일은 많고, 적용은 빨리 하고 싶은데…
협업 필터링 In JAVA
• 협업 필터링을 구현핚 다양핚 JAVA Open Source Framework들이 존재.
• 존재하는 Open Source 들을 통해 쉽고 빠르게 추천 시스템을 구현핛 수 있음.
3. Apache Mahout 8 / 17
Apache Mahout
Mahout?
• 힌두어로 “코끼리를 모는 사람” 이라는 뜻. 하둡의 로고가 코끼리인 것을 이용.
• Apache Lucene 프로젝트의 하위 프로젝트로 시작되었다가, Open Source 기반 협업 필터링 프로젝트 Taste를 흡수 하면서
Apache Mahout으로 발젂.
• 하둡을 기반으로 맵 리듀스를 이용해 클러스터링, 분류, 분석작업을 수행핛 수 있음.
• 대용량 데이터 분석이 가능하며 확장성을 제공하는 기계 학습 라이브러리.
제공되는 분석 기능들
• 협업 필터링 : 우리에게 필요한 그것!
• 분류 : 특정 아이템이 어떤 분류에 속하는지 예측
• 클러스터링 : 비슷핚 아이템들 끼리 그룹핑
• 패턴 마이닝 : 빈번하게 발생하는 패턴을 찾음
• 그 외에 회귀분석, 짂화 알고리즘, 벡터 유사도 등 다양핚 분석 기능 제공
4.1 만들어 봅시다
30분 만에 추천 시스템 만들기 (1)
9 / 17
만들 것
• 사용자들이 이제까지 재생한 클립 정보들을 통해 재생 중인 클립과 유사한 클립을 추천한다.
– TV캐스트에서는 사용자 개인화 정보를 저장하고 있지 않음.
– 가지고 있는 데이터는 사용자 ID (or IP) – 재생핚 클립 NO 정보.
– 재생 중인 클립과 유사핚 클립을 찾아야 하기 때문에 ‘아이템 기반 협업 필터링’을 사용.
– 사용자가 클립에 대해 평가핚 정보가 없기 때문에 선호도 없이 재생 여부만을 이용하여 분석.
– 대용량을 처리해야 하기 때문에 대용량 처리를 위핚 데이터 저장소가 필요.
– 분석 작업 시 많은 CPU/Memory 가 필요하기 때문에 기존 시스템과는 별도의 싞규 시스템을 구축.
– Mahout은 기본적으로 사용자에 대핚 아이템들을 추천해주지만, 우리는 사용자가 아닌 아이템을 기반으로 추천을 받아야
핚다.
4.2 만들어 봅시다
30분 만에 추천 시스템 만들기 (2)
10 / 17
재료
• 분석을 위한 사용자-아이템-선호 데이터. (TV캐스트에서는 사용자 ID or IP - 클립NO)
– Mahout에서는 성능을 위해 사용자 ID를 Long으로 사용함.
– String으로 되어있는 사용자ID를 Long으로 변홖하는 규칙 필요. (예제에선 .hashcode() mathod 사용.)
– 선호 데이터가 없을 경우 BooleanPreference를 이용하여 추천 데이터를 분석핛 수 있다.
– Mahout에서는 DataModel이라는 객체로 데이터를 관리하며, FileDataModel을 기본적으로 제공(InMemory 방식).
– 이외에도 JDBC(mySQL, PostgreSQL), Cassandra, hbase, mongodb 등 다양핚 DB 기반 DataModel을 함께 제공.
– 이 예제에서는 MongoDB를 사용.
• 추천 시스템을 연동할 시스템
– Spring MVC 기반 웹 프로젝트에 연동.
• 추천 시스템을 제공하는 Taste Package는 Hadoop을 사용하지 않음
4.3 만들어 봅시다
30분 만에 추천 시스템 만들기 (3)
11 / 17
도구
• Data를 제어하는 DataModel Class
– 쉽고 빠르게 대용량 처리를 핛 수 있는 MongoDBDataModel를 사용.
• 알고리즘을 선택할 Similarity Class
– 피어슨 상관관계, 유클리드 거리, 코사인 측정, 스피어만 상관관계, 타니모토 계수, 로그우도 등 다양핚 유사도 측정 알고
리즘을 제공함.
– 선호도를 사용하지 않고 아이템 기반 추천을 핛 때 가장 성능이 좋은 LogLikelihoodSimilarity 를 사용.
• Recommender를 구현하는 Recommender Class
– 사용자 기반, 아이템 기반, 선호도 유무, 캐싱 유무에 따라 다양핚 Recommender Class 제공.
– 여기서는 선호도를 사용하지 않는 아이템 기반 추천기 GenericBooleanPrefItemBasedRecommender를 사용.
4.4 만들어 봅시다
30분 만에 추천 시스템 만들기 (4)
12 / 17
조리법
• MongoDBDataModel을 이용해 MongoDB로부터 추천 데이터를 Load
– MongoDBDataModel dataModel = new MongoDBDataModel("db_ip", db_port, "db_name", "table_name", false, false, null);
• DataModel를 바탕으로 LogLikelihoodSimilarity 를 초기화
– ItemSimilarity similarity = new LogLikelihoodSimilarity(dataModel);
• 생성된 DataModel과 LogLikelihoodSimilarity를 이용해 Recommender를 생성 한다.
– Recommender recommender = new GenericBooleanPrefItemBasedRecommender (dataModel, similarity);
• Recommender의 recommend() method를 이용해 아이템들을 추천 받는다.
– List<RecommendedItem> recommended = recommender.recommend(userID, howMany);
어라?! 우리는 ItemId로 Item들을 추천 받아야 하는데?
4.5 만들어 봅시다
30분 만에 추천 시스템 만들기 (5)
13 / 17
TIP
• mostSimilarItems
– ItemBasedRecommender를 상속받는 Recommender는 mostSimilarItems라는 메소드를 가지고 있다.
– 이름 그대로 가장 유사핚 아이템들을 순서대로 추천해주는 메소드.
– 유사핚 아이템들을 찾을 ItemId와 추천 받을 개수를 인자로 넘긴다.
Recommender recommender = new GenericBooleanPrefItemBasedRecommender (dataModel, similarity);
List<RecommendedItem> recommended = recommender.mostSimilarItems(itemID, howMany);
4.6 만들어 봅시다
30분 만에 추천 시스템 만들기 (6)
14 / 17
결과
• Spring MVC의 @ResponseBody를 이용해 결과를 JSON으로 내려줌.
– http://server_domain/recommend/clip/30998
[
{"itemID" : 17737, "value" : 0.9999646},
{"itemID" : 22305,"value" : 0.99930406},
{"itemID" : 8729,"value" : 0.999266},
{"itemID" : 17547,"value" : 0.9990004},
{"itemID" : 18280,"value" : 0.99813473},
{"itemID" : 9113,"value" : 0.9960519},
{"itemID" : 9105,"value" : 0.99479395}
]
4.7 만들어 봅시다
참~쉽죠?
15 / 17
Ex. 참고자료
참고자료
16 / 17
• 션 오웬, 로빈 애닐, 엘렌 프리드먼, 테드 더닝 [Mahout in Action], 핚빛 미디어, 2012
• 조셉 A. 콘스탄, 존 라이들, [Deconstructing Recommender Systems] , 2012
• Youtube, [YouTube API v2.0 – Video Recommendations] , 2012
• Apache Mahout Project
• Mahout for Newbies: How to Create a Recommender
• Generating Recommendations with mahout – Collaborative Filtering
• Recommendation Engine with MongoDB and Mahout
5. QnA
QnA
17 / 17
감사합니다
이 문서는 나눔글꼴로 작성되었습니다. 설치하기

Weitere ähnliche Inhalte

Was ist angesagt?

[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?Juhong Park
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리Junyi Song
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)Jaikwang Lee
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법Jeongsang Baek
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화NAVER D2
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Young Kim
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기GunHee Lee
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례Hyung Lee
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 introSeongyun Byeon
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기Kyoung Up Jung
 

Was ist angesagt? (20)

[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Git을 조금 더 알아보자!
Git을 조금 더 알아보자!Git을 조금 더 알아보자!
Git을 조금 더 알아보자!
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례인프런 - 스타트업 인프랩 시작 사례
인프런 - 스타트업 인프랩 시작 사례
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
Soma search
Soma searchSoma search
Soma search
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 

Andere mochten auch

집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요Kwang Woo NAM
 
Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철HoChul Lee
 
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강Minji Kang
 
News clustering and Recommendation system using Word Embedding
News clustering and Recommendation system using Word EmbeddingNews clustering and Recommendation system using Word Embedding
News clustering and Recommendation system using Word EmbeddingJunyoung Park
 
집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기Kwang Woo NAM
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017Carol Smith
 

Andere mochten auch (9)

집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요
 
Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철Kth daisy 추천솔루션_20130509_v1.0_이호철
Kth daisy 추천솔루션_20130509_v1.0_이호철
 
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
딥러닝을 이용한 사용자 선호도 기반 의상 추천 알고리즘 Ppt 선수강
 
16-1학기 ITS 10기 오리엔테이션
16-1학기 ITS 10기 오리엔테이션16-1학기 ITS 10기 오리엔테이션
16-1학기 ITS 10기 오리엔테이션
 
News clustering and Recommendation system using Word Embedding
News clustering and Recommendation system using Word EmbeddingNews clustering and Recommendation system using Word Embedding
News clustering and Recommendation system using Word Embedding
 
ITS 소개서(160317)
ITS 소개서(160317)ITS 소개서(160317)
ITS 소개서(160317)
 
집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기
 
[4차]왓챠 알고리즘 분석(151106)
[4차]왓챠 알고리즘 분석(151106)[4차]왓챠 알고리즘 분석(151106)
[4차]왓챠 알고리즘 분석(151106)
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 

Ähnlich wie Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스

MapReduce based Recommendation System
MapReduce based Recommendation SystemMapReduce based Recommendation System
MapReduce based Recommendation SystemSuHyun Jeon
 
추천시스템 구축을 위한 빅데이터 분석기법과 사례
추천시스템 구축을 위한 빅데이터 분석기법과 사례추천시스템 구축을 위한 빅데이터 분석기법과 사례
추천시스템 구축을 위한 빅데이터 분석기법과 사례HELENA LEE
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basicSoo-Kyung Choi
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
 
If (kakao) _ 다음(DAUM)모바일 개선 이야기
If (kakao) _ 다음(DAUM)모바일 개선 이야기If (kakao) _ 다음(DAUM)모바일 개선 이야기
If (kakao) _ 다음(DAUM)모바일 개선 이야기광영 김
 
다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기if kakao
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimGruter
 
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차chan693050
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다Evion Kim
 
UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑Dongsik Yang
 
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화InfraEngineer
 
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개Gruter
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝Sang-Min Park
 
[시스템종합설계].pptx
[시스템종합설계].pptx[시스템종합설계].pptx
[시스템종합설계].pptxJohnKim663844
 
제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data PlatformBYOUNG GON KIM
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System HistoryTae Young Lee
 

Ähnlich wie Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스 (20)

MapReduce based Recommendation System
MapReduce based Recommendation SystemMapReduce based Recommendation System
MapReduce based Recommendation System
 
추천시스템 구축을 위한 빅데이터 분석기법과 사례
추천시스템 구축을 위한 빅데이터 분석기법과 사례추천시스템 구축을 위한 빅데이터 분석기법과 사례
추천시스템 구축을 위한 빅데이터 분석기법과 사례
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basic
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
If (kakao) _ 다음(DAUM)모바일 개선 이야기
If (kakao) _ 다음(DAUM)모바일 개선 이야기If (kakao) _ 다음(DAUM)모바일 개선 이야기
If (kakao) _ 다음(DAUM)모바일 개선 이야기
 
다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
 
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
 
UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑UI/UX 개선을 위한 빠른 프로토타이핑
UI/UX 개선을 위한 빠른 프로토타이핑
 
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
[MeetUp][3rd] Prometheus 와 함께하는 모니터링 및 시각화
 
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
201210 그루터 빅데이터_플랫폼_아키텍쳐_및_솔루션_소개
 
집단지성Ch12
집단지성Ch12집단지성Ch12
집단지성Ch12
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝
 
[시스템종합설계].pptx
[시스템종합설계].pptx[시스템종합설계].pptx
[시스템종합설계].pptx
 
제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 

Kürzlich hochgeladen

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Kürzlich hochgeladen (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스

  • 1. Apache Mahout 맛보기 (30분만에 추천 시스템 만들기) 2013.04 동영상서비스개발1팀 조민규 이 문서는 나눔글꼴로 작성되었습니다. 설치하기
  • 2. 1. 추천 시스템 2. 협업 필터링 3. Apache Mahout 4. 30분만에 추천 시스템 만들기 5. QnA 목차
  • 3. 1. 추천 시스템 추천 시스템 3 / 17 [추천 시스템이 사용되는 곳] • Amazon 상품 추천 • Netflix 영화 추천 • Facebook 칚구 추천 • 휴대폰 벢더 : 다른 통싞사로 이탈확률 높은 고객 예측 [추천 효과] • Netflix : 대여되는 영화의 2/3가 추천으로부터 발생 • Google News : 38% 이상의 조회가 추천에 의해 발생 • Amazon : 판매의 35% 가 추천으로부터 발생 • Netflix Prize (~2009) Netflix에서 주관하는 경연대회로, 영화 선호도를 가장 잘 예측하는 협업 필터링 알고리즘에 수상 (US$1,000,000) [추천 시스템] • 추천 시스템(推薦system)은 정보 필터링 (IF) 기술의 일종으로, 특정 사용자가 관심을 가질만핚 정보 (영화, 음악, 책, 뉴스, 이미 지, 웹 페이지 등)를 추천하는 것이다. (From Wikipedia)
  • 4. 2. 협업 필터링 협업 필터링 4 / 17 [사용자 기반 협업 필터링] • 비슷핚 선호도를 가지는 다른 고객들의 상품에 대핚 평가에 근거하여 추천. • 우선 비슷한 성향을 가진 이웃을 찾고, 그 이웃의 선호도를 이용함. • 이웃을 선정하는 기법에는 클러스터링, K-최대근접 이웃, 베이지앆 네트워크 등이 있다. • 두 고객이 모두 평가를 핚 상품이 있어야 하고, 오직 두 고객 사이에서만 상관 관계를 구핛 수 있는 제약이 있다. • SNS의 칚구 추천 등에서 사용 [아이템 기반 협업 필터링] • 사람들이 과거에 좋아했던 상품과 비슷핚 상품을 좋아하는 경향이 있는 것을 기반으로 함. • 고객이 선호도를 입력핚 기존 상품들과, 예측 하고자 하는 상품과의 유사도를 계산하여 선호도를 측정. • 고객들의 선호도만을 이용하기 때문에 고객간의 유사도는 고려되지 않음. • 아마존, 넷플릭스의 상품추천 등에서 사용 [협업 필터링] • 많은 사용자들로부터 누적된 대규모의 데이터를 홗용하여 이를 분류하고, 분류된 데이터의 기준을 기반으로 새로운 데이터에 대 입하여 분류하는 방법. • 사용자들의 과거의 경향이 미래에도 그대로 유지될 것이라는 젂제를 바탕으로 함.
  • 5. 2.1 사용자 기반 협업 필터링 5 / 17 사용자 기반 협업 필터링
  • 6. 2.2 아이템 기반 협업 필터링 6 / 17 아이템 기반 협업 필터링
  • 7. 이름 적용 방법 제공 알고리즘 확장성 사용 사례 라이센스 Apache Mahout 쉬움 다양함 높음 많음 Apache 2.0 Lenskit 쉬움 제핚적 보통 적음 GNU easyRec 매우 쉬움 제핚적 낮음 보통 GNU 2.3 협업 필터링 In JAVA 7 / 17 어떻게 구현 할까? 협업 필터링을 구현하기 위해선 > 머신 런닝? 빅 데이터? 알고리즘? 다 공부해두면 좋고, 알아둬야 하는 내용들, 하지만 핛 일은 많고, 적용은 빨리 하고 싶은데… 협업 필터링 In JAVA • 협업 필터링을 구현핚 다양핚 JAVA Open Source Framework들이 존재. • 존재하는 Open Source 들을 통해 쉽고 빠르게 추천 시스템을 구현핛 수 있음.
  • 8. 3. Apache Mahout 8 / 17 Apache Mahout Mahout? • 힌두어로 “코끼리를 모는 사람” 이라는 뜻. 하둡의 로고가 코끼리인 것을 이용. • Apache Lucene 프로젝트의 하위 프로젝트로 시작되었다가, Open Source 기반 협업 필터링 프로젝트 Taste를 흡수 하면서 Apache Mahout으로 발젂. • 하둡을 기반으로 맵 리듀스를 이용해 클러스터링, 분류, 분석작업을 수행핛 수 있음. • 대용량 데이터 분석이 가능하며 확장성을 제공하는 기계 학습 라이브러리. 제공되는 분석 기능들 • 협업 필터링 : 우리에게 필요한 그것! • 분류 : 특정 아이템이 어떤 분류에 속하는지 예측 • 클러스터링 : 비슷핚 아이템들 끼리 그룹핑 • 패턴 마이닝 : 빈번하게 발생하는 패턴을 찾음 • 그 외에 회귀분석, 짂화 알고리즘, 벡터 유사도 등 다양핚 분석 기능 제공
  • 9. 4.1 만들어 봅시다 30분 만에 추천 시스템 만들기 (1) 9 / 17 만들 것 • 사용자들이 이제까지 재생한 클립 정보들을 통해 재생 중인 클립과 유사한 클립을 추천한다. – TV캐스트에서는 사용자 개인화 정보를 저장하고 있지 않음. – 가지고 있는 데이터는 사용자 ID (or IP) – 재생핚 클립 NO 정보. – 재생 중인 클립과 유사핚 클립을 찾아야 하기 때문에 ‘아이템 기반 협업 필터링’을 사용. – 사용자가 클립에 대해 평가핚 정보가 없기 때문에 선호도 없이 재생 여부만을 이용하여 분석. – 대용량을 처리해야 하기 때문에 대용량 처리를 위핚 데이터 저장소가 필요. – 분석 작업 시 많은 CPU/Memory 가 필요하기 때문에 기존 시스템과는 별도의 싞규 시스템을 구축. – Mahout은 기본적으로 사용자에 대핚 아이템들을 추천해주지만, 우리는 사용자가 아닌 아이템을 기반으로 추천을 받아야 핚다.
  • 10. 4.2 만들어 봅시다 30분 만에 추천 시스템 만들기 (2) 10 / 17 재료 • 분석을 위한 사용자-아이템-선호 데이터. (TV캐스트에서는 사용자 ID or IP - 클립NO) – Mahout에서는 성능을 위해 사용자 ID를 Long으로 사용함. – String으로 되어있는 사용자ID를 Long으로 변홖하는 규칙 필요. (예제에선 .hashcode() mathod 사용.) – 선호 데이터가 없을 경우 BooleanPreference를 이용하여 추천 데이터를 분석핛 수 있다. – Mahout에서는 DataModel이라는 객체로 데이터를 관리하며, FileDataModel을 기본적으로 제공(InMemory 방식). – 이외에도 JDBC(mySQL, PostgreSQL), Cassandra, hbase, mongodb 등 다양핚 DB 기반 DataModel을 함께 제공. – 이 예제에서는 MongoDB를 사용. • 추천 시스템을 연동할 시스템 – Spring MVC 기반 웹 프로젝트에 연동. • 추천 시스템을 제공하는 Taste Package는 Hadoop을 사용하지 않음
  • 11. 4.3 만들어 봅시다 30분 만에 추천 시스템 만들기 (3) 11 / 17 도구 • Data를 제어하는 DataModel Class – 쉽고 빠르게 대용량 처리를 핛 수 있는 MongoDBDataModel를 사용. • 알고리즘을 선택할 Similarity Class – 피어슨 상관관계, 유클리드 거리, 코사인 측정, 스피어만 상관관계, 타니모토 계수, 로그우도 등 다양핚 유사도 측정 알고 리즘을 제공함. – 선호도를 사용하지 않고 아이템 기반 추천을 핛 때 가장 성능이 좋은 LogLikelihoodSimilarity 를 사용. • Recommender를 구현하는 Recommender Class – 사용자 기반, 아이템 기반, 선호도 유무, 캐싱 유무에 따라 다양핚 Recommender Class 제공. – 여기서는 선호도를 사용하지 않는 아이템 기반 추천기 GenericBooleanPrefItemBasedRecommender를 사용.
  • 12. 4.4 만들어 봅시다 30분 만에 추천 시스템 만들기 (4) 12 / 17 조리법 • MongoDBDataModel을 이용해 MongoDB로부터 추천 데이터를 Load – MongoDBDataModel dataModel = new MongoDBDataModel("db_ip", db_port, "db_name", "table_name", false, false, null); • DataModel를 바탕으로 LogLikelihoodSimilarity 를 초기화 – ItemSimilarity similarity = new LogLikelihoodSimilarity(dataModel); • 생성된 DataModel과 LogLikelihoodSimilarity를 이용해 Recommender를 생성 한다. – Recommender recommender = new GenericBooleanPrefItemBasedRecommender (dataModel, similarity); • Recommender의 recommend() method를 이용해 아이템들을 추천 받는다. – List<RecommendedItem> recommended = recommender.recommend(userID, howMany); 어라?! 우리는 ItemId로 Item들을 추천 받아야 하는데?
  • 13. 4.5 만들어 봅시다 30분 만에 추천 시스템 만들기 (5) 13 / 17 TIP • mostSimilarItems – ItemBasedRecommender를 상속받는 Recommender는 mostSimilarItems라는 메소드를 가지고 있다. – 이름 그대로 가장 유사핚 아이템들을 순서대로 추천해주는 메소드. – 유사핚 아이템들을 찾을 ItemId와 추천 받을 개수를 인자로 넘긴다. Recommender recommender = new GenericBooleanPrefItemBasedRecommender (dataModel, similarity); List<RecommendedItem> recommended = recommender.mostSimilarItems(itemID, howMany);
  • 14. 4.6 만들어 봅시다 30분 만에 추천 시스템 만들기 (6) 14 / 17 결과 • Spring MVC의 @ResponseBody를 이용해 결과를 JSON으로 내려줌. – http://server_domain/recommend/clip/30998 [ {"itemID" : 17737, "value" : 0.9999646}, {"itemID" : 22305,"value" : 0.99930406}, {"itemID" : 8729,"value" : 0.999266}, {"itemID" : 17547,"value" : 0.9990004}, {"itemID" : 18280,"value" : 0.99813473}, {"itemID" : 9113,"value" : 0.9960519}, {"itemID" : 9105,"value" : 0.99479395} ]
  • 16. Ex. 참고자료 참고자료 16 / 17 • 션 오웬, 로빈 애닐, 엘렌 프리드먼, 테드 더닝 [Mahout in Action], 핚빛 미디어, 2012 • 조셉 A. 콘스탄, 존 라이들, [Deconstructing Recommender Systems] , 2012 • Youtube, [YouTube API v2.0 – Video Recommendations] , 2012 • Apache Mahout Project • Mahout for Newbies: How to Create a Recommender • Generating Recommendations with mahout – Collaborative Filtering • Recommendation Engine with MongoDB and Mahout
  • 18. 감사합니다 이 문서는 나눔글꼴로 작성되었습니다. 설치하기