2019년 10월 19일 (토) 광화문 MS 사옥에서 진행된 데이터야놀자에서 듣고 메모한 내용을 적어 보았습니다.
1. Serverless에서 유저 컨텐츠 추천 서비스 in 빙글
- 추천 시스템의 정의? -> 좋아할 만한, 관심 있을 만한 아이템 자동 제공
- ‘읽지 않았던’ 컨텐츠를 자동으로 제공해 주는 것. 컨텐츠 간의 유사도를 매겨야 함
- Euclidean, Jaccard, cosine similarity(여기서 많이 사용. 크기가 아닌 각도 사용)
- 유저 추천: user-based vs contents-based
- user-based
- 유저들이 좋아하는 항목(예: [1,1,0,0,1])들의 코사인 거리 계산
- contents-based
- 컨텐츠 특성들의 코사인 거리 계산
- user-based
- 빙글의 Serverless Architecture
- AWS S3, Athena 등 사용
- id별 similarity 데이터를 json 형태로 저장하여 SQL 쿼리만 날리면 가져올 수 있게 함
- 인스타그램 Tag 이용!
- K-means 클러스터링 문제: random centroid(centroid들이 너무 밀집될 가능성이 있음), unbalanced input(DBSCAN 써야하는 인풋 데이터)
- K-means++: 너무 가깝게 centroid가 지정될 확률이 작아짐.
- Spherical K-means: 거리 계산을 Euclidean 말고 cosine으로 바꿈 -> 거리가 아닌 각도를 계산하여 더 비슷한 것들을 추천할 수 있게 함
- 개발상 문제: 유저가 api call 할 때만 추천 시스템을 새롭게 생성해야 함. 불필요할 경우에도 추천하면 메모리 낭비
- sql 쿼리는 상관 없는데, sklearn 갔다 오는게 오래 걸림. 이 과정을 최적화하여 소요 시간 줄임
- python model(sklearn) 말고 Typescript로 직접 만듦 -> 유지보수를 계속 할 수 있게
- 추천 시스템: 검증이 어려움. 시스템을 만들었는데 유저 만족도가 좋지 않을 수 있음.
- ex) input data가 적을 경우
- Q&A
- 데이터가 많아질 경우 matrix 계산 등 어려운데, 어떻게 했는지?
- 이전의 모든 컨텐츠를 가져온 것이 아니라, 날짜 등으로 필터링하여 조건에 맞는 데이터만 가져왔음. 데이터가 엄청 많은 heavy user도 별로 없었음
- K-means의 K는 어떻게 정했는지?
- 유저들에게 추천되는 컨텐츠 수를 보고 결정
- Light user들은 input data가 적어 추천이 잘 되지 않음. 어떻게 해결했는지?
- Guest(로그인 안한 유저)들이 본 컨텐츠 등 이용하여, 기존에 있었던 컨텐츠 보여줌(추천 시스템은 아님)
- 데이터가 많아질 경우 matrix 계산 등 어려운데, 어떻게 했는지?
2. 나의 리터러시 != 너의 리터러시: 잘 전달하기 위해 데이터 시각화할 때 고려하는 것들
- 언론사 디자이너 관점에서 시각화 경험(인포그래픽 등) 공유
- 사용자 중심의 디자인(리터러시)
- 네이버 뉴스: 80% 이상 모바일로 접속
- 같은 데이터를 가지고 다양한 시각화 (사람마다 다르게)
- DVL(Data visualization & Literacy) 연구 중
- DVL(Data visualization & Literacy) 연구 중
- KBS 디지털뉴스: 데이터룸 있음. 취재기자, 개발자, 데이터분석가, 디자이너 등으로 구성
- 2019.10.17 기사: 프로야구 전력차 ~년만에 최대
- 기사 원고와 데이터를 가지고 스케치(구단별 승률, 전력 분포도)
- 카테고리별 산점도 보기, 연도별 구단 전력 표준편차 등 막대그래프로
- 근데 산점도, 표준편차 이런 개념들도 설명하기 어려울 수 있음
- 박스플롯 등 의미를 잘 모르면 전달 어려움
- 대신 한 선에 야구공 위치 그린 그림 좋은 듯
- 분석가가 R로 시각화하는 경우: 거의 없음
- R to illustrator 이용하기도 함
- 데이터를 받아서 다시 시각화함
- 보통 스압 있는 건 잘 넣지 않지만, 한국이 행복지수 최하위인 데이터는 되게 긴 그림을 넣어서 모바일에서 스크롤 쭉 내리면서 체감할 수 있도록 하기도 함
- 모바일용, 데스크탑용 따로 제작
- 개발자가 사용하는 색, 디자이너가 사용하는 색이 다름
- 색각이상자 고려. 총 인구의 3% 정도 되기 때문
- 적록색맹이 가장 많기 때문에 적/록 배색은 잘 하지 않음
- 매직넘버 4: 작업 기억 한계 용량. 그래서 색상을 3~5개로 사용 제한하기도 함
- 일반인에게 보이는 색 / 적록색맹에게 보이는 색 고려하여 색상 조합 선택
- 보통
원/꺾은선/막대
로 거의 표현하는데, 이걸로 나타내기 어려운 경우 다른 시도 하기도 함 (정당 지지율 그래프인 듯) - 스크랩 많이 하심. 토픽별, 목적별로 시각화가 다름
- 데이터 속성을 고려하여 모양, 문자, 방향, 여백 등 고려함 (일종의 시각화 번역 작업)
- 컬러 툴 활용. 포토샵, 구글 spectrum, 구글 colorpick ~, chroma.js 등
- 색상들의 느낌 고려
3. 한글 검색, 고민해야 할게 많아요
- 슬라이드
- 대기업, 스타트업 등 일 하시다가 엘라스틱에 푹 빠져서 여기서 일하시는 중
- Elastic
- 검색 엔진. 꼭 텍스트, 숫자를 치지 않더라도 지도 앱에서 손가락 줌인, 줌아웃 하는 것도 검색 행위. 조건(좌표)에 맞는 데이터를 찾아주는 것
- 윈도우 탐색기에서 파일 찾을 때 등 사용
- 시계열 데이터를 가지고 로그 분석하는 기능도 있음. 전세계 배틀넷 서버도 분석
- 검색엔진 1위, 전체 DB에선 7위. DB 순위에도 들어가는 게 흥미로웠음
- ELK 스택 (엘크): Beats가 추가됨
- IT 기업의 딜레마: 회사 제품 등 홍보하는 건 발표가 잘 허용되지 않음. 다만 서비스 운영사 등에서 ‘Elastic을 이용하여’ 발표하는 내용 등이 있음
- Elastic Stack을 이용한 지하철~~: 발표 데모 자료로 많이 쓰였음
- Kibana: ELK 스택 중 시각화 도구. 한 번 써보기
- 유튜브
Elastic Stack 활용 데모
-> 봐 보기. 연습하는 데 좋음 - 오늘 발표 내용: 제작 과정 중에 한글 검색을 구현하면서 발생한 에피소드
- 과거에는 한글 검색 전혀 고려하지 않았음. 역검색이 한글로 가능하도록 함
- 검색 엔진: 기본적으로 Full Text 검색이 가능해야 함
- DB는 인덱스별 단어를 저장
- 키워드가 늘어나면 데이터가 많아짐
- ES는 단어들의 위치(색인)를 저장 -> 그래서 테이블의 형태가 다름
- 데이터가 늘어나도 키워드의 수가 많아지는 경우가 적음. 다만 인덱스의 개수가 많아질 뿐(예: 1,2p -> 1,2,5p)
- 대소문자 편집, 관사 삭제, 영어는 s(복수형)를 원문으로 저장. jumps 검색해도 jump 나올 수 있도록
- 동의어 검색도 가능하게 함. fast - quick
- DB는 인덱스별 단어를 저장
- 한글 검색은 좀 다름
- 무작정 띄어쓰기로 구분하면 안 됨. 동해물과 백두산이: 동해+물 / 백두+산
- 한글 형태소 분석기: 은전한닢, Nori 등
- 지하철 역 정보 데이터셋 + 다국어(한/일/영) 데이터셋
- 모든 역에 역 code가 있지는 않았음. 역명은 데이터셋마다 다르기도 함.
- Nori: 일반 텍스트(영어). standard analyzer
- Nori-only:
홍대입구
역- 스탠다드 애널라이저는 “홍대입구”로만 저장. 홍대로 검색하면 안 나옴
- nori_only: 필드 만들어 입력 텍스트, 저장되는 텍스트가 모두 한글 형태소 분석기 통해 처리
- 이러면 홍대+입구 분리되어 ‘입구’에 해당하는 역도 모두 나옴. 서울대입구 등
- 관련된 최대한 많은 결과 보여줄 건지(쇼핑몰 추천), 가장 정확한 거만 보여줄 건지는 서비스의 형태에 따라 결정
- station.name.nori 필드
- 저장은 홍대, 입구, 홍대입구 모두 저장
- shingle 토큰 필터로 가공 처리: Ngram 토큰 필터와 비슷함.
- Ngram: house가 있으면 h, ho, hou, hous 모두 저장
- 원문이 짧아도 저장 용량이 매우 많음
- 다만 세세한 검색 필요한 경우(알파벳 하나만 쳐도 나올 수 있게) 좋음. 자동완성 기능 사용시
- Shingle: this is my sweet home 있으면 this is, is my 등을 저장. 구문 검색시 유용
- Ngram: house가 있으면 h, ho, hou, hous 모두 저장
- 검색은 스탠다드 애널라이저로 함. 그래서 홍대, 입구 등으로 검색해도 홍대입구가 나옴
- 게스트 계정 데모 가능: https://ela.st/cloud-kr
- ES: 쿼리도 json 형식으로 되어 있음. 위 사이트 들어가서 requests 보면 json 형태로 나옴
- 텍스트 뿐만 아니라 위치 정보도 담고 있기 때문에, 우버나 가까운 호텔 찾기 등에도 사용
- 우버 경우 같은 경로를 가더라도 실시간 정보에 따라 수요, 공급이 바뀌면서 가격이 바뀜
- 페이스북 그룹 elasticsearch.kr도 있음
- 책 정보, 블로그
IGNITE: 식습관 스몰데이터 분석을 통한 장트러블 극복기
- 장 트러블에 영향 있는 음식군
- 쾌변에는 생활 습관, 운동 등 여러 영향 있지만 경험적인 근거를 통해 식사 데이터 수집
- 메뉴들의 맵기, 차가운 것, 커피 등
- 쾌변한 정도, 화장실 간 시간/횟수
- 설명변수: 알코올, 우유 등. 변수 backward 제거
- 그래서 앞으로 화장실에서 보낼 시간 예측
4. 카트라이더 TMI 포스트모템
- tmi.nexon.com: 카트라이더 전적검색
- 넥슨에서 데이터로 하는 일들
- 대규모 작업장 제재
- 유저 이탈 예측
- 플레이스타일에 맞는 아이템 추천
- 발굴하기 어려운 패턴 찾아내기
- 당연한 패턴을 증명하는 것이 아니라 이게 어려운 것 같음(개인적으로)
- 성공하기 어려운 지름길 가는 방법 -> 데이터 분석
- 폭포에 걸치지 않아야 통과한다!
- 이런 인사이트들을 모아서 전달해주면 재밌지 않을까?
- 그래서 TMI 서비스 기획
- e스포츠 대중화, op.gg 같은 것들 이용
- 게임 생태계가 과거보다 복잡해짐
- 단순히 서비스 제공/사용(단방향 패턴)이 아니라 데이터 제공, 유저 커뮤니티 형성, 맞춤형 전략 등
- 넥슨 게임은 이보다는 덜 복잡
- 단방향 패턴 + 게임 공식 카페, 나무위키로 정보 공유
- 카트 유저스탯 프로젝트
- 어떤 카트바디가 좋을지, 내가 레이스를 얼마나 잘했는지 전달
- 이 트랙에서는 어디를 조심해야 하는지, 다음에는 어떤 트랙 타볼지 추천까지!
- Q: 플레이어별 경기 기여도도? 야구의 WAR 같이
- op.gg같은 플랫폼은 넥슨엔 왜 없나? 라는 의문에 전적검색 데이터 플랫폼 개발
- 기존 데이터 외의 새로운 로그를 남겨야 하는데, 이 자체가 게임 서버에 부담이 됨.
- 실시간 데이터를 안정적 으로 보여줘야 함
- 높은 불확실성 + 긴 파이프라인(데이터) ->
'해 보고 안 되면 빨리 접자'
- 9개월간 실 서비스 운영까지 개발
- 뭘 만들까?
- 우선 개발 구성원들이 유저로서 뭘 보면 좋을지 구상
- 보통 데이터분석은 서비스가 나온 이후에 함
- 이거는 처음부터 데이터 분석 통한 서비스!!
- 유저의 x,y 좌표 찍힌거 모으면 트랙이 나옴!! 흥미로웠던 시각화
- 사고다발 구역, 주행 경로 gif로 보여주기 되게 재밌어 보임
- 고수들의 주행경로: 부딪히지 않고 가는 궤적
- 초반 데모 만들어 보고 정말 재밌어 보이는지 확인
- 베타 개발(POC) 착수 단계(실제 서비스): 팀 규모 확장
- 이 단계에서도 모두 개발하지 말고, 가장 dependency가 적은 것부터 개발해서 간을 보자! 복잡한 api 필요 없는 부분부터.
- 카트라이더 겨울 리그 활성화로 인해, 선수들의 주행 경로 파악. 경로는 더 길어도 더 빠르게 타는 법 볼 수 있음
- 베타 출시 후 회고
- 주 단위로 목표 명확히 하여 개발한 후 평가하는 방식으로
- 하지만 오픈하고 잠깐 잘 되다가 사용자 수 급감..(GA 데이터)
- 평균 주행 속도 -> 이런 것들은 사용자들이 크게 관심 가지지 않음
- 이제 어떤 서비스가 더 필요한지 고민.. 설문조사 등 생각함
- 근데 전적 사이트는 전적이 핵심!! 내가 잘 탔는지를 보고자 하는 것
- 최근 500판을 모드에 따라 데이터 보여주기. DC 카갤, 네이버 블로그 등 바이럴 타기 시작함
- 사용자 수 안정화됨(감소 추세 보이지 않음)
- 정식 출시 및 대규모 업데이트
- 주간별 가장 잘 탄 경로 보여주기 등
- 근데 결국 내가 탄 정보 를 보고자 하는 건데, 이러면 데이터가 너무 많아 aws 비용 많이 나옴
- 가장 좋은 경로 보여주기 통해, 내가 그거 참고해서 주행할 수 있도록 함
- 정리
- 유저 전적 업데이트 후 사용자 수 대폭 증가
- 실패한 기능도 있음. ex) 카트바디 비교
- 그럴듯 해 보이는데, 순정 카트바디보단 업그레이드 부품 통한 강화가 많아서 실용성 없음
- 채널 파워의 중요성!!
- 배너 위치를 게임시작 옆에 두었더니, 이용자 수 30% 증가
- 컨텐츠 만들어 놓으면 알아서 들어오는 것이 아니라, 이런 비즈니스적인 영역도 중요
- 배너 종류 A/B 테스트
- 유튜버/파워 크리에이터의 힘: 컨텐츠 사용한 영상 남기면 넥슨 측에서 피드백하는 쌍방향 소통
- 짭방봇: TMI 사이트 크롤링하여 어느 선수가 잘하는지 시각화하여 보여줌
- 전적 서비스의 단점
- 메타 데이터를 관리해야 하는 인프라 비용이 많이 들게 됨
- 서비스 유지보수도 해야 함
- 게임 수명이 짧기 때문에, 이런 데이터 나오기 전에 서비스 종료되는 게임도 있음
- 넥슨 오픈 API도 있음!!
- 피파는 운영 중. 카트는 예정
5. 헬스케어 데이터 실습
- 헬스케어 전문 스타트업 라인웍스
- 작년 발표 이후 진전상황 보고
- 애플: 병원 갔다오면 진단 결과 보여주는 서비스
- 이런 관련 정보는 블로그에 있음
- 실습 내용: 집에 가서 할 수 있게 설명
- MIMIC-III 데이터: EMR 데이터
- 전자 메디컬 레코드. 구글 검색하면 논문, 블로그 등 많이 나옴.
- 공식 문서의 퀄리티가 굉장히 좋음
- 교육 + 테스트 이수해야 2,3일 후 데이터 다운 가능. 남용 막기 위해
- 타겟 정의 및 라벨링: 도메인 지식 필요한 부분
- 보통 사망. or 조건의 조합(응급입원 후 수술)
- 퇴원 후 30일 내 재입원: 이럴 경우 병원에 페널티 있음.
- 농담으로
퇴원 후 31일에 오는 환자
예측하기도 함
- 농담으로
- 사망 후 재방문하는 경우 있음 -> 이상한게 아니고 장기이식하는 경우.
- ‘한 번의 방문’ 안에 여러 데이터가 있음. 검사, 투약 등
- 사용할 변수 선택 -> 임베딩을 통한 코드 변환 방법이 있음 (Skip-gram)
- 단어(변수들)을 합쳐서 문장으로? 더 알아보기
- 의료 데이터의 경우 데이터 quality 문제 때문에 모델에 따라 성능에 월등한 차이가 나지 않음
- 그래서 Linear Regression, LightGBM 부터 시작
- 다른 데이터와 똑같이 프로세스 진행!
퇴원후 30일 이내 재입원
을 예측했을 때, AUROC가 65~70정도면 준수함. <60이거나 >80이면 뭔가 문제가 있거나 의심해 보야아 함
- Q&A
- 데이터 퀄리티 문제는 어떻게 해결했는지?
- 병원마다, 간호사마다 쓰는 코드나 적는 내용이 많이 다름. 자기들끼리만 알아먹을 수 있게 쓰기도 함
- 그래서 애플에서 하고 있는 것: 병원 레코드 표준화 가이드라인
- 의료 코드 등을 병원마다 달리 하지 않고 공통화할 수 있도록
- 병원에서 환자에게 데이터 주고 싶다면, 데이터 형식도 HL7 FHIR에 맞게 요청
- 구글에서는 fake data 만들기도 함
- 데이터 퀄리티 문제는 어떻게 해결했는지?
6. 데이터 분석팀과 이스포츠 선수단의 신뢰 쌓기 프로세스
- 23개국 4,500만명이 이용하고 있는 서비스
- 데이터 분석가와 현업 전문가의 컴케
- 서로 알고 있는 것과 원하는 방향(싱크 라고 표현)이 다르기 때문에, 업무에 대한 신뢰관계 형성이 어려움
- 스포츠 분야에서의 데이터 분석가
- 사무국 소속. 코칭스태프와 컴케
- 코칭스태프는 선수 출신이기 때문에, 자료 해석을 직관적으로 이해하는 데 어려움 느끼는 사람이 있음
- 하지만 최근 세이버매트릭스 활용으로 보편화되고 있음
- e스포츠 분야에서는?
- 대부분 게임은 생긴 지 5년 이내. 선수와 코칭스태프의 경험 차이가 크지 않음
- 주기가 매우 빠름
- 이스포츠 분석 방법론이 많이 존재하지 않음. 공신력 있는 지표의 부재 -> 신뢰관계 쌓기가 어려움
1단계: 친해지기
- 물리적인 시간 줄이기
- 처음에는 경기 결과 데이터 및 로그, 자기장 이동 경로, 선수 기록 EDA 등 코칭스탭에 제공
- 도움이 되지 않음!!
오늘 경기 질 거다
라고 예측할 수는 없으니까.
- PUBG 경기
- 16팀까지 참여
- 팀별로 암묵적인 랜드마크(떨어지는 위치)가 있음. 이걸 활용하여 게임 진행
- 팀 선수들의 이동 경로를 코칭스탭이 수기로 그림
- 이 사실을 알게 된 것도 몇 달이 걸림
- 하루에 8경기 정도 하면 리뷰 영상 보고 기록하는 데 4시간이 걸림
- -> 지도 그림을 팀마다 색 다르게 하여 자동으로 표시하는 작업 해줌!
- 그럼 코칭스탭은 이 사람이 뭘 하는지 알아감
- C(코치): 자기장 바뀌는 것도 그려 주세요!
- 이걸 넘어서 경기 상황 파악할 수 있는 대쉬보드 제공
2단계: 게임 내 현상을 잘 표현하는 분석 자료 만들기
- 주당 12라운드 경기. 40번 연습경기
- 국내 팀들은 서로 스타일 알 알지만, 국제대회에서는 전혀 모르는 스타일의 팀을 상대해야 함. 영상으로만 접하던 팀
- C: 국제대회에서 상대팀 특징 빠르게 알 수 있는 법?
- 한 시즌 동안 각 팀들의 동선을 한 화면에 뿌려서 확인
- 팀별로 동선 특징이 있음. 가운데 선호 or 구석 선호
- 각 팀들의 랜드마크와 이동 방식 찾아냄!
- 외곽 도는 플레이(장거리 사격 선호) or 중앙에 떨어져서 자기장 이동 방향대로 이동. 경로에 있는 적들 죽임
- 교전 거리 분포를 통해 다시 확인.
18m
vs10m
- 근데 이런 건 코칭스탭도 영상 분석하면서 확인할 수 있지만, 분석가가 게임 잘 알고 있다는 신뢰관계 형성
3단계: 데이터 분석으로만 얻을 수 있는 분석 자료 만들기 -> 분석다운 분석! C가 할 수 없는 일들
- C: 사격 능력 향상시킬 수 있는 자료?
- 맞는 부위에(총 5가지) 따라 데미지가 다름.
- 선수들 반응 속도는 5초 이내. 그래서 5초 안에 상대방 사살해야 함
- 선수들의 피격 정보를 봄
- A 선수는
헤드나 torso
주로 맞힘 or B 선수는몸통
- 좌우 반동에 신경 쓰라는 코칭!
- B 선수가 다음 시즌에 MVP 탐. 이 분석 때문인가?
- A 선수는
- 선수 퍼포먼스 측정 자료
- K/D, Damage 등
- 평가 기준, 선수들 포지션(ex: 엄호사격 하는 서포트)에 따라 이 기록이 아주 불리할 수 있음
- 더 세밀하게: 총알/유효 총알 1발 사용당 피해량, 피해 발생 확률
- 이걸 업그레이드 할 수 있는 코칭
- 평균 명중 횟수를 바탕으로 선수들이 자기가 어디에 위치하고 있는지 분포를 보여줌
- 자극제는 되지만, 독이 될 수 있음.
- 적절한 컴케 방식을 통해 전달해야 함
4단계: 하고 싶은 거 다 해!!
- 소통, 피드백 원활해진 상태
- 선수들 평가하는 자료 구체화
- 삼각형/사각형 가치 평가
- 팀 리빌딩 시 어느 부분을 더 채워야 하는지. 선수 영입에 참고
- 맵의 어느 위치에서 어느 무기가 잘 나오는지 분석
- 첫 출발 시간이 5분인데, 이 전에 교전 준비를 마쳐야 함
- 무기 안 나오는 곳은 죽어도 안 나옴!!
- 안 나오는 집은 버리고 가능한 범위 내에서 동선 짜도록 함
여담
- 팀 결과: OP GAMING 세계대회 우승
- 나 덕분에 우승한 것인가?
- 반대로 팀 성적이 좋지 않을 경우, 분석 quality가 좋지 않아서인가?
- 큰 규모의 팀에서 전통적인 코칭 하다가, 데이터분석 프로세스 도입할 경우 어려움이 많음
- 기존 규모에서 데이터분석가 1명 채용할 여력이 되는지?
7. 심슨의 역설
- 심슨의 역설을 표, 벡터, 2차원 산점도 등 다양한 방법으로 소개
- 데이터 분석시 ‘혹시 여기에도 심슨이!’ 하고 데이터를 쪼개보도록 하기
- Pearl, Judea. Statistician -> 심슨의 역설 논문
- 예시 2가지로 심슨의 역설 소개
- 신장결석 치료법 비교
- 야구 타율 데이터
- 두 변수의 상관관계에서도 나타남
- 회귀계수의 부호까지 바꿔버리기도 함
- 수능점수와 학점의 관계
- 전체 산점도에서는 별 상관관계가 없거나 음의 상관관계
- 근데 이걸 과별로 쪼개 보면, 강한 양의 상관관계
- 1인당 GDP와 삶의 만족도
- 일단 x,y 데이터부터 ‘1인당 GDP’(즉 평균)이고 ‘평균’삶의 만족도임
- 행복을 국가가 매기나? 행복은 개인이 느끼는 것
- 그래서 아무 인사이트가 없다고 할 수도 있음
- 정리
- 내가 분석한 모든 데이터에 심슨의 역설이 있을 수 있다!!
- Q&A
- 단계마다 결과가 다른데, 어디까지 파고들어야 되는가?
- 도메인 지식이 있는 상태에서 파고들어야 한다!
- 해석이 가능한 수준 에서 파는 것이 좋다
- 단계마다 결과가 다른데, 어디까지 파고들어야 되는가?
8. 데이터 + 야놀자 = 야놀자에서 데이터를 더하는 법
- 데이터 엔지니어링 관련
- 신사업 확장 -> 새로운 데이터가 들어오는 것
- 연관된 호텔을 추천했었다면, 항공권과 관련하여 여행지의 호텔을 추천해주는 것
- 구글 빅쿼리, aws 아테나 등 적절한 쿼리 엔진 사용
- 저장소 다양화, 배치/스트림(실시간) 데이터 이용
- 피드백 루프(서비스 운영하고 다시 로그 수집하여 개선하는 시스템)
- 지금은 사람보다 머신이 더 싼 시대!!
- 머신 대신 사람이 더 필요할 경우
- 아마존 같은 클라우드 머신 사용하면 운영, 유지보수에 필요한 작업 해결
- 데이터 서비스를 할 때 고민해야 할 점
- 머신러닝 엔지니어 vs 러닝머신 엔지니어
- 전문가가 아닌 이상 러닝머신 엔지니어로 정의
- 서비스의 데이터
- product 기준 profile(좋아요 수, CTR, View 등)
- user 기준 profile
- 머신러닝 엔지니어가 없는 상태에선, 파이프라인을 연결하는 것만으로 의미가 있음
- score 80% 모델을 이 파이프라인을 형성하여 만든 후에 숙련도를 쌓거나 머신러닝 엔지니어를 채용하는 방식으로
- 초기에는 블랙박스 모델보다는
설명할 수 있는
투명한 모델을 쓴 후 블랙박스 모델을 쓰는 것이 적절 - 에어비앤비: dynamic pricing. 수요자(싼 가격)와 공급자(비싼 가격)에 모두 맞게 책정
- 부킹닷컴: 수수료율을 높이는 대신 리스트 랭킹 높여 노출 더 많게 할 수 있음
9. 데이터 교육 프로덕트 매니저의 고민과 실패 그리고 성장 이야기
- Disruptive innovation model
- Gartner에서 제안한 키워드의 성장 곡선
- 실리콘 밸리에서 유행하면 우리 나라에는 3-4년 정도 뒤에 유행
- 2017년: 딥러닝 절정. 따라서 올해 지나면 관련 비즈니스가 활발해질 것
(1) 기술교육에서의 파괴적 혁신: 산업의 수요 - 교육이 필요는 적정할까?
- 채용 상의 문제
- 기업은 인재가 없다 하고, 개인은 들어갈 회사가 없음
- 기업이 어떤 사람이 필요한지에 대한 정의를 명확히 하지 않고 공고를 올리기 때문
- 교육에서 배울 수 있는 것 + 회사에서 배울수 있는 것이 합쳐져 Job Description을 작성함
- 정보의 격차를 이용하여
필요한 모든 것
을 알려주려는 교육기관들이 있음- 부스트캠프같이 정말 필요한 것만 선택적으로 가르치는 교육기관이 좋다고 생각
(2) 어떻게 배워야 하는가?
- 타겟을 정하고, 이 기술을 왜 배워야 하는지에 대한 의문을 해결한 후에 배우는 것이 적합함
- 회사에 들어가면 어차피 기술 배움. 그래서
어떤 기술을 배웠는지
보다어떤 것이든 빠르게 배우는지
가 더 중요할 수 있음
- 회사에 들어가면 어차피 기술 배움. 그래서
- 기술교육의 목표
- ‘들어서 좋았다’가 아니라 ‘적용 가능하여 의미가 있다!!’
(3) 그럼 뭘 배워야 하는가
- 데이터 시각화: 포트폴리오로는 좋지만 막상 회사에선 큰 쓸모가 없음. 디자이너에게 맡기기도 함
- 데이터베이스: 배우기 어렵지만 회사에서 유용
- 머신러닝/딥러닝: 이걸 쓸 만한 데이터가 있는 조직이 많지 않음. 주니어 데이터 분석가에게 유용한지는 의문
- 결국 필요한 것
- R/python 자체가 아니라, 라이브러리 활용 능력
- EDA 수준의 시각화, 기초통계 역
- 실험을 통한 계획/실행력이 중요
(4) 언제까지 배워야 하는가??
- 계속 대학원 가고 하다 보면 평생 공부할 수도 있음
- 목표하는 회사를 정하고, 그에 맞는 수준까지 공부하는 것이 적절
- 교과서대로 순서대로 배우다 보면, 많이 배운 것 같은 착각이 드는데 현업에서 필요한 수준과는 차이가 있을 수 있음
- 회사에선 그럴 여유 없으니, 필요한 부분을 배워 가면서 영역을 늘리는 것이 적절
- 동료를 활용한 지식학습
- 동료와 질문하면서 내가 얼마나 깊이 있게 이해하고 있는지 알아가기
- 현업에선 깊은 수준의 이해를 하고 있는가? 적용 가능한가? 이게 중요
- 혼자 공부하면 내가 생각한 것이 정답이라고 생각하기 쉬운데, 여러 명이서 하면 피드백 하면서 정답에 가까워질 수 있음
- 안전한 커뮤니케이션의 연습
- 내 의견을 전달하면서 동료의 의견까지 적용하는 것
- 궁극적으로 필요한 것: 탐색적 학습 & 전략적 집중(필요한 것을 찾아 선택과 집중!!)
- 가중치: 재미있는 것 < () < 가치있는 것