[AWS] Amazon SageMaker

01. SageMaker란?

[이미지 출처] Amazon Sagemaker Customer Presentation(ver.20220124)

SageMaker란 제품 추천, 맞춤화, 지능형 쇼핑, 로봇 공학, 음성 지원 디바이스를 포함하여 20년에 걸친 Amazon의 실제 기계 학습 애플리케이션 개발 경험에 기반하여 구축된 서비스입니다.

Data Engineers, Data Scientists, Data Analysts가 ‘Amazon SageMaker’라는 플랫폼을 중심으로 모두 협업할 수 있다는 개념입니다.

간단하게 RDS는 ‘EC2 인스턴스 위에 DB를 설치한 완전 관리형 서비스’라고 이해할 수 있는 것과 같이, SageMaker는 ‘EC2 인스턴스 위에 머신러닝에 대표적인 Jupyter Notebook을 설치한 것’이라고 이해할 수 있습니다.

실제로 Jupyter Notebook을 실행한 후 서버 구성을 살펴보면 기본적으로 EC2 인스턴스가 생성되는 것을 확인할 수 있습니다.

SageMaker의 장점

  • 비싼 컴퓨터를 필요로 하지 않습니다.
  • ML 패키지들을 설치할 필요가 없습니다.
  • 코드 작성부터 배포까지 한 번에 가능합니다.
  • 타 AWS 서비스와의 연계가 잘 이루어집니다.


02. 머신 러닝이란?

함수와 머신러닝 차이

머신 러닝이란 로직에 따른 순서가 정해진 프로그램이 아니라. 데이터를 통해 컴퓨터 스스로가 규칙을 찾는 것입니다.

머신러닝은 함수와는 조금 다르게 같은 Input이 들어간다고 가정했을 경우, 정확한 Output이 나온다기보다는 ‘근삿값’, ‘예측값’이 나온다는 특징이 있습니다.

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

[이미지출처] http://tobetong.com/?p=9393#comment-4028

인공지능(AI)는 컴퓨터가 학습하는 모든 것을 포괄하는 개념입니다.

머신러닝(ML)은 컴퓨터가 스스로 학습하여 인공지능의 성능을 향상시키는 기술 방법입니다.

딥러닝(DL)은 인공신경망 방식으로 정보를 처리하며 모델 자체를 사람이 정해주지 않아도 알아서 확장하는 기술 방법입니다.

기존 통계학과 머신러닝

머신러닝도 결론적으로 통계를 사용하는 기술이지만 접근 방식에 차이를 보입니다.

기존 통계학은 정해진 결론에 대해서 실패하지 않기 위한 예측을 하는 반면에, 머신러닝은 뚜렷하지 않은 목표를 성공하기 위한 예측을 목적으로 하고 있습니다.

직관과 추론

직관은 사람이 생각하는 방식이라면 추론은 기계가 생각하는 방식입니다.

예를 들어, ‘주사위를 던졌을 때 각 눈이 나올 확률’이라는 문제에 대해 사람은 당연히 1/6이라고 생각하지만 머신러닝은 다르게 반응합니다.

그 이유를 살펴보기 위해 python 코드를 이용하여 주사위를 던져보겠습니다.

이론에 의하면 약 16.7%로 균일하게 나와야 하지만 실제로는 균일하지 않은 결과가 나오는 것을 알 수 있으며, 횟수가 증가할수록 결과가 이론과 가까워지는 것을 볼 수 있습니다.

이를 통해 머신러닝은 ‘컴퓨터에 엄청나게 많은 양의 데이터를 주고 학습을 시키는 과정’이라고 이해할 수 있습니다. 어느 정도의 데이터 규모가 보장이 되어야 머신러닝의 신뢰성이 올라갈 수 있습니다. 따라서 빅데이터와 머신러닝은 많은 연관성을 가지고 있습니다.


03. 머신러닝의 Life Cycle

[이미지 출처] Amazon SageMaker Developer

이론적으로 머신러닝의 Life Cycle은 왼쪽 사진과 같이 선순환 구조를 갖지만, 실제로는 전처리 과정이 머신러닝의 Life Cycle에 많은 부분을 차지하고 모델링과 검증의 많은 반복을 통해 나온 결과를 배포하는 Cycle 구조를 갖습니다.

전처리가 제일 중요한 이유는 현실의 Raw Data는 불필요한 정보를 많이 담고 있거나 중간에 데이터가 없는 등의 불친절한 특징을 가지고 있기 때문입니다. 이런 문제를 가진 데이터가 존재하면 컴퓨터는 연산을 멈추게 됩니다. 따라서 문제가 발생하고 해결하는 반복되는 데에 사용되는 시간과 비용을 절약하기 위해서 전처리 과정은 필수적이라고 할 수 있습니다.

전처리 방식에 대해 알아보겠습니다.
전처리를 하는 가장 기초적인 방법

  • 결측치 제거
  • 문자형 데이터를 분석을 위해 수치형으로 변환
  • 정규화나 표준화를 통해 수치형 데이터를 스케일링
  • 특성 간 상관관계 분석을 통해 필요하지 않은 데이터 축소


04. 회귀모델

머신러닝의 많은 분야 중 선형 회귀 모델에 대해 알아보겠습니다.

[이미지 출처] E-Learning: Challenges and Research Opportunities Using Machine Learning & Data Analytics

선형 회귀 모델이란?

[이미지 출처] https://igija.tistory.com/256

선형 회귀 모델이란 표본들과 평균적으로 가장 차이가 적은 선형식을 찾아내는 것이라고 생각할 수 있습니다.
회귀 모델의 타당성을 입증하는 지표로 SST, SSR, 결정 계수가 있는데 그중 가장 단순하게 결정 계수가 1에 얼마나 가까운지로 판단할 수 있습니다.


05. 회귀 분석(1)-보스턴 집값 예측

선형 회귀 분석을 이용한 예시로 Jupyter Notebook을 사용하여 보스턴 집값을 예측하는 회계 학습 자료를 소개해 드리겠습니다.

  • 목표: 1970년대 보스턴 내 총 506개 지역 내의 각 지표를 바탕으로 집값의 예측치를 파악한다.
1. 모듈 Import, 데이터 Read

라이브러리를 import 하고 S3에 적재된 원본 데이터를 불러옵니다.

2. 컬럼 이름 변환

결과로 나온 Dataframe을 살펴보면 이해하기 어려운 컬럼명들이 있기 때문에 컬럼 이름을 변환해 줍니다.

3. 데이터 확인

데이터에 빠진 부분이 있는지 확인해 봅니다.

이번에 다룬 데이터는 학습 데이터이기 때문에 빠진 부분이 없지만 실제로는 중간중간 빠진 값들이 많이 있을 수 있습니다.

4. 데이터 타입 확인

마찬가지로 데이터 타입을 확인해 보면 학습 데이터이기 때문에 모두 수치형인 것을 볼 수 있습니다.

5. 값의 분포 확인

찾고자 하는 값의 분포 확인합니다.

값의 분포가 정규분포 모양이 아니라는 의미는 표본이 충분하지 못하거나 특정 특성에 가중치가 높에 적용됐을 가능성이 있음을 의미합니다.

6. 특성 간 상관관계 파악

각 특성 간의 상관관계도 파악할 수 있습니다.

여러 특성 중 시세와 방의 개수 관계를 보면 방이 많을수록 시세가 높다는 것을 알 수 있습니다.

7. 모델링

모델링 하는 방법은 아래와 같습니다.

  • 원본 데이터를 학습 데이터와 검증 데이터로 나눕니다.
  • 알고리즘을 선택해 학습(모델링)을 시작합니다.
8. 결과 확인

MAE (Mean Absolute Error): 잔차의 절댓값을 평균한 값. 실제 값과 예측값의 차이를 의미합니다.
MSE (Mean Squared Error): 잔차의 제곱을 평균한 값. 실제 값과 예측값의 차이를 의미합니다.
RMSE (Root Mean Squared Error): MSE의 제곱근을 의미합니다.
Score: 결정계수 R-square를 의미. 1에 가까울수록 모델이 실제 데이터를 잘 설명한다고 판단할 수 있습니다

9. 학습데이터와 검증데이터의 비율 변경

동일한 조건에서 학습 데이터와 검증 데이터의 비율을 바꾼 경우 Score 값이 변한 것을 확인할 수 있습니다.

이러한 차이를 보이는 원인은 크게 2가지가 있습니다.

  • 데이터가 너무 적음
  • 검증 데이터의 풀을 넓혔기 때문에 상대적으로 검증데이터에 매칭될 수 있는 확률이 늘어남

따라서 우리는 모수가 제한적이라면 가장 Score가 높은 모델을 지속적으로 찾아내려는 노력을 해야 하고 ‘~조건에서 ~할 확률이 가장 높다’라는 방식으로 설명하는 방법을 이용해야 합니다.

10. 다른 방식의 회귀 분석

보고서 방식으로 회귀 분석을 하는 방법도 있습니다.


06. 회귀 분석(2)-고객 추천 작품

  • 목표: Amazon digital video의 별점 데이터를 근간으로 고객 추천 작품을 찾아본다.

※ Build, Train, and Deploy Machine Learning Models on AWS with Amazon SageMaker 세션 내용을 그대로 참조했습니다.

1. 모듈 Import
출처: https://www.youtube.com/watch?v=R0vC31OXt-g
2. 데이터 Read

특성은 15개밖에 안 되는데 총건수는 약 4백만 건인 것을 확인할 수 있습니다.

3. 전처리

15개의 특성 중 필요한 특성만 남기는 작업을 합니다.

더 유의미한 데이터만 걸러내는 작업을 진행해 보겠습니다.

얼마나 많은 사람들이 별점을 매겼고, 얼마나 많은 작품들에 별점이 있는지 확인해 봅니다.

확인 결과 고객의 약 5%만이 5개 이상의 별점을 매겼고, 작품의 약 10%만이 유의미한 리뷰 수(30개 정도)를 받은 것을 알 수 있습니다.

따라서 5개 이상의 리뷰를 남긴 고객, 10개 이상의 리뷰가 있는 작품의 데이터만 남기는 작업을 진행합니다.

작품명은 문자열 처리를 할 때 한 단어로 표현하기 위해 공란을 하이픈(-)으로 대체합니다.

특정 고객, 특정 작품들에 대한 데이터에 ‘리뷰 날짜’를 추가하여 고객 구매 내역을 ‘customer_purchase.txt’로 생성한 후 모델링의 투입 값으로 활용합니다.

4. 모델링

SageMaker 상 모델링 기본 순서

1. 각종 알고리즘을 담아준 AWS 내의 컨테이너에서 필요한 알고리즘을 호출한다.
2. 학습기의 사양을 설정한다. (개별 서비스 수행을 위한 IAM Role 설정도 필수)
3. 알고리즘 특성에 따라 필수적인 Hyperparameter를 설정한다.

모델링의 Output은 ‘Artifact’라고 지칭하는데, 미리 지정해둔 S3 경로에 저장됩니다.

5. Artifact 확인

– 작품의 제목이 자연어 처리의 한 방식인 Word2Vec 알고리즘을 통해 각 단어별 벡터 요소로 표현됐습니다.
– 아까 선택했던 알고리즘인 BlazingText는 Word2Vec 알고리즘을 기반으로 한 AWS의 자체적인 내장 알고리즘입니다.

– Word2Vec ?
단어를 행렬 요소인 벡터로 표현하고, 각 벡터의 거리를 기준으로 단어의 유사성을 판별하는 알고리즘입니다.

102개의 컬럼이 있다는 의미는 102차원의 방정식을 뜻합니다. 이런 복잡한 차원을 간소화하여 시각화를 시켜보겠습니다.

6. 간소화 후 시각화

T-SNE?
높은 차원의 복잡한 데이터를 저차원(2차원)의 데이터로 거리 관계를 유지하며 임베딩 시키는 알고리즘입니다.

코드를 실행시키고 나면 시각화된 그래프를 확인할 수 있습니다.

7. 모델 배포 및 확인

SageMaker 상의 배포는 직접적인 외부 호출의 접점인 Endpoint를 생성하는 것을 의미합니다.

배포한 모델이 제대로 돌아가는지 확인해 보겠습니다.

7개의 작품을 input으로 하여 모델에 따른 각 벡터 수치들을 확인합니다.

전치를 이용하여 연관도를 확인할 수도 있습니다.

예를 들어 ‘sherlock-season-1’과의 연관도를 확인해 보겠습니다.

각 7개의 작품들과 ‘sherlock-season-1’ 과의 연관도가 수치로 나온 것을 확인할 수 있습니다.

결과 수치는 각 작품의 제목을 근거로 한 벡터 거리의 차로, 작을 수록(가까울수록) 유사한 작품임을 나타냅니다.


07. (번외) SageMaker JumpStart

추가적인 실습을 하고 싶을 경우 SageMaker JumpStart를 이용하면 다양한 시나리오에 대해서 실습할 수 있습니다.

  • 정형, 비정형 데이터 분석을 위한 다양한 예제가 수록되어 있습니다.
  • 관련 알고리즘에 대한 지식이 없어도 쉽게 따라 할 수 있습니다.
  • 가상 시나리오 적용으로 현업 느낌을 낼 수 있습니다.
  • 단, Sagemaker Studio 실행이 전제조건이라 비용이 많이 들 수 있습니다.