앞선 머신러닝의 기본 개념과 이해편에서는 머신러닝이란 무엇이며 이를 통해 얻을 수 있는 모델이란 무엇인지, 또 그 학습의 방법에는 어떤 것들이 있는지 간략하게 알아보았습니다. 이번에는 그중에서도 지도학습 모델링에 초점을 맞추어, 모델을 잘 개발하기 위해서는 어떤 점을 유의해야 하는지 알아보겠습니다.
1. 모델 개발의 정의
앞서 알아본 것처럼 #다빈치랩스 는 머신러닝 모델 개발을 자동화해주고 최적화해주는 솔루션입니다. 그렇다면 다빈치랩스에 아무 데이터나 업로드하면 훌륭한 성능의 머신러닝 예측 모델이 뚝딱 완성되어 나오는 것일까요?
결론부터 말씀드리면 그렇지 않습니다. 더 정확히는 반은 맞고 반은 틀렸다고 해야겠네요. 왜 그럴까요?
어떤 데이터를 써야 모델링이 잘 될 지 고민이로다
그 이유를 알아보기 위해서는 우선 머신러닝 모델 개발이라는 개념의 의미를 자세히 들여다봐야 합니다. 다빈치랩스는 데이터를 알고리즘으로 학습하여 완성해주지만 "예측에 활용할 수 있는" 가능성을 보유하려면 두 가지의 전제 조건이 붙기 때문입니다. 바로 목적에 맞게 준비된 데이터이어야 하고, 사전에 수립한 목표에 적합한 지표로 모델을 평가해 채택해야 한다는 전제입니다.
결론적으로 모델을 개발하는 행위에 앞서 행위의 목적과 목표에 대한 설계가 수반되어야 하며, 그러한 행위는 다빈치랩스에서 자동화해줄 수 있지만, 목적과 목표의 설정은 오롯이 사용자의 몫이라고 할 수 있습니다. 물론 행위 자체를 자동화해준다는 점은 데이터 전문가를 대동하여 코딩으로 알고리즘을 개발해야 하는 일반적인 머신러닝보다 훨씬 큰 장점이 있지요.
2. 모델 개발 프로세스
목표 정의 → 데이터 구비 → 데이터 전처리 → 알고리즘 최적화 → 모델 평가 및 해석 → 모델 운영
머신러닝 모델 개발 프로세스는 위와 같이 목표를 정의하는 단계에서부터 모델 운영까지 이르게 됩니다. 이 중 다빈치랩스가 자동화하여 사용자의 편의를 제고하는 영역은 데이터 전처리에서부터 모델을 추출하여 운영할 수 있도록 돕는 단계까지입니다.
결국 자동화 외의 영역인 목표 정의와 데이터 구비, 운영 부분은 인간 주관의 영역이라고 할 수 있습니다. 주어진 데이터에 기반한 판단은 인공지능이 수행할 수 있으나 그 판단의 결과를 평가하고 비즈니스 전략으로 실행하는 것은 인간의 몫이 될 수 밖에 없습니다.
위에 언급한 프로세스는 선생님과 학생의 단계와도 유사합니다. 학생은 열심히 문제(데이터)를 풀면서 풀이법(알고리즘)을 익히고 실력(모델 성능)을 향상시킬 수 있지만 이 학생이 시험을 잘 보기 위해서 무엇을 가르쳐야 할지, 올바른 가치관은 무엇인지, 학업 성취도를 어떻게 판단해야 할 지와 같은 역할은 선생님만이 할 수 있고 그게 바로 다빈치랩스의 유저입니다.
우리는 머신러닝을 데이터 학습력과 예측력이 뛰어난 학생이라고 여겨야 합니다
머신러닝 예측모델 개발의 핵심은 명확한 목표의 설계에 있다
이러한 맥락에서 훌륭한 머신러닝 예측모델을 개발하기 위한 첫 단계는 학습의 목적과 주제의 정의일 것입니다. 무엇을 배워 어떠한 성과를 내야 하는지 명확히 규명되어 있지 않다면 그 학습의 질이 떨어지는 것은 당연한 일이니까요.
모델을 개발하기에 앞서 우리는 반드시 주제를 명확히 해야 합니다. 고객 이탈율이 될 수도, 가격 예측이 될 수도 있죠. 그리고 이러한 주제는 사용자의 도메인/업무 이해도와 직결됩니다. 비즈니스를 수행하며 획득한 다양한 배경지식, 그리고 데이터에 대한 이해가 수반되어야만 본인이 보유한 데이터를 활용해 어떤 주제를 분석할 수 있을지 명확히 할 수 있습니다. 주제와 예측하고자 하는 대상이 명확히 규정되었다면, 훌륭한 예측모델을 만들기 위한 구부능선을 이미 넘었다고 봐도 무방할 것입니다.
가치 있는 데이터를 넣어야, 가치 있는 결론이 도출된다
주제가 정해졌다면 다빈치랩스에 어떤 데이터를 투입할지에 대한 결정을 내려야 합니다. 보유하고 있는 모든 데이터를 투입한다고 훌륭한 예측모델을 개발할 수 있을까요? 그렇지 않습니다. 이건 마치 수학실력을 향상해야 하는 학생에게 국영수 모두를 가르치는 것과 같은 맥락이기 때문이죠.
머신러닝과 관련된 유명한 격언이 하나 있습니다. "Garbage in, Garbage out" 무용한 데이터를 넣으면 무용한 결론밖에 얻을 수 없다는 것이죠. 그렇기 때문에 모델 개발에 사용할 데이터 세트를 구축하는 과정에서도, 해당 주제와 주제가 속한 비즈니스에 해박한 선생님인 사용자의 올바른 판단이 필수적입니다.
3. 모델 성능 평가
주어진 데이터를 다빈치랩스가 학습해 예측이 가능한 모델을 만들었다면, 이제는 어떤 모델이 우수한지, 현재 내 목적에 적합한 모델인지 판단하는 단계가 필요합니다.
다빈치랩스는 주어진 주제(타겟 필드)의 유형에 따라 적합한 성능지표를 자동으로 제공해줍니다. 성능은 수치로써 전달되지만, 수치의 높고 낮음이 절대적인 성능 평가의 기준이 되지는 않습니다. 그 이유는 모델 개발의 목적에 따라 적합한 지표의 종류가 달라질 수 있기 때문이며, 사용자는 본인이 최초에 설정한 주제를 평가하기에 가장 적합한 지표를 설정해 참고해야만 예측의 목적을 온전히 달성할 수 있게 됩니다.
하나의 예를 들어볼까요? 다빈치랩스를 통해 고객 이탈율 모델을 개발했다고 가정해봅시다. 개발이 완료되고 비슷하게 높은 성능을 보이는 모델이 두 개 있습니다.
Confusion matrix of Model 1(left) & Model 2(right)
두 모델의 #ConfusionMatrix 를 캡쳐한 건데요, Confusion Matrix란 대상을 분류하는 모델에 대해 예측값과 실제값의 올바른 판단과 틀린 판단을 비교한 표입니다.
Model 1.
- 유지 고객을 올바르게 예측: 1437
- 유지 고객을 틀리게 예측: 147
- 이탈 고객을 틀리게 예측: 135
- 이탈 고객을 올바르게 예측: 250
Model 2.
- 유지 고객을 올바르게 예측: 1545
- 유지 고객을 틀리게 예측: 39
- 이탈 고객을 틀리게 예측: 207
- 이탈 고객을 올바르게 예측: 178
만약 당신이 담당자라면 어떤 모형을 선택해야 할까요? 기존 고객의 유지 및 이탈을 방지하는 것이 중요한 상황이라면, "이탈 고객군을 정확히, 그리고 최대한 많이 예측하는 모형"인 왼쪽 모델1을 선택하는 것이 적절해 보입니다.
그러나 마케팅 예산이 한정되어 있어 아주 적은 고객군을 대상으로 고효율의 프로모션이 진행되어야 하는 상황이라 가정해볼까요? Model 1의 경우 위험 고객군(이탈할 것이라 예상되는)을 총 397명(147+250) 예측하였고 적중률(마케팅 효율)은 250/397=62.9%, Model 2의 경우 총 위험 고객군을 217명(39+178) 예측하였고 적중률은 178/217=82%가 나왔습니다. 이 경우에는 오른쪽 모델2를 선택하는 것이 적절해 보입니다.
이처럼 개발된 모델에 대한 평가는 사용자의 비즈니스 경험과 주제의 목적성에 입각해 내려져야만 우수한 예측모델을 획득할 수 있습니다. 조만간 다양한 성능지표의 의미와 어떻게 활용할 수 있는지에 대한 내용도 다루도록 하겠습니다.
4. 모델도 나이를 먹는다
이제 모델 개발의 마지막 단계입니다. 바로 개발이 완료된 모델의 운영에 관한 이야기입니다. 개발이 끝난 모델에 대해서도 사용자의 판단이 필요하다니 의아하실 수도 있을텐데요, 이 단계에서 사용자의 해석과 판단을 필요로 하는 이유는 위에 적힌 것처럼 모델과 데이터도 나이를 먹기 때문입니다.
시간은 참으로 공평해서 머신러닝 모델에게도 동일하게 적용됩니다. 모델을 개발하고 개발한 모델을 운영하는 과정 중에서도 시간은 동일하게 흐르는 것이죠. 시간이 흐르면서 최초 모델을 개발한 시점에 비해 예측을 필요로 하는 데이터의 성격과 경향에도 변화가 생기게 됩니다. 어떤 모델의 경우 오랜 시간동안 계속해서 사용해도 최초의 예측 성능을 유지하는 경우도 있으나, 대부분의 경우 시간의 경과에 따라 모델의 예측 성능 또한 하락합니다.
따라서 비즈니스 전문가인 사용자는 모델의 성능을 최적으로 유지하기 위해 어느 시점에 모델을 재학습시켜야 할지 그 기준을 수립하는 판단을 수행해야 합니다. 여기서 말하는 재학습이란 모델이 개발된 시점 이후에 새롭게 쌓인 데이터를 학습데이터에 포함시켜 학습시키는 것을 의미합니다.

시간의 경과에 따라 모델의 성능이 저하되고 있습니다

업데이트를 자주 해주면 이렇게 성능이 회복되지요
다행히도 다빈치랩스에서는 모델 업데이트 기능을 통해 주기적으로 성능을 유지할 수 있는 기능을 보유하고 있습니다. 아래 이미지와 같이 업데이트 주기, 시각 등을 설정하면 데이터의 성능이 저하될 우려가 있는 시점에 알람을 받을 수 있고, 유저가 적절히 기존 모델에 신규 데이터를 추가 학습시킬 수 있죠.
이상 모델 개발을 잘 하기 위해서 필요한 핵심 사항들을 알아보았습니다. 모델 개발 프로세스 중 데이터 전처리나 알고리즘 최적화 관련해서도 이야기 나누고 싶은 게 많이 있으니 기대해주시기 바랍니다.
앞선 머신러닝의 기본 개념과 이해편에서는 머신러닝이란 무엇이며 이를 통해 얻을 수 있는 모델이란 무엇인지, 또 그 학습의 방법에는 어떤 것들이 있는지 간략하게 알아보았습니다. 이번에는 그중에서도 지도학습 모델링에 초점을 맞추어, 모델을 잘 개발하기 위해서는 어떤 점을 유의해야 하는지 알아보겠습니다.
1. 모델 개발의 정의
앞서 알아본 것처럼 #다빈치랩스 는 머신러닝 모델 개발을 자동화해주고 최적화해주는 솔루션입니다. 그렇다면 다빈치랩스에 아무 데이터나 업로드하면 훌륭한 성능의 머신러닝 예측 모델이 뚝딱 완성되어 나오는 것일까요?
결론부터 말씀드리면 그렇지 않습니다. 더 정확히는 반은 맞고 반은 틀렸다고 해야겠네요. 왜 그럴까요?
어떤 데이터를 써야 모델링이 잘 될 지 고민이로다
그 이유를 알아보기 위해서는 우선 머신러닝 모델 개발이라는 개념의 의미를 자세히 들여다봐야 합니다. 다빈치랩스는 데이터를 알고리즘으로 학습하여 완성해주지만 "예측에 활용할 수 있는" 가능성을 보유하려면 두 가지의 전제 조건이 붙기 때문입니다. 바로 목적에 맞게 준비된 데이터이어야 하고, 사전에 수립한 목표에 적합한 지표로 모델을 평가해 채택해야 한다는 전제입니다.
결론적으로 모델을 개발하는 행위에 앞서 행위의 목적과 목표에 대한 설계가 수반되어야 하며, 그러한 행위는 다빈치랩스에서 자동화해줄 수 있지만, 목적과 목표의 설정은 오롯이 사용자의 몫이라고 할 수 있습니다. 물론 행위 자체를 자동화해준다는 점은 데이터 전문가를 대동하여 코딩으로 알고리즘을 개발해야 하는 일반적인 머신러닝보다 훨씬 큰 장점이 있지요.
2. 모델 개발 프로세스
목표 정의 → 데이터 구비 → 데이터 전처리 → 알고리즘 최적화 → 모델 평가 및 해석 → 모델 운영
머신러닝 모델 개발 프로세스는 위와 같이 목표를 정의하는 단계에서부터 모델 운영까지 이르게 됩니다. 이 중 다빈치랩스가 자동화하여 사용자의 편의를 제고하는 영역은 데이터 전처리에서부터 모델을 추출하여 운영할 수 있도록 돕는 단계까지입니다.
결국 자동화 외의 영역인 목표 정의와 데이터 구비, 운영 부분은 인간 주관의 영역이라고 할 수 있습니다. 주어진 데이터에 기반한 판단은 인공지능이 수행할 수 있으나 그 판단의 결과를 평가하고 비즈니스 전략으로 실행하는 것은 인간의 몫이 될 수 밖에 없습니다.
위에 언급한 프로세스는 선생님과 학생의 단계와도 유사합니다. 학생은 열심히 문제(데이터)를 풀면서 풀이법(알고리즘)을 익히고 실력(모델 성능)을 향상시킬 수 있지만 이 학생이 시험을 잘 보기 위해서 무엇을 가르쳐야 할지, 올바른 가치관은 무엇인지, 학업 성취도를 어떻게 판단해야 할 지와 같은 역할은 선생님만이 할 수 있고 그게 바로 다빈치랩스의 유저입니다.
우리는 머신러닝을 데이터 학습력과 예측력이 뛰어난 학생이라고 여겨야 합니다
즉 우리는 아래와 같이 말할 수 있습니다.
이러한 맥락에서 훌륭한 머신러닝 예측모델을 개발하기 위한 첫 단계는 학습의 목적과 주제의 정의일 것입니다. 무엇을 배워 어떠한 성과를 내야 하는지 명확히 규명되어 있지 않다면 그 학습의 질이 떨어지는 것은 당연한 일이니까요.
모델을 개발하기에 앞서 우리는 반드시 주제를 명확히 해야 합니다. 고객 이탈율이 될 수도, 가격 예측이 될 수도 있죠. 그리고 이러한 주제는 사용자의 도메인/업무 이해도와 직결됩니다. 비즈니스를 수행하며 획득한 다양한 배경지식, 그리고 데이터에 대한 이해가 수반되어야만 본인이 보유한 데이터를 활용해 어떤 주제를 분석할 수 있을지 명확히 할 수 있습니다. 주제와 예측하고자 하는 대상이 명확히 규정되었다면, 훌륭한 예측모델을 만들기 위한 구부능선을 이미 넘었다고 봐도 무방할 것입니다.
주제가 정해졌다면 다빈치랩스에 어떤 데이터를 투입할지에 대한 결정을 내려야 합니다. 보유하고 있는 모든 데이터를 투입한다고 훌륭한 예측모델을 개발할 수 있을까요? 그렇지 않습니다. 이건 마치 수학실력을 향상해야 하는 학생에게 국영수 모두를 가르치는 것과 같은 맥락이기 때문이죠.
머신러닝과 관련된 유명한 격언이 하나 있습니다. "Garbage in, Garbage out" 무용한 데이터를 넣으면 무용한 결론밖에 얻을 수 없다는 것이죠. 그렇기 때문에 모델 개발에 사용할 데이터 세트를 구축하는 과정에서도, 해당 주제와 주제가 속한 비즈니스에 해박한 선생님인 사용자의 올바른 판단이 필수적입니다.
3. 모델 성능 평가
주어진 데이터를 다빈치랩스가 학습해 예측이 가능한 모델을 만들었다면, 이제는 어떤 모델이 우수한지, 현재 내 목적에 적합한 모델인지 판단하는 단계가 필요합니다.
다빈치랩스는 주어진 주제(타겟 필드)의 유형에 따라 적합한 성능지표를 자동으로 제공해줍니다. 성능은 수치로써 전달되지만, 수치의 높고 낮음이 절대적인 성능 평가의 기준이 되지는 않습니다. 그 이유는 모델 개발의 목적에 따라 적합한 지표의 종류가 달라질 수 있기 때문이며, 사용자는 본인이 최초에 설정한 주제를 평가하기에 가장 적합한 지표를 설정해 참고해야만 예측의 목적을 온전히 달성할 수 있게 됩니다.
하나의 예를 들어볼까요? 다빈치랩스를 통해 고객 이탈율 모델을 개발했다고 가정해봅시다. 개발이 완료되고 비슷하게 높은 성능을 보이는 모델이 두 개 있습니다.
Confusion matrix of Model 1(left) & Model 2(right)
두 모델의 #ConfusionMatrix 를 캡쳐한 건데요, Confusion Matrix란 대상을 분류하는 모델에 대해 예측값과 실제값의 올바른 판단과 틀린 판단을 비교한 표입니다.
Model 1.
- 유지 고객을 올바르게 예측: 1437
- 유지 고객을 틀리게 예측: 147
- 이탈 고객을 틀리게 예측: 135
- 이탈 고객을 올바르게 예측: 250
Model 2.
- 유지 고객을 올바르게 예측: 1545
- 유지 고객을 틀리게 예측: 39
- 이탈 고객을 틀리게 예측: 207
- 이탈 고객을 올바르게 예측: 178
만약 당신이 담당자라면 어떤 모형을 선택해야 할까요? 기존 고객의 유지 및 이탈을 방지하는 것이 중요한 상황이라면, "이탈 고객군을 정확히, 그리고 최대한 많이 예측하는 모형"인 왼쪽 모델1을 선택하는 것이 적절해 보입니다.
그러나 마케팅 예산이 한정되어 있어 아주 적은 고객군을 대상으로 고효율의 프로모션이 진행되어야 하는 상황이라 가정해볼까요? Model 1의 경우 위험 고객군(이탈할 것이라 예상되는)을 총 397명(147+250) 예측하였고 적중률(마케팅 효율)은 250/397=62.9%, Model 2의 경우 총 위험 고객군을 217명(39+178) 예측하였고 적중률은 178/217=82%가 나왔습니다. 이 경우에는 오른쪽 모델2를 선택하는 것이 적절해 보입니다.
이처럼 개발된 모델에 대한 평가는 사용자의 비즈니스 경험과 주제의 목적성에 입각해 내려져야만 우수한 예측모델을 획득할 수 있습니다. 조만간 다양한 성능지표의 의미와 어떻게 활용할 수 있는지에 대한 내용도 다루도록 하겠습니다.
4. 모델도 나이를 먹는다
이제 모델 개발의 마지막 단계입니다. 바로 개발이 완료된 모델의 운영에 관한 이야기입니다. 개발이 끝난 모델에 대해서도 사용자의 판단이 필요하다니 의아하실 수도 있을텐데요, 이 단계에서 사용자의 해석과 판단을 필요로 하는 이유는 위에 적힌 것처럼 모델과 데이터도 나이를 먹기 때문입니다.
자네 지금 언제적 데이터를 들고 온겐가?
시간은 참으로 공평해서 머신러닝 모델에게도 동일하게 적용됩니다. 모델을 개발하고 개발한 모델을 운영하는 과정 중에서도 시간은 동일하게 흐르는 것이죠. 시간이 흐르면서 최초 모델을 개발한 시점에 비해 예측을 필요로 하는 데이터의 성격과 경향에도 변화가 생기게 됩니다. 어떤 모델의 경우 오랜 시간동안 계속해서 사용해도 최초의 예측 성능을 유지하는 경우도 있으나, 대부분의 경우 시간의 경과에 따라 모델의 예측 성능 또한 하락합니다.
따라서 비즈니스 전문가인 사용자는 모델의 성능을 최적으로 유지하기 위해 어느 시점에 모델을 재학습시켜야 할지 그 기준을 수립하는 판단을 수행해야 합니다. 여기서 말하는 재학습이란 모델이 개발된 시점 이후에 새롭게 쌓인 데이터를 학습데이터에 포함시켜 학습시키는 것을 의미합니다.
시간의 경과에 따라 모델의 성능이 저하되고 있습니다
업데이트를 자주 해주면 이렇게 성능이 회복되지요
다행히도 다빈치랩스에서는 모델 업데이트 기능을 통해 주기적으로 성능을 유지할 수 있는 기능을 보유하고 있습니다. 아래 이미지와 같이 업데이트 주기, 시각 등을 설정하면 데이터의 성능이 저하될 우려가 있는 시점에 알람을 받을 수 있고, 유저가 적절히 기존 모델에 신규 데이터를 추가 학습시킬 수 있죠.
이상 모델 개발을 잘 하기 위해서 필요한 핵심 사항들을 알아보았습니다. 모델 개발 프로세스 중 데이터 전처리나 알고리즘 최적화 관련해서도 이야기 나누고 싶은 게 많이 있으니 기대해주시기 바랍니다.