1. 머신러닝 프로젝트 Flow
1.1 문제 정의의 중요성
How보다 Why에 집중
문제 정의란?
- 본질을 파악하는 과정
- 해결해야 하는 문제는 무엇이고 그 문제를 해결하면 무엇이 좋을까? 어떻게 해결하면 좋을까?
1.2 현상 파악
어떤 현상이 발견되었는가? 현재 상황을 파악함
- 어떤 일이 발생하고 있는가?
- 해당 일에서 어려움은 무엇인가?
- 해당 일에서 해결하면 좋은 것은 무엇인가?
- 추가적으로 무엇을 해볼 수 있을까?
- 어떤 가설을 만들어 볼 수 있을까?
- 어떤 데이터가 있을까?
1.3 구체적인 문제 정의
문제 정의는 결국 현상을 계속 쪼개고, 그 문제를 기반으로 어떤 어려움을 겪고 있는지를 파악함 데이터로 할 수 있는 일을 만들어서 진행하되, 무조건 알고리즘 접근이 최상은 아니라는 방법을 제시할 수도 있어야 함(간단한 방법부터 점진적인 접근) 우리는 시간의 제약을 받고 있기 때문!
1.4 프로젝트 설계
문제 정의
- 최적화할 Metric 선택
- 데이터 수집, 레이블 확인
- 모델 개발
- 모델 예측 결과를 토대로 Error Analysis. 잘못된 라벨이 왜 생기는지 확인
문제 정의에 기반해서 프로젝트 설계
- 해결하려고 하는 문제 구체화
- 머신러닝 문제 타당성 확인
- 목표 설정, 지표 결정
- 제약 조건(Constraint & Risk)
- 베이스라인, 프로토타입
- 평가(Evaluation) 방법 설계
머신러닝이 사용되면 좋은 경우
- 목적 함수 : 학습을 위한 목적 함수를 만들 수 있어야 함
- 머신러닝 알고리즘은 유용한 패턴을 학습하거나 노이즈를 패턴으로 학습하는 경우도 존재
- 지도 학습은 정답 레이블과 예측 결과의 차이로 정의할 수 있음
- 복잡성 : 패턴이 복잡해야 함
- 주소 검색 문제 → 우편 번호에 기반해서 정렬되어 있으면 머신러닝이 필요하지 않음
- 집 가격을 예측할 경우 복잡한 패턴이 필요할 수 있음 : 동네의 평균 가격, 공원 유무, 침실 수, 건축 연식, 학교 수, 자연 재해 등
- 데이터 존재 여부 : 데이터가 존재하거나 수집할 수 있어야 함
- 학습할 데이터가 없으면 프로젝트 진행 전에 데이터 수집부터 진행해야 함
- 데이터가 없다면 룰베이스 알고리즘을 만든 후, 데이터 수집 계획부터 수립
머신러닝이 사용되면 좋지 않은 경우
- 비윤리적인 문제
- 간단히 해결할 수 있는 경우
- 좋은 데이터를 얻기 어려울 경우
- 한번의 예측 오류가 치명적인 결과를 발생할 경우
- 시스템이 내리는 모든 결정이 설명 가능해야 할 경우
- 비용 효율적이지 않은 경우
프로젝트의 목표
- Goal : 프로젝트의 일반적인 목적, 큰 목적
예를 들어, 랭킹 시스템에서 고객의 참여(Engage)를 최대화하고 싶은 Goal이 있는 경우
- Objectives : 목적을 달성하기 위한 세부 단계의 목표(구체적인 목적)
- NSFW(Not Safe For Work) 컨텐츠 필터링을 통해 사용자에게 불쾌감을 줄임 - 참여에 따른 게시물 랭킹 선정 : 사용자가 클릭할 가능성이 있는 게시물 추천
- 베이스라인 이후에 간단한 모델을 만들면 피드백을 들어보면 좋음
- 회사의 동료들에게 모델을 활용할 수 있는 환경 준비
- 프로토타입을 만들어서 제공
- Input을 입력하면 Output을 반환하는 웹페이지
- 이왕이면 좋은 디자인을 가지면 좋지만, 여기선 모델의 동작이 더 중요
- HTML에 집중하는 것보다, 모델에 집중하는게 중요 - 이를 위해 Voila, Streamlit, Gradio 등을 활용
Multiple Objective Optimization
- 최적화하고 싶은 목적 함수가 여러가지 있는 경우, 서로 충돌할 수 있음
- 품질에 따른 게시물 랭킹 선정 vs 참여에 따른 게시물 랭킹 선정
게시물이 매우 매력적이지만 품질이 의심스러울 경우엔?
성능
- Baseline : 새로 만든 모델을 무엇과 비교할 것인가? 기존에 사람이 진행하던 성능 or 간단한 회귀
- Threshold : 확률값이 0.5 이상일 경우 강아지라고 할 것인지, 0.7 이상일 경우 강아지라고 할 것인지?
- Performance Trade-off : 속도가 빠른데 Acc 0.95 vs 속도는 조금 더 느린데 Acc 0.93
- 해석 가능 여부 : 결과가 왜 발생했는지 해석이 필요할까? 해석이 필요한 사람은?
- Confidence Measurement : False Negative가 있어도 괜찮은지? 오탐이 있으면 안되는지?
1.5 지표 결정
1.6 Action(모델 개발 후 배포 & 모니터링)
앞서 정의한 지표가 어떻게 변하는지 파악하기
- 현재 만든 모델이 어떤 결과를 내고 있는가?
- 잘못 예측하고 있다면 어떤 부분이 문제일까?
- 어떤 부분을 기반으로 예측하고 있을까?
- Feature의 어떤 값을 사용할 때 특히 잘못 예측하고 있는가?
1.7 추가 원인 분석
새롭게 발견한 상황을 파악해 어떤 방식으로 문제를 해결할지 모색
그 과정에서 앞서 진행한 과정을 반복
2. 비즈니스 모델
2.1 비즈니스 모델 파악하기
누군가 산업에 대해 정리해둔 Paper가 있는지 찾아보기
예) awesome mobility machine learning github
해당 산업군에서 사용하는 기술
=> 해당 비즈니스에 어떻게 적용할 수 있을까
=> 추가 가치 발견
=> 머신러닝, AI가 비즈니스에 영향을 주는 과정을 이해
'부스트캠프 AI Tech 2기 > 2기 Product Serving' 카테고리의 다른 글
Linux & Shell Command (0) | 2021.12.10 |
---|---|
웹 서비스 형태 - Streamlit (0) | 2021.12.09 |
Notebook 베이스 - Voila (0) | 2021.12.09 |
Product Serving (0) | 2021.12.07 |
Product Serving 개론 (0) | 2021.12.07 |