1  인공지능 vs 머신러닝 vs 딥러닝 

2  알고리즘과 모델 

3  타입: 지도학습과 비지도학습 

4  ML workflow 

5  DAVinCI LABS Workflow

1  문제 정의  

2  데이터 준비  

3  변수 가공  

4  모델링  

5  모델 평가 

  • 평가지표 
  • 과대적합 vs 과소적합

6  결과 해석  

  • Explanation

7  모델 배포 및 운영

  • 수동 결합필드 활용 
1
데이터분석은 왜 필요한가?
Why do you need data analysis? 
본격적인 4차산업의 시대가 도래함에 따라 많은 기업들이 그동안 쌓아왔던
 데이터를 활용해 더 나은 비즈니스적 의사결정을 내리고자 노력하고 있습니다.

올바른 의사결정을 하기 위해 기업들은 주관적인 편견을 배제하고 객관적인 상관관계를 바탕으로 즉, 데이터에 기반을 두고 인사이트를 도출해야 한다는 것에 대해서는 모두 동의할 것입니다. 다양한 산업이 빠르게 성장하는 것 역시 고객의 다양한 정보를 신속하고 빠르게 분석하고 제어하는 것을 기반으로 실현되고 있습니다. 


이는 소비자의 만족과 그에 상응하는 이익까지 연결되어 데이터 분석의 중요성은 더욱 커지게 되었습니다. 오늘날 다양한 산업에서의 데이터 분석은 전통 통계 분석에서 인공지능을 활용하여 인사이트를 얻는 수준까지 빠르게 발전되었습니다. 그렇다면 누구나 한번쯤은 들어봤을법한 인공지능, 머신러닝, 딥러닝은 과연 무엇일까요? 

2
머신러닝이란?
What is machine learning? 


인공지능 vs 머신러닝 vs 딥러닝

“인공지능”, “머신러닝”, “딥러닝” 오늘을 살아가는 우리가 필연적으로 마주할 수밖에 없는 개념입니다. 언뜻 서로 다른 개념인 듯 보이지만 실은 “인공지능⊃머신러닝⊃딥러닝”의 관계로, 상위 개념인 인공지능이 인간의 생각이나 학습 능력을 컴퓨터 프로그램으로 실현하는 것을 가리킨다면, 하위 개념인 머신러닝은 인공지능을 구현하는 구체적인 접근 방식을 의미합니다.

무엇보다 머신러닝이 화두가 되고 가장 많이 활용될 수 있었던 것은 

기업들이 가지고 있는 데이터 등이 머신러닝으로 분석하기에 가장 적합하기 때문입니다. 

머신러닝에 대해 좀 더 구체적으로 이야기하자면, 기본적으로 알고리즘을 이용해서 데이터를 분석하고, 분석을 통해서 학습하고, 학습한 내용을 기반으로 입력하지 않은 정보에 대해서도 판단하고 예측하는 인공지능 기술입니다. 또한, 전통적인 프로그래밍과는 다르게 규칙 대신에 해답을 주고 반대로 규칙을 찾아내는 특징이 있습니다.

전통적 통계분석 vs 머신러닝 

전통적 통계분석과 머신러닝 방법은 사용 알고리즘 혹은 방법론보다는 사용하는 목적에서 가장 큰 차이가 발생합니다. 머신러닝 방법 같은 경우에는 예측의 성공 확률을 높이는 데에 목적을 둡니다. 따라서 모델의 신뢰도나 정교한 가정은 상대적으로 중요성이 낮아지며 어떤 인자가 왜 중요한지는 전통적 통계분석에 비해서는 크게 중요하지 않게 됩니다. 반면, 전통적 통계분석은 정해진 분포나 가정을 통해 실패 확률을 줄이는 데에 목적이 있습니다. 따라서 모형의 복잡성보다는 단순성을 추구하며 파라미터의 해석가능성 또한 중요하게 다뤄집니다. 예컨대 고객이 왜 해당 지출을 하는지에 대한 설명이 가능해지도록 분석이 이루어지는 것 등 입니다. 


딥러닝이란 그러한 머신러닝의 하위 개념으로, 머신러닝에 속하는 대표적인 방법론 중 하나입니다. 알고리즘이 정한 경로를 따라 학습하는 것이 아닌 여러 계층으로 이루어진 신경망을 통해 데이터를 주체적으로 학습해 판단을 내릴 수 있는 것이 그 특징입니다. 굳이 차이점이라고 하면 딥러닝은 많은 데이터를 스스로 분류한 후 파악하여 문제를 해결합니다. 또한, 이미지 인식, 음성인식등 분야에서 쓰이는 딥러닝의 경우 학습을 위해서는 많은 데이터가 필요하고 데이터가 많을수록 정확도도 올라갑니다. 여기서, 반복적으로 언급되는 알고리즘은 그럼 무엇이고 종종 함께 쓰이기도 하는 모델은 각각 어떤 개념인지 살펴보도록 하겠습니다. 

2


알고리즘과 모델

머신러닝은 알고리즘을 이용해서 데이터를 분석하고 예측까지 할 수 있는 일련의 과정이라고 하였습니다. 정의부터 말씀드리면 알고리즘이란 문제 해결을 위해 필요한 단계의 순서를 구체적으로 명시하는 계산법 혹은 규칙의 조합을 의미하고 모델은 알고리즘의 상위 개념으로 데이터 학습이 완료된 알고리즘을 의미합니다. 좀 더 직관적인 이해를 위해 예시를 들자면, 전자제품 및 부품은 데이터, 관련 설명서는 알고리즘, 조립이 완성된 전자제품은 모델이라고 이해하면 되겠습니다. 부속품 혹은 설명서만으로는 제품을 작동시키기는 어렵습니다. 

또한, 제일 큰 차이점이라면 알고리즘 하나만으로 의사결정을 하지 못하지만 모델은 입력에 대한 출력이 반환되고 그 출력을 의사결정에 사용할 수 있습니다. 다빈치랩스에 적용해보면 사용자는 준비한 데이터를 업로드하여 다빈치랩스에서 제공하는 다양한 알고리즘으로 학습한 후 우수 모델을 선택해서 의사결정에 활용하는것입니다. 

3


타입 : 지도학습과 비지도학습

앞선 개념들을 통해 머신러닝이 컴퓨터가 데이터를 학습하는 행위라는 것을 알게 되었는데요, 인간이 다양한 방식으로 지식을 학습하듯, 컴퓨터의 학습 또한 다양한 방식으로 세분화됩니다. 대표적으로 지도학습, 비지도학습으로 나뉘어 집니다. 각각의 개념을 인간에 비유하자면, 인간이 지식을 학습하는 방식에도 여러가지가 있겠으나 대부분의 학습은 과거에 선행된 경험의 기록으로부터 촉발되거나, 선행 사례가 없는 경우 직접 몸으로 부딪혀 다양한 시도 끝에 체득하는 방식으로 이루어집니다. 과거에 이미 경험되었던 지식은 그 결과와 함께 기록되어 전수됩니다. 즉, 그 기록을 학습하면 해당 케이스와 비슷한 유형의 상황을 마주했을 때, 그 기록을 바탕으로 추론할 수 있는 것이죠. 그러나 모든 지식이 과거에 경험되었을 수는 없습니다. 완전히 새로운 지식의 경우 정답이 있는 것이 아니기에 그 지식을 하나하나 파헤쳐 보는 것이 학습이 되는 것이죠.  

이는 컴퓨터가 학습할 때에도 마찬가지인데요, ‘지식=데이터’라 가정해보겠습니다. 데이터 속에 과거의 히스토리가 존재한다면 컴퓨터는 그 히스토리를 학습해 비슷한 상황에서 적합한 결론을 도출해낼 수 있습니다. 이를 지도학습(Supervised Learning)이라고 합니다. 말그대로 과거의 기록을 학습해 미래의 가능성을 예측해볼 수 있는 것이죠. 


반면, 과거의 히스토리가 존재하지 않는 데이터는 어떨까요? 컴퓨터는 정답을 모르기 때문에 데이터 자체에 근거해 그 패턴을 이해하고 비슷한 유형의 지식(데이터 샘플)끼리 분류하는 것을 목표로 하게 됩니다. 이를 우리는 비지도학습(Unsupervised Learning)이라 부릅니다. 

실생활에선 대체로 지도학습을 많이 사용합니다. 보통 단순한 경향 파악보다는 어떤 일이 일어날지 예측하는 것이 관심사이기 때문입니다. 이러한 맥락에서 다빈치랩스는 현재까지는 머신러닝 중에서도 지도학습 영역을 자동화하여 제공하고 있습니다. 따라서, 다빈치랩스에 업로드하는 데이터에는 예측하고자 하는 대상의 과거 기록이 포함되어야 합니다. 이를테면, 고객이탈 예측 모델을 개발한다고 가정했을 때의 “이탈 여부”가 그 것이죠.   

4


ML workflow

일반적으로 머신러닝을 활용하여 예측모델을 만든다고 하면 크게는 문제 정의, 데이터 준비, 모델 개발, 모델 평가, 모델 배포, 운영(예측)까지 일련의 과정을 거치게 됩니다. 첫 도입부인 문제 정의부터 접근을 잘해야지만 그에 따른 제대로 된 데이터 준비를 할 수 있고 보다 가치있는 결과를 얻을 수 있는 것은 당연한 일입니다. 신규 고객의 대출 승인 여부 모델을 만든다고 가정을 해보면, 


1

문제 정의  

기존 고객들의 대출 상환 이력을 학습하여 더 나은 의사결정 모델을 만드는것입니다. 즉, 기존 내부 규칙에 의하면 거절되었을 고객중에서 상환 여력이 있는 고객들은 승인하고 승인되었을 고객중에서 상환 여력이 없는 고객들은 거절하는것입니다. 문제 정의에서는 비즈니스와 데이터를 잘 이해하고 궁극적으로 해결하고 하는 과업을 설정하는 것이 중요합니다.


2

모델 개발  

준비된 데이터를 다양하게 구현한 알고리즘으로 학습시켜 신규 대출 신청자에 대해 승인 여부를 판단할 수 있는 모델을 개발합니다. 


3

문제 정의  

기존 고객들의 대출 상환 이력을 학습하여 더 나은 의사결정 모델을 만드는것입니다. 즉, 기존 내부 규칙에 의하면 거절되었을 고객중에서 상환 여력이 있는 고객들은 승인하고 승인되었을 고객중에서 상환 여력이 없는 고객들은 거절하는것입니다. 문제 정의에서는 비즈니스와 데이터를 잘 이해하고 궁극적으로 해결하고 하는 과업을 설정하는 것이 중요합니다.


4

모델 평가  

개발한 모델은 바로 배포하여 사용하기 전에 평가를 통해 사용 여부를 결정합니다. 평가지표는 크게 타겟 형태, 즉 회귀냐 범주형이냐에 따라 상이합니다. 대출 승인 여부는 이진분류 문제로써 그에 상응한 평가지표를 활용하여 성능이 좋은 최종 모델을 선택합니다. 


5

모델 배포  

아무리 강력한 예측 모델일지라도 실무자가 사용 못하면 의미가 없습니다. 때문에 모델 평가까지 완료가 되면 운영을 위한 모델을 배포하는 단계가 이루어져야 합니다. 일반적으로 학습된 모델을 별도의 소프트웨어인 예측서버를 통하여 운영환경에 적용시킬 수 있습니다. 


6

운영(예측값 적용)

배포된 모델은 운영 단계에서 신규 신청자에 대해 실시간으로 승인 여부를 보여줍니다. 다만 이러한 모델은 영구적으로 사용할 수 없습니다. 왜일까요? 모델 역시 인간처럼 나이를 먹기 때문입니다. 시간의 흐름에 따라 신규 신청자도의 데이터도 학습할 수 있는 과거 데이터가 되면서 데이터의 경향이 바뀌게 됩니다. 따라서, 예측 성능의 하락을 미연에 방지하기 위해 내부적인 기준에 의해 재학습을 시키거나 혹은 그러한 기준이 없다면 어느 시점에 모델을 재학습 시켜야 할지에 대한 기준을 수립해야 합니다. 

5


DAVinCI LABS Workflow

위에서 언급했듯이 일반적인 머신러닝 워크플로우는 데이터 수집부터 데이터 준비, 변수 가공, 모델 개발, 모델 평가, 모델 배포, 운영까지 복잡하고 반복적인 작업들 로 이루어 집니다. 다빈치랩스는 데이터 전처리부터 모델 배포까지 전반적인 과정을 자동화하여, 사용자에게 편의를 제공합니다. 이로써 실무자들의 업무 효율성을 향상시키고 수동 작업의 잠재적 오류까지 최소화합니다. 또한 기존에는 머신러닝을 사용하기 위해 실무자의 고도의 전문지식을 요구했던 반면 다빈치랩스를 활용하면 현업에서 누구가 손쉽게 모델 개발부터 운영까지 진행할 수 있습니다. 다만 데이터에 기반한 판단은 인공지능이 수행할 수 있지만, 그 판단의 결과를 해석하고 평가하는 건 인간의 몫이라고 할 수 있습니다.  

3
다빈치랩스를 활용한 예측모델
Predictive Model Using DAVinCI LABS 
1


문제 정의

머신러닝 예측모델 개발의 핵심은 명확한 목표의 설계에 있다. 



지도학습 기반의 문제를 정의함에 있어서, 사용자는 크게 다음 두가지의 경우를 고려하게 됩니다.

문제를 정의하고 목표를 설정하는 것은 제일 어려우면서도 중요한 과제입니다. 의미있는 모델을 만들기 위해선 문제 정의 단계에서 어떤 데이터를 어떻게 학습시켜 어떠한 결과를 도출시킬 것인지 부터 명확히 규명 되어야 합니다. 어떠한 문제를 풀고싶은지 정의함에 따라 다음 단계에서 준비 해야하는 데이터 세트도 상이해지기 때문에 항상 강조되는 단계 입니다. 예를 들면 맞추고자 하는 것이 신규 고객의 대출 신청 승인여부가 될 수도, 가격 예측이 될 수도 있습니다. 해당 가이드북에서는 캐글 (Kaggle) 사이트에서 제공하는 고객 이탈율 데이터를 예시로 이탈 여부를 예측하는 모델을 만들어 보도록 하겠습니다.   

다빈치랩스는 이진분류 문제를 회귀로 풀 수 있습니다.
이진분류 문제를 회귀로 풀 시, 예측값은 확률로 확인할 수 있는 이점을 가집니다.
아래 해당 이탈율 문제를 회귀와 분류 두가지로 모델링하여 결과를 보도록 하겠습니다.
2


데이터 준비

데이터를 수집하고 준비하는 단계는 하나의 머신러닝 프로젝트에서

대부분의 시간을 차지합니다. 그만큼 “품질”좋은 데이터를 준비하고 학습시켜야

“품질”이 좋은 즉, 믿을만한 결과를 받아볼 수 있습니다.  



다빈치랩스에서는 다음과 같은 준비 단계를 고민해 볼 수 있습니다.

여러 리소스를 모으는 데이터의 병합 

금융권의 경우를 예를 들면 고객정보 데이터와 계약 데이터를 병합하여 필요한 정보를 수집합니다. 만약 두 데이터가 개별적으로 존재한다면, 다빈치랩스 솔루션 내에서는 조인기능을 통해 샘플 식별 필드(예:ID)를 키 값으로 설정하여 두개 혹은 그 이상의 데이터 세트를 INNER, LEFT, RIGHT, OUTER 4가지 타입으로 병합하여 새로운 데이터 세트를 만들 수 있습니다. 

데이터 세트 분리  

머신러닝 학습을 위해 데이터는 주로 학습, 검증, 테스트 세트로 분류합니다. 데이터가 주기적으로 추가되는 경우엔 과거의 데이터로 학습하고 최신 데이터로 검증하는 것으로 데이터의 변화에 적응하여 실제 예측 상황을 잘 반영할 수 있습니다. 테스트 세트는 모든 학습이 끝난 뒤 학습된 모델의 최종 성능 평가에만 사용합니다. 테스트 세트는 데이터 사이즈에 따라 비율 7:3 혹은 8:2 비율로 구분하여 별도로 업로드합니다. 학습과 검증 세트는 사용자가 직접 다빈치랩스 모델링 페이지에서 7:3 혹은 8:2 의 비율로 설정해줍니다. (학습 데이터가 충분히 많으면 9:1 비율로 테스트 세트를 가져가기도 합니다.) 

데이터 탐색   

데이터를 이해하는데 목적을 두고 수집한 데이터를 다양한 각도에서 직관적으로 바라볼 수 있는 과정입니다. 미가공 상태의 데이터는 결코 인간의 이해에 최적화된 인터페이스가 아닙니다. 다빈치랩스는 반복적으로 빠르게 데이터를 탐색할 수 있고, 데이터 시각화, 통계수치 등을 통한 시각적 피드백을 제공합니다. 



예를 들면, 이탈율 데이터를 데이터 세트 페이지에서는


첫번째, 
지역을 나타내는 변수의 타겟 평균 그래프에서 독일이 샘플개수가
상대적으로 프랑스에 비해 적음에도 불구하고 전체 이탈율(약20%)을 넘어
타 지역보다 월등히 높다는 것을 알 수 있습니다.

두번째, 
연령을 나타내는 변수의의 타겟 평균 그래프를 보면
45세부터 이탈율이 급증하면서 65세 정도까지
평균 이탈율을 넘어선다는 것을 수 있습니다.


그 외 고려해볼 수 있는 사항으로는    


1

DELETE VARIABLE

제공하는 통계수치를 통해 결측 데이터가 대부분이고 도메인 지식으로 타겟을 예측하는데 큰 영향이 없다고 판단되면 변수 자체를 삭제합니다. 


2

IGNORE VARIABLE

특정 고객보다는 그러한 특성을 가지는 고객들을 예측해야 하기 때문에 개인 식별 변수 고객ID(CustomerID), 행번호 (RowNumber), 고객이름(Surname)는 모델링전에 제외합니다. 


3

CORRELATION ANALYSIS

상관관계 분석을 통해 타겟과의 관계를 미리 살펴보고 변수 사용 여부를 결정할 수도 있습니다. 


4

CHANGE TYPE OF VARIABLE

타입 변경이 필요한 변수는 모델링 전에 변경해줍니다. 변경 여부에 대해 판단할 때 팁이라면 대소비교 안되는 변수는 카테고리로 변경해주는 것 입니다. 이탈 데이터 중 숫자형으로 인식한 카드소유여부(HasCrCard), 고객의 활동여부(IsActiveMember) 변수를 수동으로 카테고리형으로 변경합니다. 반대로 카테고리형을 숫자형으로 변경하는 경우도 종종 있습니다. 


타겟 정의    

예측하고자 하는 변수이며 해당 예시에서는 “Exited”이며 0은 유지, 1은 이탈을 의미합니다. 타겟 선택전에 “Exited”를 숫자 타입으로 설정하면 회귀문제로 인식하고 타겟 선택 후에는 빨간색으로 보여줍니다.(그림 참고) 반대로 “Exited”를 카테고리 타입으로 설정하면 파란색으로 보여주게 됩니다.

처리     

데이터 분석을 함에 있어서 전처리 과정은 무엇보다 중요하고 품질 좋은 데이터를 만들 수 있는 방법이기도 합니다. 최종 예측 성능에도 커다란 영향을 주는 전처리는 결측 값, 카테고리 변수 인코딩, 데이터 스케일링 등을 포함하며 다빈치랩스에서 모델링 전에 자동으로 진행이 됩니다. 

3


변수 가공

데이터 준비가 끝났다면 바로 베이스라인 모델링을 진행합니다. 하지만 좀 더 고도화된 모델링을 하기 위한 변수 가공이라는 옵션을 소개하자면 크게 두가지가 있습니다. 하나는 데이터의 잠재 가치를 끌어내기 위해 유의미한 파생변수를 생성하는 것이며 다른 하나는 모델링에 필요한 변수를 자동으로 선별해주는 기능인 입력 필드 선별 기능입니다. 

Feature Engineering      

유의미한 파생변수를 찾을 수 있을 뿐만 아니라 모델의 성능을 높일 수 있는 방법이기도 합니다. 다빈치랩스에서 사용자는 두가지 방법으로 파생변수를 만들 수 있습니다. 첫번째 방법은, 선형결합, 변수간 곱셈 및 나눗셈, 타겟과 영향이 높은 변수의 조합을 원클릭으로 자동으로 찾아주는 것이고 두번째 방법은, 사용자가 수동으로 수식을 입력하여 만드는 것입니다.  

Feature Selectio

데이터를 다루다보면 변수가 백 단위, 천 단위까지 흔히 볼 수 있습니다. 이럴 경우 모델 자체가 무겁고 학습 시간도 그만큼 길어지게 됩니다. 효율적인 관점으로 관련성 높은 변수만 선택하여 모델의 복잡성을 줄이고 설명력을 향상시키는 방법이 바로 입력 필드 선별 기능입니다. 항상 모든 변수를 다 사용해서 최대한으로 성능을 높이는것이 최고라기보다는 성능 차이가 많이 나지 않는 선에서 모형 자체를 얼마나 빠르게 업데이트 할 수 있고 활용할 수 있는지에 대한 부분도 고려해야 합니다. 만약에 데이터에 노이즈가 많을 때 변수를 줄이면 오히려 성능이 높아지는 경우도 종종 발생하는데 이는 데이터 특성을 방해하는 것을 줄였기 때문이라고 볼 수 있습니다. 아래 그림에서 예시를 들면, 변수를 149개를 사용했을 때 Gini값은 0.638, MSE 는 0.865이고, 변수를 119개를 사용했을 때 Gini값은 0.668, MSE는 0.860입니다. 이럴 경우엔, 오히려 119개 변수로 이루어진 데이터셋을 사용함으로써 모델링 시간도 절감하면서 더 나은 성능을 보장할 수 있습니다.  


Gini 계수는 모델의 예측치 간의 변별력을 나타냅니다.
값이 클수록 변별력이 좋으며 더 좋은 모델이라고 판단할 수 있습니다.
MSE(평균제곱오차)는 예측값과 실제값의 차이를 나타내는 평가 지수입니다.
값이 작을수록 예측값이 실제값과 가깝다는 것을 나타내며 모델의 예측력이 상대적으로 우수한 것으로 평가합니다. 


4


모델링

Feature Engineering이나 Feature Selection 기능을 통해 학습할 데이터를 준비하였다면 다음 단계인 모델링을 진행합니다. 모델링의 목적은 학습을 통해 데이터를 잘 반영하는 최적의 모델을 찾는 것이며 최적의 모델을 찾는 것 즉, 최적화한다는 것은 해당 모델의 오차를 최소화한다는 것과 같은 개념입니다. 기존에는 전문 지식을 요구하는 데이터 사이언티스트가 초매개변수(hyperparameters)를 반복적으로 조정하면서 최적의 모델을 찾는 것이 일반적이었습니다. 다빈치랩스는 이러한 반복적인 작업을 Auto 모델링 기능을 통해 이미 탑재되어 있는 선형, 트리, 신경망계열 등의 알고리즘으로 한번에 모델의 성능이 높은 순으로 정렬하여 보여줌으로써 결과를 쉽게 비교 분석할 수 있게 지원합니다.  


초매개변수 (hyperparameter)
학습과정을 제어하는 변수를 의미하며, 다빈치랩스 내에서 사용자가 직접 세팅 변경하여
예측 결과값 비교분석 할 수 있음 (ex. learning rate in NN)  


교차검증

여기서, 최종 성능을 확인하기 전에 학습에 사용하지 않은 데이터로 얼마나 잘 예측하는가를 측정하는 단계 즉, 학습세트를 검증하는 단계가 필요합니다. 고정된 학습세트 및 테스트세트로 학습하고 평가하게 되면 테스트에 과적합 되어 처음 보는 데이터는 잘 못 맞추게 되므로 이를 방지 하기 위해 교차검증을 실시합니다. 교차검증 방식은 모든 데이터셋을 평가와 훈련에 활용하므로 데이터가 편중되는 것을 방지하여 일반화된 모델을 만들 수 있고 정확도 또한 향상됩니다. 다빈치랩스 내에서 사용자는 관련하여 조건(k-fold 개수, 데이터 분할)들을 모델링 전에 미리 설정해 줄 수 있습니다. 


검증 데이터세트를 포함한 모델링을 위한 조건들을 설정하였다면 일반적으로 Auto 모델링을 진행하여 결과를 확인합니다. Gini기준으로 RANDOM FOREST 성능이 별표를 가장 많이 받았는데 단순한 데이터에서는 오히려 여러 알고리즘을 조합한 앙상블 형식의 모델보다는 싱글 알고리즘으로 학습한 모델이 성능이 높습니다. 이어서 모든 모델에 대하여 테스트를 진행해보면 좋겠지만 시간 역시 비용이므로 일반적으로 상위 5개 모델을 선택하여 테스트를 진행합니다. 여기서, 성능보다는 해석이나 활용성 측면을 더 중요시한다면 앙상블보다는 하나의 싱글 알고리즘을 선택할 수도 있습니다. 

5


모델 평가 

모델링이 끝나면 모델에 대한 평가를 통해

어떤 모델을 최종 모델로 선택할지에 대한 즉, 사용여부를 결정합니다 .


판단 근거
학습세트, 검증세트, 테스트세트 간 수치의 차이가 적을수록 안정적인 모델을 의미함.

모델의 성공여부 즉 사용여부를 결정함에 있어서 꼭 필요한 지표입니다. 예를 들면 은행에서 개인을 대상으로 채권 회수를 몇 건 이상을 해야 성공적이라고 평가할 것인가? 또는 마케팅을 통해 구매까지 이어지는 고객 수는 몇 명인가? 아니면 이탈자를 얼마나 잘 식별할 수 있을까? 등이 있습니다. 이러한 기준을 정량적으로 나타낼 수 있는 지표는 그림과 같이 회귀와 분류 문제에서 쓰임새가 각각 상이합니다. 

위 그림은 Gini 기준으로 이탈자를 분류하는 모형을 만들었을 때의 결과이며 개발, 검증, 테스트 세트의 성능이 크게 차이가 나지 않는 안정적인 모델이라고 볼 수 있습니다.

※여기서 최종 성능 테스트 세트의 성능을 기준으로 합니다.

분류문제 중에서도 이진분류의 성능은 두가지 기준으로 평가합니다. 쉽게 말하면 원하는 것을 얼마나 잘 찾나, 그리고 원하지 않는 것을 얼마나 잘 걸러 내는지가 관건입니다. 다빈치랩스는 이 두가지 방법을 2×2 혼동 행렬로 시각화하여 보여주며 혼동 행렬에 의해 Accuracy 혹은 F1 score를 평가기준으로 선택합니다. (그외 정밀도, 재현율등 다양한 평가 기준이 있습니다.) 일반적으로 타겟의 구성 비율이 매우 적어 불균형한 경우에는 Accuracy 보다는 정밀도와 재현율의 조화평균인 F1 score를 선택해야합니다. 예를 들어 사기탐지의 경우 1000건의 거래 데이터에서 사기 발생 건수가 2건이라면 모든 거래가 정상이라고 판단해도 Accuracy는 99.8%의 높은 성능을 보여줍니다. 위 그림은 F1 score 기준으로 이탈자를 분류하는 모형을 만들었을 때의 결과이며 개발, 검증, 테스트 세트의 성능이 크게 차이가 나지 않는 안정적인 모델이라고 볼 수 있습니다. 

머신러닝을 사용하다보면 가장 우려스러운 부분은 단연 과적합 문제입니다. 과대적합은 학습데이터에는 잘 맞지만 일반성이 떨어져 새로운 데이터가 주어졌을 때 예측 성능이 상대적으로 떨어지고 무의미한 모델이 됩니다. 극단적인 예로 분류 모델이 이탈 고객의 이름과 이력을 통째로 외워버리면 학습 데이터는 완벽하게 예측하겠지만 새로운 고객에겐 전혀 사용할 수 없습니다. 반대로 과소적합은 모델이 너무 단순해서 데이터의 특성을 제대로 반영하지 못하는 경우입니다. 

이러한 현상들을 방지하기 위한 다양한 방법이 존재하며 그중 하나는 위에서 언급한 교차검증 방법을 통해 좀 더 안정적인 모델링 찾는것입니다. 이탈율 예제에서는 챔피언 모델인 Random Forest의 학습, 검증, 테스트 세트의 성능은 각각 F1-score 기준으로 0.57, 0.59, 0.57 로 성능 차이가 크게 나지 않으며 안정적이라고 볼 수 있습니다. 

6


결과 해석

머신러닝은 뛰어난 예측력에 비해 설명력이 다소 부족해 기업 내 의사결정이나 커뮤니케이션에서 어려움을 겪기 쉽습니다. 다빈치랩스는 모델 별 중요 변수들을 정렬하여 제공해줄뿐만아니라 설명력을 높이기 위한 Explanation 기능을 제공합니다. 아래는 회귀문제로 풀었을 때 챔피언 모델인 Random Forest를 활용한 모델의 설명력을 나타내는 이미지이며 타겟에 긍정적 혹은 부정적 영향을 척도로 시각화하여 볼 수 있습니다. 상품개수와 나이는 그림에서 볼 수 있듯이 이탈 여부에 대하여 영향을 제일 많이 끼치는 변수인것을 알 수 있습니다. 

좀 더 디테일하게 타겟을 예측하는데 각 변수들이 얼마나 영향을 주는지에 대해서도 고객 별(샘플 별)로 영향도를 정량화하여 확인 할 수 있습니다. 첫번째 고객(샘플)의 경우, 예측값이 0.16정도로 1보다는 0에 더 가깝고 두번째 고객(샘플)의 경우, 예측값이 0.88정도로 1에 더 가까우므로 첫번째 고객보다는 이탈할 확률이 훨씬 더 높다는 것을 알 수 있습니다. 그러면 이 두 고객에 대해 이탈율을 예측함에 있어 어떤 변수들이 영향을 많이 미치는지에 대해서는 score를 통해 그 여부를 확인 할 수 있습니다. 

7


모델 배포 및 운영

모델 학습 및 평가가 완료되면 엑셀 형식으로 다운받은 결과물을 실제로 사용할 수 있습니다. 예를 들면 신규 고객에서 한해서 테스트 데이터세트로 업로드하여 미리 학습한 모델에 의해 예측 값을 얻는것입니다. 혹은 나아가서 좀 더 심플하게 모델 전산반영 즉 실무자가 운영할 수 있게 운영단에 배포하여 실시간으로 활용하는것입니다. 이 번거러운 작업 역시 다빈치랩스 내에서 2가지 방식으로 간단하게 진행 가능합니다. 첫번째는, 예측함수를 다운로드하여 운영단에 전달하는 방식입니다. 자바 라이브러리 형태의 예측함수는 로컬 시스템에 쉽게 Integration이 가능하며 한번 적용되면 모델 파일을 변경하는것만으로 모델 업데이트가 가능합니다. 두번째는, 예측서버를 사용한다면 다빈치랩스 내에서 원클릭으로 해당 서버 연결을 통해 평가 완료된 모델을 배포할 수 있습니다. 

4
룰 최적화
Rule Optimization

지도학습이 예측을 목적으로 한다면 룰 최적화 기능은 예측하고자 하는 타겟(목표 값)을 기반으로 자동 혹은 수동으로 패턴(군집)을 찾아주는 기능입니다. 타겟 평균 대비 긍정적/부정적으로 크게 영향을 미치는 유의미한 군집을 통계수치와 함께 시각화하여 보여주며 자동으로 찾아진 군집들에 새로운 속성(변수)을 추가하여 어떻게 반응하는지도 바로 확인할 수도 있습니다. 이탈 데이터 예제로 룰 최적화를 실행한 결과에서 상품 수 하나로 구성된 군집에 나이 변수를 추가했을 때 최적화된 새로운 변수의 범위와 함께 해당 군집의 전체 개수와 타겟값을 보여줍니다. 나이가 44.5세 이상이고 63.5세 이하면서 상품 보유 수가 2.5 개 보다 큰 고객들이 111명이고 이 고객들은 전체 고객보다 이탈할 확률이 4배 가까이 (391%)라고 해석할 수 있습니다. 

.


수동 결합필드 활용

룰 최적화 방식을 통한 그룹화된 변수들을 다빈치랩스에서

지도학습 시 변수 가공에도 활용할 수 있습니다. 



예를 들면

5
마무리
Summary

머신러닝 예측 모델은

테이블 형태의 데이터를 활용하고 있는 대부분의 산업 영역에서

활용 가능한 것으로 알려져 있습니다.

다빈치랩스 역시 그동안 다양한 분야에서 성공적으로 보험 인수심사모델 개선, 개인 신용 대출 신규 대출이나 갱신 심사 모델 개선, 신용카드 신규발행이나 갱신심사 모델 개선, 마케팅 분야(계좌 개설 여부등) 모델 개선, 금융권 이외에도 다수 영역에서 모델을 개선하였습니다. 다빈치랩스는 데이터 속에 잠재된 가치를 이끌어내 강력한 예측 성능과 개발 속도를 개선하여 상향평준화된 결과를 제공합니다 .