본문 바로가기

~2023/데이터 엔지니어로 성장하기

데이터 직군의 이해 [데이터 분석가] 그리고 A/B 테스트!

반응형

 

안녕하세요

코딩교육자 헨리입니다.

 

오늘은 데이터 커리어 분야의 다양한 직군 중에

데이터를 활용하여 유의미한 서비스 모델을 개발하는 데이터 과학자를 배웠습니다.

이번 강의를 들으면서 멋진 머신러닝 모델을 만들기 위해서는

유의미한 데이터가 우선되어야 한다는 사실을 알게 되었습니다.

아무리 잘하는 데이터 과학자라도, 데이터가 제공되지 않는다면, 큰 힘을 발휘할 수 없다는 것이죠.

 

아래부터는 제가 노트 정리한 내용들입니다.

(어투가 변경될 수 있으니, 양해 부탁드립니다.)

 

 

데이터 과학자의 역할

# 머신러닝의 형태로 사용자들의 경험을 개선

 - 문제에 맞춰 가설을 세우고 데이터를 수집한 후에 예측 모델을 만들고 이를 테스트하는 역할

  * 장시간이 필요하지만 이를 짧은 사이클로 단순하게 시작해서 고도화하는 것이 좋다

 - 테스트는 가능하면 A/B 테스트를 수행하는 것이 더 좋다.

 

데이터 분석가는 내부 직원들을 상대하지만,

데이터 과학자는 외부 고객들을 상대해야 한다.(우리 서비스를 쓰는 실제 고객들)

 

# 데이터 과학자에게 필요한 스킬셋

 - 머신러닝/인공지능에 대한 깊은 지식과 경험

 - 코딩 능력 (파이썬과 SQL)

 - 통계 지식, 수학 지식

 - 끈기와 열정, 박사 학위가 도움이 되는 이유 중의 하나

 

가설을 먼저 잘 세우고, 어떤 문제를 해결할 것인지 이야기를 해보고,

해당 가설이 우리가 달성하고자 하는 목표에 중요한 과정이 될 것 같으면,

프로젝트를 진행한다.

 

가설: 제대로 해결되면, 어떤 지표가 어떻게 개선이 될 것인지 자세하게 세우는 것이 좋다.

짧은 사이클로 여러번 반복을 해서, 내가 만들고자 하는 모델을 점진적으로 고도화한다.

 

 

그렇다면 훌륭한 데이터 과학자란 무엇일까?

- 열정과 끈기

- 다양한 경험

- 코딩능력

- 현실적인 접근 방법?

 * 애자일 기반의 모델링(간단하게 시작해서, 점진적으로 고도화 시키는 것)

 * 딥러닝이 모든 문제의 해답은 아님을 명심하자.

- 과학적인 접근 방법

 * 지표기반 접근(정의가 명확하고 계산이 가능한 지표를 개선해야 한다.)

 * 내가 만드는 모델이 목표는 무엇이고 그걸 어떻게 측정할 것인가

 

 

제일 중요한 것은 모델링을 위한 데이터의 존재 여부라고 생각한다.!!

 

 

한기용 강사님은 데이터 과학자가 모델을 개발을 할 때, 점진적으로 애자일하게 개발하는 것이 좋다고 하셨는데,

애자일 개발방법론이란 뭘까?

 

 

세상이 느리게 굴러갈 때는 폭포수 개발방법론이 가능했다.

디자인 하는 동안 세상이 바뀌지 않았다.

 

그러나 오늘같은 세상에서는 디자인 하나가 세상이 바뀌게 된다.

그로 인해, 보통 2주 주기를 잡고 짧게 개발하고 구현하고 배포하고, 이 과정을 반복적으로 개발해나가는 것이

더 좋다고 생각이 되어졌다.

 

 

머신러닝 모델을 개발하는 과정을 아래와 같다.

 

모델빌딩 테스트와 A/B 테스트는 엄연히 다르다.

A/B 테스트가 조금 더 실제 사용자 환경과 밀접하게 연결된다.

위 사이클을 돌면서 점진적으로 부족한 부분이 있으면 개선하고, 더 나은 모델로 만들어가는 과정을 거칠 수 있다.

 

 

한번에 모든 것을 해결하려고 하는 것이 아니라, 짭게 한바퀴를 돌면서 

미리미리 다양한 형태의 가능성들을 빠르게 파악하면서 개발하는 애자일 방법론이 요즘 트렌드이다.

 

 

그럼 A/B 테스트에 대해서 알아보자

 

 

 

Control그룹과 Variation 그룹을 테스트하며 그 차이를 살펴본다.

 

ex) Udemy에서 상품 추천서비스를 일부는 규칙기반으로 하고, 나머지는 머신러닝 모델로 하면서,

상품 구매율에 대한 어떤 차이가 있는지 확인해보는 것.

 

A/B 테스트란?

# 온라인 서비스에서 새 기능의 임팩트를 객관적으로 측정하는 방법

 - 의료쪽에서 무작위 대조 시험(Randomized Controlled Trial)에 해당

# 새로운 기능을 론치함으로 생기는 위험부담을 줄이는 방법

 - 100%의 사용자에게 론치하는 것이 아니라 작게 시작하고 관찰 후 결정

 - 어떤 지표를 가지고 성공/실패를 결정할지 정해야 함.

 - 예제: 추천을 머신러닝 기반으로 바꾼 경우

  -- 먼저 5%의 사용자에게 론치. 나머지 95%의 사용자와 매출액과 같은 중요 지표를 기반 비교

  -- 5% 대상으로 별문제 없으면 10%, 20% 이런 식으로 점진적으로 키우고 최종적으로 100%로 론치(잘 동작함을 알게 되면)

 

100%로 되면 실제 프로덕션으로 론치가 되는 것.

 

# 보통 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교

 - 한 그룸은 기존 기능에 그대로 노출(control)

 - 다른 그룹은 새로운 기능에 노출 (test)

# 가설과 영향받는 지표를 미리 정하고 시작하는 것이 일반적(자기 좋을대로 해석하지 않기 위해)

 - 지표의 경우 성공/실패 기준까지 생각해보는 것이 필요

# A/B 테스트의 분석은 과학이 아닌 예술에 가깝다.

 

 

 

반응형