Study/AI

[ML] 머신러닝 프로젝트 사이클

motti 2023. 5. 7. 13:38
반응형

문제정의의 중요성

머신러닝 알고리즘, 개발 능력도 중요하지만 근본적인 사고능력도 중요

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, 드라이버 파트너(수익 올리기), 도시 발전 촉진, 비즈니스

반응형