[머신러닝 특집] 데이터에 숨은 통찰력을 발견하라

비즈니스 현장에서 시스템이 제공하는 대용량의 데이터를 수집하고 분석하는 것은 이제 필수다. 사용자의 클릭 데이터나 이메일 캠페인 응답에서 얻어진 기가바이트, 페타바이트급의 데이터엔 우리가 미처 발견하지 못한 통찰력이 숨어있다.

[toggle title=”필자 소개” load=”show”]
윤석찬 | 아마존웹서비스(AWS)의 테크 에반젤리스트다. 1996년 웹 개발자로 인터넷 업계에 투신해 나인포유 CTO, Mozilla 오픈소스 커뮤니티 리더 및 IT 분야 블로거 등 다양한 역할을 수행했다. 최근까진 다음카카오에서 연구개발 부서 리더 및 오픈 API 플랫폼 에반젤리스트로서 내부 API 플랫폼 구축 및 외부 개발자 지원을 담당했다.
[/toggle]

*이 글은 AWS 수석 테크 에반젤리스트인 제프 바(Jeff Barr)의 Amazon Machine Learning – Make Data-Driven Decisions at Scale의 글을 기초로 작성되었습니다.

기계학습(Machine Learning, ML)은 수학적인 방식으로 데이터를 분석하고 유의미한 결과를 만들어낸다. 대용량의 데이터에서 상관성을 찾아 높은 품질의 예측 결과를 내놓을 수 있다. ML을 잘 활용하면 부정 감지와 수요예측, 광고 타깃팅 등의 분야에서 도움을 받을 수 있다.

기업이 이를 실현하기 위해선 ML에 능한 우수한 데이터 과학자를 고용해야 한다. 이들을 위한 안정적이고 확장성 높은 분석 도구를 준비하고 고성능 인프라를 마련하는 것은 기본 중 기본이다.

아마존웹서비스(Amazon Web Services)는 이런 요구에 부응하고자, 아마존 머신러닝(Amazon Machine Learning) 서비스를 지난 4월 AWS 서밋에서 발표했다. 사용자는 이 서비스를 이용하면 비즈니스 의사 결정의 품질을 높이기 위한 데이터 활용할 수 있다. 대용량 데이터에서 정교한 예측 모델을 구축하고, 높은 확장성을 기반으로 예측 결과를 내놓는다. 물론 통계 및 수학에 대한 깊은 지식을 가지고 있지 않아도 이용 가능하다. 기계 학습 처리를 위한 인프라를 직접 구축하거나 운용할 필요도 없다. 이 글에서는 아마존 머신러닝의 기능과 바로 사용할 수 있도록 간단한 사용 방법을 소개를 하고자 한다.

기계 학습 알고리즘 소개
기계 학습 기능을 활용하려면 학습 데이터가 필요하다. 예를 들어, 데이터베이스나 엑셀 스프레드시트에 있는 각각 데이터 레코드(구매 이력이나 배송한 상품 목록)에서 우편 번호나 구입 가격과 같은 데이터가 있다고 가정하자.

이러한 학습 데이터는 실제 결과를 포함하고 있어야 한다. 정상적인 데이터와 비정상적인 데이터가 뒤섞인 거래 데이터가 있다면 각 행은 그것이 ‘정상’인지 ‘오류’ 데이터 인지를 나타내는 결과를 가지고 있어야 한다. 이를 목적 변수(target variable)라고 한다.

이 데이터는 기계 학습 모델을 구축하는 데 사용된다. 새로운 데이터가 입력되면 생성된 모델을 기반으로 예측하게 된다.

[toggle title=”아마존 머신러닝의 아래 세 가지 예측 모델” load=”show”]
이항 분류(Binary classification) : 입력된 데이터를 두 가지 선택 중 하나로 분류한다. 예를 들어 “이것은 정상적인 거래입니까?” 혹은 “이 고객이 이 제품을 살까요?”, “이 건물은 단독 주택 아니면 공동 주택인가요?” 같은 명제를 예측하는 데에 이용된다.

다항 분류(Multiclass classification) : 입력된 데이터를 세 개 이상 선택 사항 중 하나로 분류한다. “이 제품은 CD, DVD 또는 옷입니까?” 혹은 “이 영화의 장르가 코미디, 다큐멘터리, 공포물 중 하나입니까?” 그리고 “이 사용자는 어느 카테고리에 흥미를 가지고 있나요?” 같은 문제에 사용된다.

회귀분석(Regression) : 특정 값 예측에 사용한다. 예를 들어 “27인치 모니터 재고는 얼마나 가지고 있어야 하나요?” 혹은 “이 제품의 가격은 얼마나 해야 할까요?”, “이 상품 매출 중 몇 %정도가 선물로 판매됩니까?” 같은 문제의 예측에 활용된다.
[/toggle]

기계 학습으로 훈련 된 모델은 위의 문제 중 어느 하나에 대한 해답을 제공해준다. 경우에 따라서는 여러 모델에 동일한 훈련 데이터를 사용하는 것이 좋을 수도 있다.

먼저 할 일은 데이터의 양과 질을 높여가는 것이다. 이것은 물론 학습 과정의 정밀도를 올리기 위해서다. 예를 들어 우편 번호를 기반으로 지역 정보를 수집한다고 했을 때, 특정 시간이나 사용자 패턴 등 우편 번호 이외의 속성을 맞게 이용함으로써 예측의 정확도를 높일 수 있다. 기계 학습 과정은 반복적인 것이며, 훈련 데이터로부터 모델 구축 및 예측을 실시하고 결과를 평가하고, 훈련 데이터를 보다 정교하게 하는 과정을 반복해야 한다.

아마존 머신러닝 직접 해보기
아마존 머신 러닝의 모델 작성부터 예측을 실행하는 것을 과정을 간단하게 살펴보자. AWS 관리 콘솔에서 데이터 분석 서비스 분류의 아마존 머신러닝을 선택하면 바로 시작한다. 사용할 데이터는 UC Irvine Machine Learning Repository의 은행 마케팅 데이터(bank marketing dataset)를 활용하여, “우리의 고객이 새로운 금융 서비스를 사용할 것인가?”라는 문제의 답을 얻고자 한다.
아마존 S3로부터 분석 데이터 소환
1. 데이터 소스 준비하기
우선 다운로드한 banking.csv를 Amazon S3에 업로드 한 후, 이를 통해 분석 마법사를 실행한다.
데이터 소스로서 S3뿐만 아니라 아마존 레드시프트(Amazon Redshift)와 MySQL(아마존 RDS for MySQL)를 이용할 수 있다. 만약 레드시프트를 선택해 클러스터 또는 데이터베이스 이름, 인증 및 데이터 취득을 위한 SQL 쿼리 등을 입력하면 된다. 다음 단계에서는 업로드한 파일을 조사하여 각 열의 형식을 추측해 스키마를 제안한다.
분석 데이터 스키마 제안 검토하기
제안한 스키마가 맞지 않는 경우 체인지 타입(Change Type)을 클릭해 수동으로 수정한다. 이제 기계 학습 모델을 평가하고 구축에 이용하기 위해서는 훈련 변수를 지정해 줘야 한다. 이 데이터 세트의 훈련 변수 (y)는 바이너리 형식이므로 여기에서 구축된 예측 모델은 이항 분류를 이용한다.
데이터 소스 입력값 확인하기
데이터 소스의 준비 사항을 확인하고 완료를 누르면 된다.

2. 모델 만들기
이제 데이터 소스를 기반으로 기계 학습 모델을 만들어 보자. 먼저 ‘Create (train) an ML Model’을 선택한다. 다음 단계에서, 모델 생성을 위한 설정값을 정할 수 있으나, 우리는 입력한 데이터의 70%를 모델 만들기에, 30%를 평가 자료로 활용하는 기본 설정을 이용한다.

마찬가지로 몇 번 클릭하면 모델을 만든다. 생성하는 데 몇 분 정도 걸린다. 모델 작성이 완료되면 품질 기준값을 확인할 수 있다.

이항 분류에서는 모델을 구축하는 과정에서Area Under Curve(AUC) 값을 0과 1사이에서 조정해야 하는데, 0.5에서 1.0 사이에 있을 때 현실과 가까운 값이 된다. 모델의 예측도가 1.0이라면 판단할 필요도 없는 데이터이고, 0.0이라면 데이터에 문제가 있다는 것이다. 임계값 조정은 예측을 할 때 확률에 기반한다. 본래 false로 판정되어야 할 것을 true로 판정하는 false positive와, 본래 true로 판정되어야 할 것을 false로 판정하는 false negative을 보고 조정할 수 있다. 예를 들어 스팸 메일여부를 확인할 때 false positive가 발생하면 중요한 메일이 스팸 필터에 걸리게 된다. 이러한 일이 일어나지 않도록 임계값을 조정하는 것이다.

우리는 ‘Adjust Score Threshold’를 클릭해 새 뱅킹 서비스에 가입할 것 같은 고객을 선택하기 위해 5%의 레코드만 y의 값이 1이라고 판단되도록 임계값을 조정한다.
모델 성능 개선하기
위 그림의 설정은 false positive의 비율은 1.3%에 억제하고, 22%가 false negative로 판정되고, 나머지 77%가 올바른 판정을 하는 것이다. 실제 상황에서, 이는 잘못된 고객에게 높은 비용의 프로모션을 하는 문제를 피할 수 있다.

3. 예측 해보기
이제 우리가 만든 모델을 사용해 예측을 해보자. 아마존 머신러닝은 배치 예측 및 실시간 예측이 모두 가능하며, 배치 예측을 사용하며 대용량 데이터에 대한 예측을 손쉽게 할 수 있다.

아마존 머신러닝 시작하기 문서에서 샘플로 제공하는 예측용 데이터를 활용해 우리가 만든 모델을 기반한 예측을 할 수 있다. 이 파일은 훈련용 데이터와 달리, y 변수를 가지고 있지 않다. 아마존 S3에서 데이터 파일을 선택하고, ‘Verify’를 선택하면 예측을 시작한다. 지정한 S3 위치에 결과가 저장된다.

이제 완료된 파일을 다운로드하여 파일을 살펴 보자. 각 행은 원본 파일의 행과 일치하며, 첫 번째 열이 예측 변수 y, 두 번째 열이 실제 점수다.
모델을 통해 예측한 결과
실제 점수가 0이라면 우리 상품에 가입하지 않을 고객이고, 1이라면 가입을 해 줄 고객이므로 적극 프로모션을 통해 새 금융 상품을 홍보하는 것이 좋을 것이다.
물론 데이터를 실시간 예측하는 것도 가능하다. 실시간 예측 기능을 활성화 한 후 AWS Java SDK의 아마존 머신러닝의 Predict 함수를 호출하는 자바 코드를 통해 원하는 데이터를 넘겨주고 응답값으로 예측 결과를 받을 수 있다.

[toggle title=”실시간 예측을 위한 자바 코드” load=”show”]
[source]AmazonMachineLearningClient client = new AmazonMachineLearningClient ();
GetMLModelRequest modelRequest = new GetMLModelRequest ()
. withMLModelId (mlModelId);
GetMLModelResult model = client. getMLModel (modelRequest);
String predictEndpoint = model. getEndpointInfo () getEndpointUrl ();
PredictRequest predictRequest = new PredictRequest ()
. withMLModelId (mlModelId)
. withPredictEndpoint (predictEndpoint)
. withRecord (record);
PredictResult prediction = client. predict (predictRequest);
System. out. println (prediction);
(출력 값)
{Prediction : {PredictedLabel : 0, PredictedScores : {0 = 0.10312237}, Details : {PredictiveModelType = BINARY, Algorithm = SGD}}}[/source]
[/toggle]

아마존 머신러닝의 장점
기계 학습 모델 생성과 예측 생성을 실행하고 조정하는데 필요한 모든 인프라와 워크플로우를 클라우드로 관리해 사용자가 애플리케이션에만 집중할 수 있도록 한다. 하드웨어 프로비저닝, 컴퓨팅 로드의 배포와 조정, 종속 관리, 기계 학습 모델 모니터링과 문제 해결 등에 대한 걱정 없이 필요한 수만큼의 모델을 생성하고 모델이 생성하는 예측의 볼륨과 처리량을 조정할 수 있다.

예측에 대한 해석을 미세 조정할 수 있다. 예를 들어 구매가 합법적인지를 분류하는 데 기계 학습 모델을 사용한 경우 예측 결과를 시각화하고, 스마트 애플리케이션에 최적의 결과를 전달하기 위해서 예측을 어떻게 조정할지 결정할 수 있다.

개발자를 위한 모델링과 관리용 API를 제공해 데이터 소스, 모델, 평가를 생성하고 검토하며 삭제할 수 있도록 해준다. 이를 통해 향후 새로운 데이터가 올라오면 신규 모델을 생성하도록 자동화할 수 있다. 또한, API를 사용하여 이전 모델, 데이터 소스, 평가 및 배치 예측의 반복성과 추적 사항을 점검할 수 있다. [마소]

[toggle title=”아마존 머신 러닝, 이것이 궁금하다” load=”show”]
Q. 어떻게 배울 수 있나.
qwikLABS.com에서 제공하는 아마존 머신러닝 및 데이터 분석 과정을 통해 각자의 상황에 맞는 기계 학습 모델을 생성할 수 있다.

Q. 서비스 가용성은 어떤가.
유지 관리를 위한 가동 중지를 하지 않는다. 모델 학습, 평가 및 배치 예측용 API는 가용성이 높은 AWS 데이터센터에서 실행된다. AWS 리전의 시설 세 곳에 서비스 스택 복제가 구성되어 있어, 서버 오류나 가용 영역 중단 때도 가동할 수 있다. 현재 아마존 머신러닝은 버지니아에 위치한 미국 동부 리전에서 서비스되고 있다.

Q. 보안체계는 어떤지.
전송 중이거나 보관 중인 기계 학습 모델과 기타 시스템 아티팩트를 암호화했다. API 및 콘솔에 대한 요청은 안전한 SSL 연결을 통해 진행된다. AWS Identity and Access Management(IAM)를 사용하여 특정 머신러닝 작업 및 리소스에 접근 가능한 IAM 사용자를 생성하고 제어할 수 있다.

Q. 아마존 머신러닝의 가격체계를 알려달라.
아마존 머신러닝은 종량 과금 체계를 가지고 있다. 데이터 분석 / 모델 학습 / 모델 평가에 드는 비용은 시간당 0.42달러이며, 배치 예측의 경우, 1000건 마다 0.1달러다. 100 만건의 예측 실행 당 100달러 정도 든다. 실시간 예측 의 경우 1건당 0.0001달러로써, 역시 100만 건의 예측 실행당 100달러 정도의 비용으로 서비스를 이용가능하다.
[/toggle]

답글 남기기