SlideShare a Scribd company logo
1 of 44
Download to read offline
(왕초보들을 위한)
2021-08-17
youngick.kim
알아두면
쓸데없지만
(혹시나) 신비할지도 모르는
잡학사전
(머신러닝을 이용한 추천 시스템 개발 경험담)
부제 : 깡통(바보)들을 위한
머신 러닝 & 추천 시스템
• https://www.ibm.com/downloads/cas/GB8ZMQZ3
2
세상은 알파고 등장 전/후 로 구분
• 알파고 이후에 온 세상이 피곤해짐 (특히 IT 분야)
• 전 국민이 다 “인공 지능” 해야 하는 것처럼 호들갑
3
4
5
6
https://www.seoulspeakers.co.kr/speaker/speaker_view.asp?SNO=381
집합 관계
7
AI
Machine
Learning
Deep
Learning
수포자는 힘들었다
• 행렬? 미분? 회귀분석? 저한테 왜 그러세요?
• 머신 러닝 아무 것도 모르고 시작
• 나만 모른다?
소수를 제외하고 다 모르더라
• 무지한 관리자들, 시키면 다 되는 줄
8
처음 시작은?
• 자바로 개발된 머신 러닝 라이브러리 머하웃 으로 시작
• http://mahout.apache.org/
• 이후 스파크(ML) 등장
• 파이썬이나 다른 언어 쪽은 고려 안함
9
0.9
무비렌즈 데이터 셋
• 머하웃 협업 필터링 추천 예제, 무비렌즈 데이터 셋 사용
https://grouplens.org/datasets/movielens
• 파이썬 “서프라이즈” 에도 무비렌즈 데이터 셋 내장
https://surprise.readthedocs.io/en/stable/getting_started.html
10
무비렌즈 데이터 셋
• http://files.grouplens.org/datasets/movielens/
11
무비렌즈 데이터셋
ratings.csv movies.csv
12
무비렌즈 데이터셋
links.csv tags.csv
13
IMDB, TMDB
14
개발 도중, 무슨 일이 생길까?
• 전처리, 후처리 작업이 은근히 많더라
• Daily, Hourly, … 배치 작업
• 데이터 수집/클린징/검증 , …
• ID 변환/매핑 (텍스트 스트링 <-> Long)
15
한명에게 추천
• recommendForOneUser
16
전체 사용자 추천 -> 배치 작업
• recommendForAllUser
17
아키텍쳐 예시
18
개발 후에는?
• 추천 데이터와 추천을 사용하는 가입자가 많아지면서
급격한 성능 저하 발생
• 사용자 기반의 추천 알고리즘의 근본적인 한계
• 사전에 쓰레드 처리 가능하도록 개발
• DB 성능 저하
• 성능 개선을 위해 하둡 M/R, Hive, … 로 분산 처리 가능?
• 아이템 기반의 추천으로 대체하면 성능 문제 해결 가능
• 사용자 기반 추천이라도 Storm 으로 분산 처리 가능
19
개발 후에는?
• Cold start ???
• https://ko.wikipedia.org/wiki/%ED%98%91%EC%97%85_%ED%95%84%ED%84%B0%EB%A7%81
• 평점/좋아요 입력 받기 위해 UI 수정 & 개인 정보 사용 동의 필요
20
개발 후에는?
• 몇 달 동안 계속 모니터링/데이터 검증, …
• 추천 결과 피드백? 그런게 있을리가… 있어도 안알랴줌, 영업비밀 ?
• 추천 결과가 나름 좋았다는 “썰” -> 자기 합리화 ?
• 사실 추천 시스템 결과를 알 방법이 없거나 어려워요
너무 많은 이벤트, 프로모션, 개편, … , 격리 불가
• A/B 테스트 ?
21
알고리즘의 근본적인 한계?
22
사용자 기반, 아이템 기반
23
유사도 (Similarity)
• http://dataaspirant.com/2015/04/11/five-most-popular-similarity-
measures-implementation-in-python/
24
25
26
머하웃이 제공하는 유사도
• SIMILARITY_LOGLIKELIHOOD
• SIMILARITY_COOCCURRENCE
• SIMILARITY_TANIMOTO_COEFFICIENT
• SIMILARITY_CITY_BLOCK
• SIMILARITY_COSINE
• SIMILARITY_PEARSON_CORRELATION
• SIMILARITY_EUCLIDEAN_DISTANCE
27
클러스터링
• 비지도 학습
• 가입자의 충성도를 기준으로 분류해보자
28
https://machinelearningmastery.com/get-your-hands-dirty-with-scikit-learn-now/
모델 평가는 어떻게?
• https://scikit-
learn.org/stable/modules/model_evaluation.html#metrics-and-
scoring-quantifying-the-quality-of-predictions
• 일반적으로
• 분류(classification)에는 정확도(accuracy)
• 예측(prediction)에는 MSE 또는 RMSE
• 오차, 에러, 비용, 손실, …
29
정확도
• https://scikit-
learn.org/stable/modules/generated/sklearn.metrics.accuracy_s
core.html#sklearn.metrics.accuracy_score
30
MSE
• https://en.wikipedia.org/wiki/Mean_squared_error
• https://wikidocs.net/34063
31
수많은 용어들
32
ROC, AUC
• https://bskyvision.com/1165
• https://scikit-learn.org/stable/modules/model_evaluation.html#metrics-and-scoring-quantifying-the-quality-
of-predictions
33
Underfitting ? Overfitting ?
34
시각화
35
https://ichi.pro/ko/keras-101-jutaeg-gagyeog-hoegwi-bunseog-eul-wihan-dansunhago-haeseog-ganeunghan-singyeongmang-model-54639089092014
아이리스 데이터셋
36
https://medium.com/analytics-vidhya/exploration-of-iris-dataset-using-scikit-learn-part-1-8ac5604937f8
EDA
• Exploratory Data Analysis , 탐색적 데이터 분석
• https://eda-ai-lab.tistory.com/13
37
EDA
• Pandas를 사용한 탐색적 데이터 분석 (EDA) 시각화
• https://ichi.pro/ko/post/222487965537799
38
EDA
39
EDA
40
데이터 분포,
스케일링,
널 값, …
생존 편향(survivorship bias)의 오류
• https://techit.kr/view/?no=20190412163001
41
딥러닝에서 이미지 분석
42
안드로메다를 헤매는 깡통들을 위한 꿀 팁
• 너 자신을 알라
• 모든걸 다 이해하려고 하면 다친다, 자괴감 주의
• 단계별 접근, 일단 쉬운 것만 이해하고 넘어가자, 그리고 반복
• 책도 얇고 쉬운 내용으로 고르자, 두꺼우면 냄비 받침
• 수학, 통계 -> 데이터 분석 -> 머신 러닝 -> 딥 러닝
43
감사합니다
44

More Related Content

Similar to 알쓸신잡, 머신러닝&추천시스템

[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화ByungJoon Lee
 
이벤트: 구글 빅쿼리 완벽 가이드
이벤트: 구글 빅쿼리 완벽 가이드이벤트: 구글 빅쿼리 완벽 가이드
이벤트: 구글 빅쿼리 완벽 가이드Jay Park
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드Terry Cho
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basicSoo-Kyung Choi
 
Neural stream
Neural streamNeural stream
Neural streamMk Kim
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기Dexter Jung
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼Kenu, GwangNam Heo
 
2021년 1월 30일 개발자 이야기
2021년 1월 30일 개발자 이야기2021년 1월 30일 개발자 이야기
2021년 1월 30일 개발자 이야기Jay Park
 
2020년 11월 14일 개발자 이야기
2020년 11월 14일 개발자 이야기2020년 11월 14일 개발자 이야기
2020년 11월 14일 개발자 이야기Jay Park
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기Jay Park
 
ML.NET으로 해보는 AutoML
ML.NET으로 해보는 AutoMLML.NET으로 해보는 AutoML
ML.NET으로 해보는 AutoMLfermat39
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리Jay Park
 
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템tcaesvk
 
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.Abraham Park
 
2020년 4월 4일 개발 이야기 정리
2020년 4월 4일 개발 이야기 정리2020년 4월 4일 개발 이야기 정리
2020년 4월 4일 개발 이야기 정리Jay Park
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
234 deview2013 김형준
234 deview2013 김형준234 deview2013 김형준
234 deview2013 김형준NAVER D2
 

Similar to 알쓸신잡, 머신러닝&추천시스템 (20)

[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
NDC 2013 Monkeyrunner를 이용한 모바일 테스트 자동화
 
이벤트: 구글 빅쿼리 완벽 가이드
이벤트: 구글 빅쿼리 완벽 가이드이벤트: 구글 빅쿼리 완벽 가이드
이벤트: 구글 빅쿼리 완벽 가이드
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
 
시원한성사(2)
시원한성사(2)시원한성사(2)
시원한성사(2)
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basic
 
Neural stream
Neural streamNeural stream
Neural stream
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
 
2021년 1월 30일 개발자 이야기
2021년 1월 30일 개발자 이야기2021년 1월 30일 개발자 이야기
2021년 1월 30일 개발자 이야기
 
2020년 11월 14일 개발자 이야기
2020년 11월 14일 개발자 이야기2020년 11월 14일 개발자 이야기
2020년 11월 14일 개발자 이야기
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기
 
ML.NET으로 해보는 AutoML
ML.NET으로 해보는 AutoMLML.NET으로 해보는 AutoML
ML.NET으로 해보는 AutoML
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리
 
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템
NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템
 
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.
02. After developed - 개발한 뒤에. 테스트 배포 및 마켓 관리.
 
2020년 4월 4일 개발 이야기 정리
2020년 4월 4일 개발 이야기 정리2020년 4월 4일 개발 이야기 정리
2020년 4월 4일 개발 이야기 정리
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
234 deview2013 김형준
234 deview2013 김형준234 deview2013 김형준
234 deview2013 김형준
 

알쓸신잡, 머신러닝&추천시스템