Identifying Good Problems for ML
해당 섹션에서는 좋은 ML 문제들의 특징에 대해서 살펴봅니다.
명확한 유스 케이스 (Use Case)
해답이 아니라, 문제부터 시작하세요. ML 하나로 모든 문제들을 뚝딱 해결할거라 생각하지 마세요.
전통적인 프로그래밍 방식으로 해결하기 어렵다고 생각하는 문제를 들여다봅시다. 예를 들어, Smart Reply같은 것이죠.
이러한 시스템들은 기존의 프로그래밍으로는 명확한 접근 방식을 생각해낼 수 없습니다. 반면에 ML을 통해서 여러 데이터들 간의 패턴을 파악하고 적용하면서 이런 문제들을 해결해낼 수 있죠. ML은 도구함 속 한가지 도구로 생각하는 것이 맞습니다. 오직 적절한 상황에서만 사용하는 그런 도구일 뿐이죠.
ML이 필요한지에 대해 파악하기 위해서는 다음과 같은 질문들에 대해 스스로 생각해볼 필요가 있습니다.
- 현재 내가 무엇인가 만들던 도중 마주친 문제가 무엇인가?
- 그것이 ML로 해결하기에 적합한 문제인가?
데이터에 집중하기 이전에 문제부터 파악하라
본인이 세운 가정이 틀릴 상황에 대해 준비하세요.
어떤 문제를 명확하게 이해했다면, 최상의 모델을 만들기 위해 몇가지 잠재적인 솔루션을 세워볼 수 있을겁니다. 제대로 동작하는 모델을 만들기 전에는 몇가지 솔루션들을 시도해봐야 할 것입니다.
탐색적 데이터 분석(EDA)은 데이터를 이해하는 데는 도움이 될 수 있지만, 이전에 보지 못했던 데이터에 대해서도 동일한 패턴이 일반적으로 발생한다는 것을 직접 확인하기 전에는 이에 대해 확신할 수 없습니다. 이러한 부분을 정확하게 체크하지 않으면, 스테레오타입(고정관념)과 바이어스(편향)에 빠질 수 있다는 점을 주의하세요.
본인 팀의 로그에 의존하세요.
ML은 수많은 데이터들을 필요로 합니다.
애초에 ML 작업을 위해 특별한 형태로 수집된 데이터가 가장 유용합니다. 하지만, 실제 상황에서는 이러한 형태로 이루어지기 어려울 수 있으며, 그런 경우 가깝게 위치한 모든 데이터에 의존해야 합니다. 비용과 제품 로그 등에 대해 알고 있다면, 이를 통해 더 적합할 모델을 구축할 수 있습니다.
얼마나 많이요? 그것은 해결하고자 하는 문제에 따라 다릅니다. 그러나 일반적으로 모델은 더 많은 데이터를 활용할 수록 더 좋은 예측을 할 수 있습니다. 기본적인 선형 모델의 경우 적어도 수천 개의 예시를, 신경망의 경우에는 수십 만개의 예시를 갖는 것이 일반적으로 좋습니다. 이 정도의 데이터를 모을 수 없는 상황이라면, ML이 아닌 솔루션을 우선적으로 고려할 필요가 있습니다.
예측력
Feature들은 예측력을 포함하고 있습니다.
경마에서 어떤 말이 좋은 성적을 보일지 예측하는 모델을 만들고 싶다고 합시다. 여기서 우리는 말의 눈 색깔을 Feature로 사용하기로 결정했다고 합시다. 우리의 가설은, "눈 색깔을 통해 말이 눈병에 걸리기 쉬운지를 예측하고, 이것이 말의 신체능력에 영향이 줄 것"이라는 것이죠. 이러한 가설은 틀릴지도 모르고, 추후 증거에 기초하여 가설을 기각할 수도 있습니다. 즉, 눈 색깔이 모델의 향상에 도움을 주는 Feature가 되지 않을지도 모른다는거죠.
그렇다고 해서 ML이 자신과 관련된 Feature가 무엇인지 찾는 어려운 작업을 수행하게 만들어서는 안됩니다. 모델에게 관련된 데이터를 모두 던져주고, 어떤 것이 유용한지 확인하려고 한다면, 우리가 만든 모델을 지나치게 복잡하고, 비싸고, 중요하지 않은 Feature들로 가득차게 될 가능성이 높습니다. 작은 데이터 셋 내에서 Feature는 샘플 데이터 내에서 우연한 상관관계를 띄게 될 가능성이 큽니다. 가설을 세우지 않고 무작정 많은 Feature를 적용하려고 하면, 그것이 모델과 관련된 신호라고 착각하게 될 가능성이 높습니다. 이러한 사실은 모형을 사용해 예측을 시도하고, 그것이 일반화되지 않았다는 것을 깨닫기 전까지는 알 수 없습니다.
예측(Predictions) vs. 결정(Decisions)
예측이 아닌, 결정에 초점을 맞추세요.
여기서 말하는 결정이란, 모델의 출력 결과에 따라 제품이 수행하게 될 작업을 말합니다. ML은 우리에게 문제에 대한 통찰력을 제안하기 보다는, 이에 기반한 결정을 내리는 것에 더 초점이 맞추어져 있습니다. 만약, 우리가 가진 수많은 데이터에 대해 어떤 흥미로운 분석 결과에 대해 알고 싶다면 ML보다는 통계학이 더 올바른 접근 방법입니다.
예측이 유용한 액션을 취할 수 있도록 하는지 확신하세요. 예를 들어, 특정 동영상을 클릭할 가능성을 예측하는 모델을 통해 시스템이 클릭할 가능성이 가장 높은 동영상을 미리 가져오도록 할 수 있습니다.
가끔 예측과 결정은 밀집하게 연관된 경우도 있지만, 그와 다르게 관계가 명확하지 않은 경우도 많습니다. 아래의 예측/결정 간의 차이에 다룬 테이블을 확인해봅시다.
Prediction | Decision |
---|---|
이용자가 다음에 어떤 동영상을 보고자 할까? | 추천 목록에 해당 동영상들을 띄워주자. |
누군가 검색 결과에 대해 클릭할 확률 | `P(click) > 0.12` 이라면, 해당 웹페이지를 미리 가져오자. |
이용자가 시청할 비디오 광고의 비율 | 적은 비율이라면, 광고를 보여주지 않도록 하자. |