문제 정의의 중요성
- 앞으로 우리가 겪을 일은 대부분 문제로 정의할 수 있다
- 문제를 잘 풀기 위해서는 문제 정의가 필요하다
- 풀려고 하는 문제가 명확하지 않으면 무엇을 해야할지 결정하기 어려워짐
- 문제를 충분히 정의하고 고민하는 습관을 만드는 것이 중요!
문제 정의란?
- 본질 파악하는 과정으로 해결해야 하는 문제는 무엇이냐?, 그 문제를 해결하면 무엇이 좋을까?, 어떻게 해결하면 좋을까? 등을 고민하는 단계
- 현상 파악
- 어떤 일이 발생하고 있는가?
- 해당 일에서 어려움은 무엇인가?
- 해당 일에서 해결하면 좋은 것은 무엇인가?
- 추가적으로 무엇을 해볼 수 있을까?
- 어떤 가설을 만들어 볼 수 있을까?
- 어떤 데이터가 있을까?
- 목적, 문제 정의 → 계속 생각하기, 쪼개서 생각하기
- 무엇을 해결하고 싶은가?
- 무엇을 알고 싶은가?
- key point
- 문제를 쪼개서 파악
- 문제의 해결 방식은 다양하다
- 해결 방식 중에서 데이터로 해결할 수 있는 방법 고민
- 점진적으로 실행
- 데이터로 할 수 있는 일을 만들어서 진행하되, 알고리즘 접근이 항상 최상의 문제 해결 방법이 아니다.
- 처음부터 1년이 걸리는 방법을 제시하는 것이 아닌 당장 해결할 수 있는 간단한 방법부터 점진적으로 접근
- 프로젝트 설계
- 문제 정의 후, 프로젝트 설계를 최대한 구체적으로 하는 것이 좋구나
- 미리 많은 것을 대비한 상황에서 프로젝트를 설계하는 것이 좋다.
- 해결하려고 하는 문제 구체화
- 머신러닝 문제 타당성 확인
- 얼마나 흥미로운지가 아닌, 비즈니스적 관점으로 회사에 어떤 이익을 줄 수 있는지 고려
- 머신러닝 문제는 데이터로부터 어떤 함수를 학습하는 것으로 필요한 데이터의 종류와 기존 모델이 있는지 확인
- 목표 설정, 지표 결정
- 여러가지 시나리오를 고려하는 것이 좋음
- Label을 가진 데이터 혹은 유사 Label을 가진 데이터가 있는 경우는 바로 사용
- Label이 없는 데이터의 경우 직접 레이블링 하거나 레이블이 없는 상태에서 학습하는 방법 찾기
- 데이터가 아예 없는 경우에는 데이터 수집부터 진행
- 제약 조건
- 일정 : 프로젝트에 사용할 수 있는 시간
- 예산 : 사용할 수 있는 예산 고려
- 관련된 사람 : 이 프로젝트로 인해 영향받는 사람은?
- Privacy : Storage, 외부 솔루션, 클라우드 서비스 등에 대한 개인정보 보호 요구
- 기술적 제약 : 기존에 운영하고 있던 환경(인프라가 머신러닝 적용할 때 큰 제약일 수 있다)
- 윤리적 이슈 : 윤리적으로 어긋난 결과
- 성능
- base line : 새로 만든 모델을 base line과 비교함으로써 기준점을 잡을 수 있다.