머신러닝 프로젝트를 수행하는 전체 프로세스는 다음과 같다. 머신러닝 프로세스 각 단계는 하나의 파트 별로 기술해도 될 만큼 중요한 내용이지만, 내 블로그는 분석과 해석 실무에 초점이 맞춰져 있으므로 단계마다 간략한 개념 정도만 언급하고 넘어가도록 하겠다.
[그림 1] 머신러닝 프로세스
[1] 문제 정의
머신러닝 프로세스의 첫 번째 단계는 머신러닝으로 해결하고자 하는 문제가 무엇인지 정의하는 단계이다. 해결하려는 문제는 무엇인지, 어떤 형태의 결론이 이에 대한 답이 되는지, 그리고 그 결론이 파급하는 효과는 무엇일지 등이 가급적 명확하게 표출되어야 한다.
[2] 데이터의 수집
문제를 정의했다면 해당 문제를 해결하기 위해 필요한 데이터를 수집해야 한다.
머신러닝은 소위 빅 데이터 (Big Data)를 분석하기 위한 방법론이므로 상당한 양의 데이터를 수집해야 하는 어려움이 존재한다. 데이터를 수집하는 과정에서 기업의 IT 인프라가 우수할수록 데이터 수집이 용이하지만, 많은 경우 데이터 원천의 식별부터 데이터 유형 파악, 필요 데이터 확인, 데이터의 추출 등 많은 인적 노력이 뒤따르게 된다.
한편, 데이터 수집 과정을 통해 수집된 원천 데이터는 분석 목적에 맞는 데이터 스키마 (Schema)를 기획하여 분석용 데이터 마트 (Data Mart)를 구성하는 것이 바람직하다.
[3] 데이터 처리
수집된 원천 데이터는 머신러닝 프로젝트에 그대로 사용할 수 있는 경우가 거의 없다. 원천 데이터는 대개 분석보다는 시스템상에서의 운영과 관리를 위해 최적화되어 있기 때문이다. 따라서, 이러한 원천 데이터는 머신러닝 프로젝트 목적에 맞도록 적절히 데이터를 처리 또는 전처리를 해주어야 한다. 머신러닝 목적에 맞는 데이터의 처리는 주로 다음과 같은 작업을 포함한다.
- 레코드 및 필드 추출: 분석에 필요한 레코드나 필드를 선별해 추출한다.
- 파일의 병합 및 분리: 여러 원천 데이터를 병합하여 하나의 파일로 합치거나, 필요에 따라 분리하여 소수의 파일로 나눈다.
- 데이터의 변환: 원천 데이터의 표현방식이나 척도를 분석 목적과 기법에 적합하도록 변환한다.
- 파생변수의 생성: 기존 필드(변수)들을 조합, 가공하여 새로운 변수를 파생시킨다.
- 결측치/오류값의 처리: 분석에 사용될 주요 필드에 대한 결측치나 오류값이 발견될 경우 추정하여 새로운 값으로 채우거나, 변환 절차를 거쳐 데이터를 수정한다.
상기 데이터 처리 형태 중 레코드 및 필드 추출과 파일의 병합 및 분리를 제외한 나머지 방법들은 이후 장에서 필요에 따라 단계적으로 설명하도록 한다. 머신러닝 과정에서 반드시 거치게 되는 데이터 처리 작업은 레코드 및 필드 추출과 파일의 병합 및 분리 단계인데, 이는 머신러닝 모형 학습과 평가 과정에서 사용될 데이터를 추출하고, 분할하는 작업을 의미한다.
머신러닝에서의 표본추출은 크게 학습용 데이터 세트 (Training Data Set)와 평가용 데이터 세트(Test Data Set)로 나누어서 수행하는데, 학습용 데이터 세트는 엄밀하게 말하면 학습용 데이터 세트와 검증용 데이터 세트 (Validation Data Set)로 구분할 수 있기 때문에 총 세 개의 데이터 세트로 분할한다고 볼 수 있다.
[그림 2] 데이터 분할
학습용 데이터 세트는 모형이 데이터를 학습하여 데이터에 적합한 머신러닝 모형이 창출되는 과정에서 사용되는 데이터의 포괄적 의미이며, 이 중 검증용 데이터 세트는 모형이 학습하는 과정에서 모형의 특정 인자값을 조절하기 위한 모형 학습의 피드백 목적으로 사용되는 데이터라고 이해하면 된다. 한편, 평가용 데이터 세트는 선택한 모형의 성능을 평가하기 위해 사용하는 데이터이다. 데이터의 분할 비율은 분석 목적과 상황에 따라 달라지므로 정확한 가이드라인이 존재하는 것은 아니지만, 학습용, 검증용, 평가용 데이터 세트의 비율을 대개 70 : 20 : 10 정도로 나누고 분석을 시작하는 경우가 많다.
[4] 모형 학습
머신러닝에 적합하도록 데이터를 처리하였다면, 실제로 모형에 데이터를 학습시키는 과정을 거치게 되는데 일반적으로 다음의 절차를 거치게 된다.
- 분석 모형의 결정: 해결하고자 하는 비즈니스 목적에 따라 적합하다고 판단되는 복수 개의 머신러닝 모형을 선정한다.
- 인자의 지정: 머신러닝 모형마다 존재하는 인자 (Argument)들을 파악하고, 적절히 인자값을 설정한다.
- 학습 및 인자 조절: 학습된 모형의 결과를 파악하면서 모형의 성능을 더 좋게 개선하기 위해 인자값을 조정해나간다.
분석언어나 프로그래밍 언어에서 함수의 옵션을 설정하는 항목을 인자, 매개변수 (Parameter), 혹은 파라미터 등으로 표현하는데, 본서에서는 ‘인자’라는 표현을 사용할 것이다. 즉, 인자는 매개변수나 파라미터와 같은 의미이다.
모형 학습 과정에서 유의해야 할 점은 모형이 과잉적합 (Over-Fitting)이나 과소적합 (Under-Fitting)이 되지 않도록 해야 한다는 점이다. 과잉적합은 모형이 데이터에 너무나 학습이 잘되어 모형이 복잡해지고, 학습 데이터가 아닌 데이터에는 예측 성능이 매우 저하되는 현상을 의미한다. 반대로 과소적합은 데이터를 충분히 학습하지 않아 너무 단순한 모형으로 귀결되어 뻔한 결과만을 예측하는 현상을 의미한다. 즉, 데이터에 대한 학습 정도는 모형의 복잡성과 밀접한 관계를 갖게 되며 양극단 간의 적절한 최적점을 찾는 것이 모형 학습에서의 관건이 될 수 있다.
[그림 3] 모형 복잡도에 따른 정확도
과잉적합을 방지하기 위해서는 학습 데이터와 검증 데이터를 분할하여 교차검증을 수행해 특정 데이터 세트에 대한 의존성을 낮추거나, 다소 오분류가 발생하더라도 새로운 데이터를 더 적절히 처리하도록 규제화를 적용하는 등의 방법을 시도해야 한다.
[5] 성능 평가
머신러닝 프로세스의 마지막 단계는 모형의 성능을 평가하는 단계이다. 앞서 모형 학습 단계에서 언급한 모형의 학습 결과를 판단하여 인자값을 조정하는 과정은 모형의 성능 평가 단계라고 보지 않으며, 학습이 완료된 개별 머신러닝 모형들의 성능을 비교하여 최적의 성능을 보이는 모형을 선택하는 과정을 의미한다.
모형의 성능 평가 방법은 머신러닝 모형에 따라 달라진다. 우선 지도학습 모형의 분류 모형은 정확도, 정밀도, 재현율, F1 스코어 등으로 성능을 평가할 수 있고, 수치 예측 모형은 결정계수나 RMSE와 같은 오차 수준 값을 통해 모형의 성능을 평가한다. 각 평가 지표의 상세 내용은 3장에서 다루도록 한다.
비지도학습 모형의 경우 지도학습처럼 정확한 정답이 존재하지 않고 탐색적으로 결론을 유도하는 목적을 갖기 때문에 모형의 성능을 평가한다는 개념 자체가 성립되지 않는다. 다만, 군집분석의 군집 품질평가와 같이 분석 결과물의 품질을 평가하거나, 협업 필터링의 추천 결과가 추후 얼마나 잘 적중되었는지 사후적으로 살펴보는 성과평가 방식으로 비지도학습 모형의 우수성을 가늠해볼 수는 있다.
This post was written based on what I read and studied the book below.
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791195511747
댓글