1. 질문/문제 (Question) 공식화
2. 데이터 찾기 및 이해
3. 데이터 클리닝 및 기능 엔지니어링
4. 모델 선택
5. 조율 및 평가
6. 모델 사용 및 결과 도출
지난 포스팅의 연장으로 4,5,6번 머신러닝 가용 모델에 대해 포스팅해보겠다.
4. 모델 선택 - Choosing a model
우리가 태클하고자 하는 데이터와 어떤 문제를 해결하려는지에 대해 충분히 파악이 되었다면 이제는 알맞은 머신러닝 모델을 고르는 일만 남았다!
- 고객 대기 시간 예측과 같은 연속성이 있는 결과 도출을 위해서는 회귀 법 (regression algorithm)을 사용하고
- 오더 대기 시간이 5분 혹은 10분일까?라는 입력값에 대한 분류를 위해서는 분류법 (classification algorithm)을 사용한다
regression과 classification 기법 내에서도 사용 용도에 따라 추가적인 기능/사용법 분류가 가능하며 크게 데이터 타입 (카테고리, 수치 등)에 따라 분류되며, 각 모델에 따라 해석 능력도 각양각색이며 결괏값을 해석, 시각화하는 기법들도 여럿이다.
5. 조율 및 평가 - Tuning and Evaluating
우리가 선택한 모델의 효용성을 판단하기 위해 통상 성공 지표/척도 (metric of success)를 사용한다.
각각의 모델들은 여러 parameter를 사용하여 결괏값에 영향을 미치며, 우리는 이러한 parameter들을 조율하고 정확성, 정밀성 혹은 둘 다를 비교하여 어떤 모델이 가장 알맞은 모델인지를 판단한다.
K-Nearest Neighbors(KNN)을 사용하여 대기시간을 예측한다고 가정해보자.
이 알고리즘은 k라는 parameter를 사용하고 우리는 이 k 값을 조율/조정하여 결괏값을 다르게 산출할 수 있게 된다.
k 값이 3이 맞는지, 10, 혹은 1이 맞는지 우리는 여러 k 값을 사용하여 여러 결과값을 도출 후 각 수치에 대한 정확성 (accuracy)을 확인하며 최적의 값을 도출하려 노력한다.
6. 모델 사용 및 결과 도출 - Using the Model and Presenting Results
training set에서 원하는 정확도 수준이 달성되었으면 실제로 분석 데이터를 모델링에 사용할 수 있게 된다. 실제 분석 데이터는 예를 들어, 다음과 같은 기능 (feature)를 포함한 데이터를 뜻한다.
* 주문 품종(타입)
* 수량
* 오더 주문 시간대
* 작업 중인 직원 수
출력 값은 주문 대기 소요 시간이 된다.
여기서 중요한 점은 결괏값보다 이러한 정보를 어떻게 실제로 사용하고 응용할 것인가에 대한 질문이다. 때로는 모델링 된 모형을 보고 데이터에 대한 인사이트를 기를 수 있고 각 feature 혹은 데이터에 대한 통찰력으 얻어 단순 데이터 시각화를 통해 원하는 결괏값(인사이트)을 도출할 수도 있다.
대략적인 흐름을 설명하는 과정으로 내용이 다소 추상적일 수 있지만 이와 같은 기법들은 실무에서 이미 사용되고 있는 방법들로 어떻게 운용하는지도 중요하지만 이런 과정과 로직을 통해 생성된다는 이해도만 갖게 되어도 같은 결괏값을 보고 180도 다른 인사이트 혹은 결정을 내릴 수 있을 거라 생각된다.
들은 것은 잊어버리고,
본 것은 기억하고,
직접 해본 것은 이해한다
공자