[AWS] The machine learning pipeline on aws
개요
기회가 닿아 AWS에서 진행하는 The Machine Learning Pipeline on AWS를 듣고 정리한 내용이다. 전통적인 프로그램 개발 방법론 기준으로 매핑하며 정리해본다.
머신러닝
데이터 기반으로 학습을 시켜 새로운 값이 들어왔을 때 학습 정보를 기반으로 결과를 주는 것이다.
전통적인 프로그램과의 차이
입력과 출력이 동일할 때, 개발자가 알고리즘을 구현하는가? 데이터를 기반으로 모델을 생성하는가?가 가장 큰 차이점이다.
머신러닝의 분류
어떤 문제가 머신러닝으로 풀기 적당한 문제일까?
지도(supervised) - 레이블이 지정된 데이터를 통하여 학습
- 이진분류 : n=2. true/false
- 다중분류 : n>2. 차 종류 등
- 회귀 : 부동산 가격, 주가 등
비지도(unsupervisded)
- 데이터 그 자체로 판단. 클러스터링. 분류문제
강화(reinforcement)
- 시뮬레이터 혹은 시뮬레이션 환경이 필요
- 에이전트와 에이전트가 수행되는 환경이 존재하고 에이전트의 액션(행동)에 따라 적절한 경우 보상을, 적절하지 않을 경우 불이익을 진행
머신러닝 파이프라인
머신러닝 파이프라인을 입/출력 기준으로 이해해보면, 비즈니스 요구사항(입력)을 만족하는 추론 시스템(출력)을 개발하는 일련의 프로세스라고 할 수 있을 것 같다.
(비즈니스 요구사항)-->머신러닝 파이프라인-->(추론 시스템)
예를 들어 입지와 면적에 따른 부동산 가격을 추론하는 시스템을 개발한다고 할때 머신러닝 파이프라인은 주어진 데이터(입력)를 기반으로 학습된 모델(출력)을 뽑는 과정으로 볼 수 있겠지만 그것은 학습자나 연구자의 관점이지 현업의 목표 달성을 위한 파이프라인으로 보기는 어려울 것 같다.
현업에 요구를 반영한 머신러닝 파이프라인은 전자의 과정을 통해 모델을 뽑은 후 실제 프로그램(혹은 api)로 배포하여 비즈니스 요구사항을 만족하는지(매출을 늘리는지) 모니터링하며 계속 개선해나가는 것 까지를 포함한다. 부동산 가격 예측 문제에 대한 파이프라인은 모델을 생성하는 것 까지가 아니라 유저들이 입지와 면적을 기반으로 부동산 가격 예측했을 때 예측이 잘 이루어지는 지를 살펴보며 계속 튜닝해나가는 것 까지를 포함한다는 의미이다. 좀 더 비즈니스 요구사항적으로 바라보면, 부동산 가격 예측 피쳐가 추가된 후 얼마나 많은 페이지 뷰 증가에 기여하는지, 혹은 부동산 계약 증가에 기여하는지를 모니터링하고 그 목표를 이룰 수 있도록 모델을 튜닝하고 생성하는 것을 반복하는 과정 전체를 머신러닝 파이프라인이라고 부르는 것 같다.
머신러닝 파이프라인 단계
파이프라인에 대해 뭐라뭐라 썼지만 모델 생성 및 튜닝 중심으로 보면 다음과 같다.
- 비즈니스 문제
- 문제 공식화
- 데이터 수집 및 통합
- 데이터 전처리 및 시각화
- 모형 훈련 및 튜닝
- 모형 평가
- 비즈니스 목표를 충족하는가?
- 모형 배포
- 새로운 데이터/재훈련->1번으로 7에서 충족하지 못한경우...
- 특성 엔지니어링 후 5번으로
- 데이터 증강 후 3번으로
=> 개발 CI/CD 파이프라인과 흡사함.
단계별 상세
1. 비즈니스 문제
2. 문제 공식화
3. 데이터 수집 및 통합
데이터레이크 혹은 데이터웨어하우스에서 정형/비정형 데이터를 긁어모음
4. 데이터 전처리 및 시각화
학습이 가능하도록 데이터 처리
- 결측치(missing value)
- 잘못된 데이터 정리
- 레이블링
5. 모형 훈련 및 튜닝
6. 모형 평가
7. 비즈니스 목표를 충족하는가?
8. 모형 배포
9. 새로운 데이터/재훈련->1번으로
7에서 충족하지 못한경우...
11. 특성 엔지니어링 후 5번으로
12. 데이터 증강 후 3번으로
기타 용어 정리 학습
왜도와 첨도
왜도(skewness) - 정규분포대비 얼마나 비대칭성을 가지는지. 치우침 정도 첨도(kurtosis) - 측정치 빈도수 그래프. 그래프의 뾰쪽한 모양. 평균을 중심으로 가까이 있을 경우 뾰족한 모양(첨도)이 커진다.
그래프
- 상자플롯 : 자료로부터 5가지 수치(최소, 1사분위, 2사분위, 3사분위, 최대)를 뽑아 그래프로 표현. 분위수는 중앙값 기준. 평균값 아님.
- 히스토그램 : 전체 분포를 그래프로 표현
- 산점도 : 두 변수 사이의 관계. 양의 상관관계, 음의 상관관계.
- 열지도 : heat map.
- T-SNE : T-분포. 자유도에 따른 모양 변화. 자유도=표본의수-1, 카이제곱 분포와 유사. 자유도가 클수록 정규분포에 가깝다.
one-hot 인코딩
https://wikidocs.net/22647 단어 집합을 벡터로 정의하고 각 단어를 벡터의 인덱스로 표현. 예를 들어 "hello world"가 있으면, {hello, world}의 단어 집합이 생기고, 원핫벡터에 넣으면 onehotvector[0] = hello onehotvector[1] = world 와 같은 형태로 넣을 수 있다. hello=0, world=1로 인코딩 된다.
도구
- pandas : 데이터 관리 도구(조인, 병합, 변형)
- scikitlearn : python 머신러닝 라이브러리
- matpkotlib : 시각화(그래프) 라이브러리
- seaborn : 시각화도구
xgboost
머신러닝 라이브러리. gradient boosting 알고리즘을 분산환경에서도 실행할 수 있도록 한 구현체
f1-score
크래스간 데이터 불균형이 심각할 때 사용. precision과 recall의 조화평균.
머신러닝 알고리즘
https://kjwan4435.tistory.com/85
PCA(Princial component Analysis)
Unsupervised learning의 일종으로, independent variable들 사이에 correlation을 없애고, 숨은 latent variable을 찾아내거나, 노이즈(noise)를 줄일 때 사용한다.
LDA (Linear Discriminant Analysis)
LDA는 Classification과 Dimensional Reduction(차원 축소)까지 동시에 사용하는 알고리즘이다. LDA에서의 핵심은 classification을 할 때 클래스 내의 분산은 최소가 되도록 하되, 클래스끼리의 분산은 최대가 되도록 한다는 것이다. 이 말은 즉슨, LDA를 통해 하나의 축으로transformation(변형)된 데이터들이 같은 클래스 내에는 그 값의 차가 최소가 되도록하며, 다른 클래스끼리는 그 값이 차가 크게 하는 축을 찾는 것이다. 이 때, 이러한 한 선으로 사영을 나타내는 함수는 아래와 같다.
infoq
개발자 웹진. qcon이라는 행사를 진행한다. 유튜브에서 qcon 검색
참조
- infoq(개발자웹진) : https://infoq.com