Big data
데이터 팀의 역할
데이터 팀의 미션
신뢰할 수 있는 데이터를 바탕으로 부가가치 생성
데이터 팀의 목표 1
- 고품질의 데이터를 제공하여 정책 결정에 사용
- 결정과학 (Decision Science) 이라고 부르기도 함
- 데이터 참고 결정 (data informed decisions)을 가능하게 함
- 내가 길을 주도하고 데이터는 참고만 함
- 데이터 기반 결정 (data driven decisions)
- 데이터가 보여주는 길로 감
- 데이터 참고 결정 (data informed decisions)을 가능하게 함
데이터 팀의 목표 2
- 고품질 데이터를 필요할 떄 제공하여 사용자의 서비스 경험 개선
- 머신 러닝과 같은 데이터 기반 알고리즘을 통해 개선
- 개인화를 바탕으로한 추천과 검색 기능 제공
- 하지만 사람의 개입/도움이 반드시 필요 (human-in-the-loop)
- 머신 러닝과 같은 데이터 기반 알고리즘을 통해 개선
데이터 팀의 발전 - 1. 데이터 인프라 구축
- 데이터 인프라: Data Warehouse와 ETL
- Data warehouse: 회사에 필요한 모든 데이터들을 저장하는 중앙 데이터 베이스
- ETL(Extract, Transform, Load): 소스에 존재하는 데이터들을 데이터 웨어하우스로 복사해오는 코드를 지칭. 보통 파이썬으로 작성
- 데이터 인프라의 구축은 데이터 엔지니어가 수행
데이터 웨어하우스란
- 회사에 필요한 모든 데이터를 모아놓은 중앙데이터베이스 (SQL)
- 데이터의 크기에 맞게 어떤 데이터베이스를 사용할 지 선택
- 크기가 커진다면 AWS의 Redshift, GC의 BigQuery, Snowflake나 오픈소스 기반의 하둡/스팍을 사용하는 것을 추천: 이 모두 SQL을 지원
- 중요포인트는 프로덕션용 데이터베이스와 별개의 데이터베이스라는 점
- 데이터 웨어하우스 구축은 진정한 데이터 조직이 되는 첫번째 스텝
ETL 이란
- 다른 곳에 존재하는 데이터를 가져다 데이터 웨어하우스에 로드하는 작업
- Extract: 외부 데이터 소스에서 데이터를 추출
- Transform: 데이터의 포맷을 원하는 형태로 변환
- Load: 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재 (table 형태로)
- 이는 코딩을 필요로 하며, 가장 많이 쓰이는 framework은 Airflow
- Airflow는 오픈소스 프로젝트로 파이썬 3 기반
- 에어비앤비, 우버, 리프트, 쿠팡 등에서 사용
- AWS와 GC에서도 지원
- 흔한 데이터 소스의 경우 SaaS 사용가능
- FiveTran, Stitch Data, …
- Airflow는 오픈소스 프로젝트로 파이썬 3 기반
데이터 팀의 발전 - 2. 데이터 분석 수행
- 데이터 분석이란
- 회사와 팀별 중요 지표(metrics) 정의하고 대시보드 형태로 시각화
- 이외에도 데이터와 관련한 다양한 분석/리포팅 업무 수행
- 중요 지표의 예: 매출액, 월간/주간 액티브 사용자수, …
- 이는 데이터 분석가 (Data Analyst)가 맡는 일임
시각화 대시보드란
- 보통 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적
- 지표의 경우 3A(Accessible, Actionable, Auditable)가 중요
- Accessible: 쉬운 접근성
- Actionable: 해야할 일을 분명하게 표현
- Auditable: 감사할 방법이 있어야함(수식형태로)
- 지표의 경우 3A(Accessible, Actionable, Auditable)가 중요
- 가장 널리 사용되는 대시보드:
- 구글 클라우드의 Looker
- 세일즈포스의 Tableau
- MS의 Power BI
- 오픈소스 아파치 Superset
데이터 팀의 발전 - 3. 머신러닝/인공지능 적용
데이터 팀의 구성원
데이터 팀에는 누가 있는가
- 데이터 엔지니어
- 데이터 인프라 구축(DW, ETL)
- 데이터 분석가
- 데이터 웨어하우스의 데이터를 기반으로 지표를 만들고 시각화(대시보드)
- 내부 직원들의 데이터 관련 질문 응답
- 데이터 과학자
- 과거 데이터를 기반으로 미래를 예측하는 머신러닝 모델을 만들어 고객들의 서비스 경험을 개선(개인화 혹은 자동화 혹은 최적화)
- 작은 회사에서는 한 사람이 몇개의 역할을 동시에 수행하기도 함
데이터 엔지니어의 역할
- 기본적으로 소프트웨어 엔지니어
- 파이썬이 대세, 자바 혹은 스칼라 같은 언어도 아는 것이 좋음
- 데이터 웨어하우스 구축
- 데이터 웨어하우스를 만들고 이를 관리. 클라우드로 가는 것이 추세
- 관련해서 중요한 작업중의 하나는 ETL 코드를 작성하고 주기적으로 실행해 주는 것
- ETL 스케줄러 혹은 framework이 필요(Airflow가 대세)
- 데이터 분석가와 과학자 지원
- 데이터 분석가, 데이터 과학자들과 협업을 통해 필요한 툴이나 데이터를 제공해주는 것이 데이터 엔지니어의 중요한 역할 중 하나.
데이터 분석가의 역할
- 비지니스 인텔리전스를 책임짐
- 중요 지표를 정의하고 이를 대시보드 형태로 시각화
- 대시보드로는 Tableau와 Looker등의 툴이 가장 흔히 사용
- 오픈소스로는 Superset
- 이런 일을 수행하려면 비지니스 도메인에 대한 깊은 지식이 필요
- 중요 지표를 정의하고 이를 대시보드 형태로 시각화
- 회사 내 다른 팀들의 데이터 관련 질문 대답
- 임원들이나 팀 리드들이 데이터 기반 결정을 내릴 수 있도록 도와줌
- 질문들이 굉장히 많고 반복적이기에 어떻게 셀프서비스로 만들 수 있느냐가 관건
- 필요한 스킬셋
- SQL, 통계적 지식
- 비지니스 도메인에 관한 깊은 지식
- 보통 코딩을 하지는 않음
- 딜레마
- 보통 많은 수의 긴급한 데이터 관련 질문들에 시달림
- 많은 경우 현업팀에 소속도기도 함
- 소속감이 불분명하고 내 고과기준이 불명확해짐
- 데이터 분석가의 경우 조직구조가 더 중요함
데이터 과학자의 역할
- 머신러닝 형태로 사용자들의 경험 개선
- 문제에 맞춰 가설을 세우고 데이터를 수집한 후에 예측 모델을 만들고 이를 테스트
- 장시간이 필요하지만 이를 짧은 사이클로 단순하게 시작해서 고도화하는 것이 좋음
- 테스트는 가능하면 A/B 테스트를 수행하는 것이 더 좋음
- 문제에 맞춰 가설을 세우고 데이터를 수집한 후에 예측 모델을 만들고 이를 테스트
- 데이터 과학자에게 필요한 스킬셋
- 머신러닝/인공지능에 대한 깊은 지식과 경험
- 코딩능력
- 통계지식, 수학지식(통계지식이 더 중요)
- 끈기와 열정, 박사 학위가 도움 되는 이유중의 하나.
- 훌륭한 데이터 과학자란
- 열정과 끈기
- 다양한 경험
- 코딩능력
- 현실적인 접근방법
- 애자일 기반의 모델링(한큐에 좋은 모델을 만들기보다는)
- 딥러닝이 모든 문제의 해답은 아님
- 과학적인 접근방법
- 지표기반 접근
- 내가 만드는 모델이 목표는 무엇이고 그걸 어떻게 측정할 것인가
- 제일 중요한 것은 모델링을 위한 데이터의 존재 여부
머신러닝 모델링 사이클
- 가설
- 데이터 수집
- 분석
- 모델 개발
- 모델 론치
- 테스트 시작
폭포수 개발방법론 vs. 애자일 개발방법론
짧게 짧게 사이클을 돌면서
A/B 테스트란
- 온라인 서비스에서 새 기능의 임팩트를 객관적으로 측정하는 방법
- 의료쪽에서 무작위 대조 시험(Randomized Controlled Trial)
- 새로운 기능을 론치함으로 생기는 위험부담을 줄이는 방법
- 100%의 사용자에게 론치하는 것이 아니라 작게 시작하고 관찰 후 결정
- 실제 예제: 추천을 기계학습기반으로 바꾼 경우
- 먼저 5%의 사용자에게만 론치하고 나머지 95%의 사용자와 매출액과 같은 중요 지표를 가지고 비교
- 5% 대상으로 별문제 없으면 10% 20% 이런식으로 점진적으로 키우고 최종적으로 100%로 론치
- 5% 대상의 경우 별 효과가 없으면 그 이유에 대한 분석
- 보통 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교
- 한 그룹은 기존 기능에 그대로 노출(control 그룹)
- 다른 그룹은 새로운 기능에 노출(test 그룹)
- 가설과 영향받는 지표를 미리 정하고 시작하는 것이 일반적
- 지표의 경우 성공/실패 기준까지 생각해보는 것이 필요
데이터 팀의 조직구조
중앙집중 구조
- 모든 데이터 팀원들이 하나의 팀으로 존재
- 일의 우선순위는 중앙 데이터 팀이 최종결정
- 데이터 팀원들간의 지식과 경험의 공유가 쉬워지고 커리어 경로가 더 잘 보임
- 하지만 현업부서들의 만족도는 상대적으로 떨어짐
분산 구조
- 데이터 팀이 현업 부서별로 존재
- 일의 우선 순위는 각 팀별로 결정
- 데이터 일을 하는 사람들간의 지식/경험의 공유가 힘들고 데이터 인프라나 데이터의 공유가 힘들어짐
- 현업부서들의 만족도는 처음에는 좋지만 많은 수의 데이터 팀원들이 회사를 그만두게 됨
하이브리드 모델
- 가장 이상적인 조직구조
- 데이터 팀원들은 일부는 중앙에서 인프라적인 일을 수행하고 일부는 현업팀으로 파견식으로 일하되 주기적으로 일을 변경
- 데이터팀 안에서 커리어 경로가 만들어짐
모델 개발시 고려할 점
마찰지 생기는 지점 - 개발된 모델의 이양 관련
- 많은 수의 데이터 과학자들은 R을 비롯한 다양한 툴로 모델 개발
- 하지만 실제 프로덕션 환경은 다양한 모델들을 지원하지 못함
- 개발/검증된 모델의 프로덕션 호나경 론치시 시간이 걸리고 오류 가능성이 존재
- 심한 경우 모델관련 개발을 다시 해야함(피쳐 계산과 모델 실행 관련)
모델 개발시 꼭 기억할 포인트
- 누군가 모델 개발부터 최종 론치까지 책임질 사람이 필요
- 모델 개발은 시작일 뿐이고 성공적인 프로덕션 론치가 최종적인 목표
- 이 일에 참여하는 사람들이 같이 크레딧을 받아야 협업이 더 쉬워짐
- 최종 론치하는 엔지니어들과 소통하는 것이 중요
- 모델 개발 초기부터 개발/론치 과정을 구체화하고 소통
- 모델 개발시 모델을 어떻게 검증할 것인지
- 모델을 어떤 형태로 엔지니어들에게 넘길 것인지
- 피쳐 계산을 어떻게 하는지, 모델 자체는 어떤 포맷인지
- 모델을 프로덕션에서 A/B 테스트할 것인지
- 한다면 최종 성공판단 지표가 무엇인지
- 개발된 모델이 바로 프로덕션에 론치가능한 프로세스/프레임웍이 필요
- 예를 들어 R로 개발된 모델은 바로 프로덕션 론치가 불가능
- 트위터: 데이터 과학자들에게 특정 파이썬 라이브러리로 모델개발 정책화
- 툴을 하나로 통일하면 제반 개발과 론치 관련 프레임웍의 개발이 쉬워짐
- AWS의 SageMaker: 머신러닝 모델개발, 검증, 론치 프레임웍
- 검증된 모델을 버튼 클릭 하나로 API 형태로 론치 가능
- Google Cloud와 Azure 도 비슷한 프레임웍 지원
- 첫 모델 론치는 시작일 뿐
- 론치가 아닌 운영을 통해 점진적인 개선을 이뤄내는 것이 중요
- 데이터 과학자의 경우 모델 개발하고 끝이 아니라는 점 명심
- 결국 피드백 루프가 필요
- 운영에서 생기는 데이터를 가지고 개선점 찾기
- 검색이라면 CTR 을 모니터링하고 모든 데이터를 기록
- 주기적으로 모델을 재빌딩
- 온라인 러닝: 모델이 프로덕션에서 사용되면서 계속적으로 업데이트되는 방식의 머신러닝
- 운영에서 생기는 데이터를 가지고 개선점 찾기
데이터 관련 교훈
데이터를 통해 매출이 생겨야 한다
- 어느 조직이건 회사에서의 존재 이유는 매출 창조 혹은 경비 절감
- 데이터 인프라와 데이터 팀원의 몸값은 상대적으로 높음
- 직접적이건 간접적이건 데이터를 통해 회사 수익에 긍정적인 영향을 끼쳐야 함
- 데이터 조직의 수장의 역할이 아주 중요
- 위와 옆으로 잘 매니지를 해야 함
- 다시 한번 데이터 인프라의 구성이 첫 번째라는 점을 명심하되 단기적으로 좋은 결과를 낼 방법을 찾아야 함
데이터 인프라가 첫 번째 스텝
- 데이터 인프라 없이는 데이터 분석이나 모델링은 불가능
- 하지만 아주 작은 회사에서 생존이 더 중요한 문제라 데이터 인프라는 조금더 성장한 뒤에 걱정해도 됨
- 첫 번째 팀원은 인프라 구축 이외에도 약간의 분석/모델링 스킬이 있는 사람이 최적
- 고려점
- 클라우드 vs 직접 구성
- 배치 vs 실시간
데이터의 품질이 아주 중요
- Garbage In Garbage Out
- 데이터 과학자가 가장 많은 시간을 쏟는 분야
- 데이터 청소
- 모델링에 드는 시간을 100이라고 하면 그 중 70은 데이터 클린업에 들어감
- 중요 데이터의 경우 좀더 품질 유지에 노력이 필요
- 어디에 데이터가 있는지
- 이 데이터의 품질에 혹시 문제가 있는지 계속적으로 모니터링
항상 지표부터 생각
- 무슨 일을 하건 그 일의 성공 척도를 처음부터 생각
- 또한 나름대로 가설을 세우는 것이 인사이트를 키우는 데 큰 도움이 됨
- 지표의 계산에 있어서 객관성이 중요
- 계산된 지표를 아무도 못 믿는다면 큰 문제
- 지표를 어떻게 계산할 것인지 그리고 이걸 다른 사람들에게 어떻게 설명할 지 고려
가능하면 간단한 솔루션으로 시작
- 모든 문제를 딥러닝으로 해결해야 하나
- IF 문 몇개의 간단한 논리로 해결할 수 있는지 부터 고민
- 실제 회사에서 딥러닝으로 문제를 해결하는 경우는 드움. 왜 동작하는지 설명도 힘들고 개발과 론치 모두 시간이 걸림
- 반복 기반의 점진적인 개발방식 vs. 한 큐에 모델 만들기
- 후자는 시간만 오래 걸리고 최종 성과는 안 좋을 확률이 높음
- 전자로 가면서 원하는 결과가 나오면 그 때 중단. 더 개선할 필요 없음.
Leave a comment