반응형
문제정의의 중요성
머신러닝 알고리즘, 개발 능력도 중요하지만 근본적인 사고능력도 중요
HOW보다 WHY에 집중
문제해결 FLOW
문제를 해결하기 위한 Flow
- 현상 파악
- 목적, 문제 정의 => 계속 생각하기, 쪼개서 생각하기
- 프로젝트 설계
- Action
- 추가 원인 분석
1. 현상 파악
어떤 현상이 발견되었는가? 현재 상황을 파악함
- 어떤 일이 발생하고 있는가?
- 해당 일에서 어려움은 무엇인가?
- 해당 일에서 해결하면 좋은 것은 무엇인가?
- 추가적으로 무엇을 해볼 수 있을까?
- 어떤 가설을 만들어 볼 수 있을까?
- 어떤 데이터가 있을까
2. 문제 정의
- 무엇을 해결하고 싶은가?
- 무엇을 알고 싶은가?
- 문제 정의는 결국 현상을 계속 쪼개고, 그 문제를 기반으로 어떤 어려움을 겪고 있는지를 파악함
- 데이터로 할 수 있는 일을 만들어서 진행하되, 무조건 알고리즘 접근이 최상은 아니라는 방법을 제시할 수도 있어야 함(간단한 방법부터 점진적인 접근)
여기서 인지하면 좋은 내용
- 문제를 쪼개서 파악해보자
- 문제의 해결 방식은 다양하다
- 해결 방식 중에서 데이터로 해결할 수 있는 방법을 고민해보기
- 점진적으로 실행하기
3. 프로젝트 설계
머신러닝 프로젝트 과정 - 현실
- 문제 정의
- 최적화할 Metric 선택
- 데이터 수집, 레이블 확인
- 모델 개발
- 모델 예측 결과를 토대로 Error Analysis. 잘못된 라벨이 왜 생기는지 확인
- 다시 모델 학습
- 더 많은 데이터 수집
- 다시 모델 학습
- 2달 전 테스트 데이터에선 성능이 좋지만 어제 데이터엔 성능이 좋지 않음
- 모델을 다시 학습함
- 모델 배포
- 최적화할 Metric이 실제로 잘 동작하지 않아 Metric을 수정
- 다시 시작 ㅠ
여기서 드는 생각 와인프로젝트는 딱 추천해주고 끝인 느낌(데이터를 바탕으로 엔지니어링이나 피쳐를 더 만들 수 있을까란 생각도 들긴 함, 모델을 직접만든다는 것을 목표로? 좀 더 사용자 친화적인, 서비스화 할 수 있는 느낌으로??
<aside> 💡 “문제 정의 후, 프로젝트의 설계를 최대한 구체적으로 하는 것이 좋구나..!”
</aside>
문제 정의에 기반해서 프로젝트 설계
- 1)해결하려고 하는 문제 구체화
- 2)머신러닝 문제 타당성 확인
- 3)목표 설정, 지표 결정
- 4)제약 조건(Constraint & Risk)
- 5)베이스라인, 프로토타입
- 6)평가(Evaluation) 방법 설계
2)머신러닝 문제 타당성 확인
- 머신러닝 문제를 고려할 때는 얼마나 흥미로운지가 아니라 제품, 회사의 비즈니스에서 어떤 가치를 줄 수 있는지 고려해야 함
- 머신러닝 문제는 결국 데이터로부터 어떤 함수를 학습하는 것
- 머신러닝 문제 타당성 평가하기 : 복잡도를 평가하는 방법은 필요한 데이터의 종류와 기존 모델이 있는지 살펴보기(SOTA나 논문)
- 머신러닝은 모든 문제를 해결할 수 있는 마법의 도구가 아님 ,머신러닝으로 해결할 수 있는 문제지만 머신러닝 솔루션이 최적이 아닐 수도 있음
- 머신러닝이 사용되면 좋은 경우
- 패턴 : 학습할 수 있는 패턴이 있는경우(책 추천의 경우에서 사람마다 평점을 주는 패턴이 있었다면 머신러닝 또는 정형데이터라서 머신러닝 이런 근거)
- 목적 함수 : 학습을 위한 목적 함수를 만들 수 있어야 함.
- 복잡성 : 패턴이 복잡해야 함
- 데이터 존재 여부 : 데이터가 존재하거나 수집할 수 있어야 함.(데이터가 없다면 룰베이스 알고리즘 만든 후, 데이터 수집 계획 수립)
- 반복 : 사람이 반복적으로 실행하는 경우
- 머신러닝이 사용되면 좋지 않은 경우
- 비윤리적인 문제
- 간단히 해결할 수 있는 경우
- 좋은 데이터를 얻기 어려울 경우
- 한번의 예측 오류가 치명적인 결과를 발생할 경우
- 시스템이 내리는 모든 결정이 설명 가능해야 할 경우
- 비용 효율적이지 않은 경우
3)목표 설정, 지표 결정
프로젝트의 목표
- Goal : 프로젝트의 일반적인 목적, 큰 목적
- Objectives : 목적을 달성하기 위한 세부 단계의 목표(구체적인 목적)
여기서 고려할 점
- 윤리적인 문제
- 데이터가 없는 경우(직접 만들거나 유사레이블을 써야할 수도 있음)
- 목적함수가 여러개일 경우(분리하는 것이 좋음)
4)제약 조건
- 일정
- 예산
- 관련된 사람
- Privacy
- 기술적 제약
- 윤리적 이슈
- 성능
- Baseline : 새로 만든 모델과 비교 가능, 간단한 회귀
- Threshold : 확률값이 0.5면 참? 0.7이상이면 참?
- Performance Trade-off : 모델 속도와 성능의 반비례
- 해석가능여부
- Confidence Measurement : False Negative가 있어도 되는지
5) 베이스라인, 프로토타입
- 모델이 더 좋아졌다고 판단할 수 있는 베이스라인 필요
- 꼭 모델일 필요는 없고 0.5 이상이면 랜덤보다 좋다고 할 수도 있음.
- 유사문제 SOTA확인
- 프로토타입 제공
- Input을 입력하면 Output을 반환하는 웹페이지
- 이왕이면 좋은 디자인을 가지면 좋지만, 여기선 모델의 동작이 더 중요
- HTML에 집중하는 것보다, 모델에 집중하는게 중요
- 이를 위해 Voila, Streamlit, Gradio 등을 활용
6) Metric Evaluation
앞에서 Objectives를 구해서 모델의 성능 지표는 확인함 모델의 성능 지표와 별개로 비즈니스 목표에 영향을 파악하는 것도 중요
- 앞선 문제를 해결할 경우 어떤 지표가 좋아질까?를 고민해야 함
- 이 부분은 작게는 모델의 성능 지표(RMSE)일 수 있고, 크게는 비즈니스의 지표일 수 있음(고객의 재방문율, 매출 등)
- 지표를 잘 정의해야 => 우리의 Action이 기존보다 더 성과를 냈는지 아닌지를 파악할 수 있음(이를 위해 AB Test를 진행하기도 함)
- 만든 모델이 비즈니스에 어떤 임팩트를 미쳤을지(매출 증대에 기여, 내부 구성원들의 시간 효율화 증대 등) 고려하면서 만드는 사람
대부분 기업 : 이익 극대화를 목표 머신러닝 프로젝트는 궁극적으로 수익을 높이는 것이 목표 간접적으로 기업의 이익 극대화에 영향을 미칠 수 있음
- 전환율 증대 => 매출 증대
- 반복 업무 자동화 => 내부 직원의 리소스 효율로 인한 비용 절감
- 간접적으로 더 높은 고객 만족도 창출, 웹사이트에서 보내는 시간 늘리기 등
- 개인화된 솔루션을 제공해 서비스를 더 많이 사용하도록 만들어 매출을 증가시킬 수 있음
4. Action(모델 개발 후 배포 & 모니터링)
앞서 정의한 지표가 어떻게 변하는지 파악하기
- 현재 만든 모델이 어떤 결과를 내고 있는가?
- 잘못 예측하고 있다면 어떤 부분이 문제일까?
- 어떤 부분을 기반으로 예측하고 있을까?
- Feature의 어떤 값을 사용할 때 특히 잘못 예측하고 있는가?
5. 추가 원인 분석
- 새롭게 발견한 문제 해결 방법 모색
비즈니스 모델
회사에서 중요한 것은 비즈니스 모델! 곧 이익
즉, 비즈니스에 대한 이해도가 높을수록 문제 정의를 잘 할 가능성이 높다
비즈니스 모델 파악하기
- 회사의 비즈니스 파악하기
- 데이터를 활용할 수 있는 부분은 어디인가? (Input)
- 모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)
Case study - Uber(우버)
Uber : 차량 서비스, Uber Eats, 드라이버 파트너(수익 올리기), 도시 발전 촉진, 비즈니스
반응형
'Study > AI' 카테고리의 다른 글
[OPEN API] 파이썬으로 한국거래소 코스피 종가 데이터 수집하기 (3) | 2024.11.09 |
---|---|
RL 기초익히기 및 다양한 기법에 대해 (1) | 2024.03.21 |
[AI] 모델 기반 협업필터링 (0) | 2023.04.02 |
[AI] Collaborative Filltering(협업필터링) (0) | 2023.04.02 |
[AI] 추천시스템 기초 (0) | 2023.04.02 |