세줄 코딩(실무용 알고리즘)

AutoML(자동화 기계 학습)로 누구나 만들 수 있는 예측 모델

정데만 2023. 9. 15. 15:37
728x90

예측에 대한 부담감

통계학이나 기계학습(Meachie Leaning) 이론을 읽어본 적 없다면, 예측모델은 아무리 쉽게 만들 수 있다고 해도 사용하기에 앞서 막연한 부담감을 가질 수 밖에 없다. 이는 예측이라는 단어 자체가 가진 불확실성과 일상에서 접하는 예측이 자주 틀리기 때문인데, 특히 기상과 시장 예측 분야는 앞으로도 원하는 만큼 정확해질 가능성은 적다.

 
예측이 틀리는 가장 큰 이유는 기대치와 참여 주체의 개입, 그리고 데이터 부족을 꼽을 수 있다.
 
1) 기대치로 인하여 개인이 예측모델의 정확도를 판단할 때는 자신의 겪은 사건에 대해 높은 확률을 부여하는 확증편향을 포함하게 된다. 기상 예측 분야는 소풍날 생각지 못한 비가 오거나, 평소와 달리 우산을 챙겨간 날 비가 오지 않는 등 개인에게는 다르게 느껴질 수 밖에 없기 때문에 높은 기대치에 비해 정확도에 대한 평가는 항상 낮을 수 밖에 없다.
 
2) 참여자의 개입으로 예측이 바뀌는 현상이 발생할 수 있다. 주로 시장 예측 시 빈번하게 발생하는 데 경제전문가들이 경기침체로 인해 유가하락을 예측하더라도, 공급 주체가 이에 반발하여 생산량을 줄여 오히려 가격이 상승하거나, 물가로 인한 환율 상승이 예상되었으나, 연준이 경기침체를 이유로 시중에 자금을 풀어 개입하는 등 시장에 참여하는 영향력 있는 주체들이 사건에 개입하여 일반적인 확률을 뒤흔드는 상황이 발생하는 것이다.
 
3) 데이터 부족현상은 기상과 시장예측 모두 해당하는 현상으로 기상 예측은 최근 온난화로 인한 기상이변이 속출하는 데 반해 이를 예측하기 위한 과거 데이터가 충분치 않는 부분이 있으며, 시장 예측의 경우 과거 유사한 상황에 대해 종합적인 데이터를 수집하기 어렵다는 점과 참여자의 행동을 데이터화하는 게 불가능하다는 문제를 가지고 있다.

 


그럼에도 실무에서는 활발하게 사용!

이러한 평가에도 불구하고 비즈니스 환경에서 예측모델은 굉장히 유용하게 활용된다.
 
데이터기반 예측모델은 결국 과거에 발생한 사건에 대해 통계적 확률을 계산해 주는 것이기 때문에 위에 언급된 문제점이 적정수준으로만 해소된다면, 반복된 업무에서 매번 사람이 직접 처리하는 것 보다, 자동화되고 객관적인 판단을 내릴 수 있는 장점을 가지고 있다. 이러한 관점에서 실무에서 사용되는 예측모델은 다음과 같다.
 
1) 리스크 관리 : 대출에 대한 리스크 관리를 목적으로 쓰이는 개인신용평가는 개인의 속성 정보와 금융 거래 이력을 활용해서 연체 및 상환여부를 예측하는 모델이다. 그래서 한 때 돌려막기로 인해 카드 발급회수가 신용평가점수를 낮추는 결과를 낳기도 하였다.
 
2) 마케팅 : 구매 확률이 높은 고객을 추출하는 타겟팅부터 상품 선호도, 그리고 SMS/전화 등 광고 수신률까지 마케팅에 관련된 모든 활동과 의사결정에서 예측 모델이 활발하게 이용되고 있다. 특히 비대면 서비스와 디지털 플랫폼이 많아지면서 적용 범위가 확대되고 있다.
 
3) AI :  데이터에 기반한 동작관점에서 이미지 분류, 음성/문자인식 등의 간단한 AI는 예측모델(Classification 목적)에 속한다. 다만, 챗GPT와 같은 AI는 단순히 예측모델이라기엔 다양한 기술이 적용되어있으며, 예측보다는 데이터와 알고리즘에 기반한 학습을 목적으로 활용된다.
 
위와 같은 예측 모델들은 시장 전체를 뒤흔들만한 상황이 발생하지 않는다면, 대부분 높은 정확도의 예측 결과를 얻을 수 있으며, 데이터를 많아질 수록 고도화 될 수 있다.

 


AutoML로 초간단 예측 모델  생성

그렇다면 실무에서 사용할 수 있는 예측모델을 간단하게 만들어보자. 다만! 예측모델 특유의 번거로운 변수 선정이나 최적화 과정을 모조리 생략하고 실무에 활용하기에도 적합한 AutoML알고리즘을 이용하는 방법을 알아보고자 한다.
 
AutoML은 Automated Machine Learning(자동화 기계 학습)의 약자로 단순 예측 모델 뿐 아니라 이미지와 자연어처리까지 다양한 분야에 걸쳐 라이브러리가 공개되어 있다. 특히, 클라우드 서비스와 오픈소스 재단을 중심으로 꾸준히 고도화 해오면서 최근에는 모델링 과정에서 휴먼에러가 감소하면서 오히려 높은 성능을 보이는 경우도 있다.

 

무엇보다 생산성이 높아짐에 따라 시장이 빠르게 변화하는 마케팅 분야에서 유용하게 활용될 수 있다.

예시로 소개할 라이브러리는 Amazon에서 공개한 Autogluon알고리즘으로 다양한 알고리즘을 알아서 실행한 후 가장 좋은 모델을 선택해주는 방식이다.

 

기본코드는 아래와 같이 3줄로 구성되어 있다.

from autogluon.tabular import TabularPredictor #라이브러리 호출
predictor = TabularPredictor(label='y').fit(train) #예측 모델 만들기
pred_y = predictor.predict(test) #예측

 

첫줄에 AutoML라이브러리 호출, 2번째줄에서 모델링, 3번째줄에서 예측으로 프로그래밍 코드라는 점만 제외하면 명령어만 입력하면 바로 실행해주는 아주 간단한 구조로 데이터를 정리하기 위한 코드조차 필요 없다.

 


예측 모델 생성 예시

우선, Amazon에서 예측 모델을 테스트해볼 수 있도록 제공하는 데이터(https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv)를 내려받아서 Class(소득구간)를 예측하는 모델을 만들어보자.

 

데이터 구조

 

보통의 예측 모델을 만들 때는 텍스트로 구분된 값을 숫자로 변환하는 등 데이터를 정리하는 작업이 필요하지만 Autogluon에서는 모조리 생략해도 된다.

 

코랩에서 라이브러리를 설치하고 데이터 업로드, 그리고 예측모델을 생성하기까지 필요한 코드는 모두 5줄로 다음과 같다.

 

설치 및 데이터, 예측모델 생성까지

 


 

예측 및 성능 테스트(필요 시)

생성한 모델의 성능을 테스트하기 위해 다시 Amazon에서 테스트용 데이터(https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv)을 내려받은 후 실제 class값은 지우고 업로드한 후 아래의 코드를 실행해보자.

 

 

마지막 줄의 코드를 입력하면 pred.csv라는 파일로 예측된 결과가 저장되며 좌측의 파일을 내려받으면 예측값을 활용할 수 있다.그렇다면, 내가 만든 모델의 성능은 어떨까? 

 

아까 잘라둔 실제 class값을 별도의 파일(test_origin.csv)로 저장한 후 아래의 코드를 입력하면 성능을 확인할 수 있다. 

result = predictor.evaluate_predictions(y_true=test_origin['class'], y_pred=pred_y)

 

첫줄의 accuracy on test data: 0.876은 정확도를 뜻하는 지표로 테스트 데이터에서 87.6%를 맞췄음을 알 수 있다. 만약 이러한 방법이 복잡하게 느껴진다면, 마케팅 목적의 모델에서는 실제 값을 가지고 있는 테스트용 데이터와 예측결과를 엑셀에 붙여서 정답률만 확인해봐도 된다.

 

성능 검증 결과


 

728x90