머신러닝 (21.09.07 - 21.09.10)
머신러닝의 개념
무엇(X)으로 무엇(Y)을 예측하고 싶다.
Y=f(X)
주어진 데이터를 통해서 입력변수(X)와 출력변수(Y)간의 관계를 만드는 함수 f를 만드는 것.
주어진 데이터 속에서 데이터의 특징을 찾아내는 함수 f를 만드는 것.
f란 무엇인가 (회귀분석인 경우)
- f를 구하기 위해서 입력 변수와 출력 변수가 필요함.
- 모집단 전체를 확인할 수 없기 때문에 Y=f(X)가 아닌, 샘플 데이터를 이용해 학습 데이터로 이용하여 Y^=f^(X)로 모델링 한다.
지도학습과 비지도학습
지도학습(supervised learning)
Y=f(X)에 대하여 입력 변수(X)와 출력 변수(Y)의 관계에 대하여 모델링 하는 것.
(Y에 대하여 예측 또는 분류하는 문제)
- 회귀(regression): 입력 변수 X에 대해서 연속형 출력 변수 Y를 예측.
예 : 주식가격 예측
- 분류(classification): 입력 변수 X에 대해서 이산형 출력 변수 Y(class)를 예측.
예 : 공정 불량 여부 탐지
비지도학습(unsupervised learning)
출력 변수 (Y)가 존재하지 않고, 입력 변수(X)간의 관계에 대해 모델링 하는 것.
- 군집 분석 - 유사한 데이터끼리 그룹화
예 : 고객 segmentaion
- PCA - 독립변수들의 차원을 축소화
강화학습(reinforcement learning)
수 많은 시뮬레이션을 통해 현재의 선택이 먼 미래에 보상이 최대가 최도록 학습.
예 : AlphaGo
머신러닝의 종류
선형 회귀분석(Linear Regression)
- 독립변수와 종속변수가 선형적인 관계가 있다라는 가정하에 분석.
- 직선을 통해 종속변수를 예측하기 때문에 독립변수의 중요도와 영향력을 파악하기 어려움.
의사결정나무(Decision Tree)
- 독립변수의 조건에 따라 종속변수를 분리. (비가 내린다 → 축구를 하지 않는다.)
- 이해하기 쉬우나 overfitting이 잘 일어남. (가지고 있는 데이터에는 잘 맞으나 예측에서는 실패하는 것)
KNN(K-Nearest Neighbor)
- 새로 들어온 데이터의 주변 k개의 데이터의 class로 분류하는 기법
(k는 사람이 지정해주는 파라미터, 하이퍼파라미터)
Neural Network
- 입력, 은닉, 출력층으로 구성된 모형으로서 각 층을 연결하는 노드의 가중치를 업데이트하면서 학습.
- overfitting이 심하게 일어나고 학습시간이 매우 오래걸림.
SVM(Support Vector Machine)
- class 간의 거리(margin)가 최대가 되도록 decision boundary를 만다는 방법.
- 어느 정도의 오차를 허용한다.
- 학습하는 시간이 오래걸려, 최근에는 잘 사용하지 않는다.
Ensemble Learning
- 여러 개의 모델(classifier of base learner)을 결합하여 사용하는 모델.
- 성능이 좋아 최근 많이 사용되고 있다.
K-means clustering
- Label 없이 데이터의 군집으로 k개로 생성.
- k개에 따라 데이터의 성능이 달라진다.
딥러닝
Deep Learning
- 다층의 layer를 통해 복잡한 데이터의 학습이 가능토록 함. (graphical representation learning)
- 알고리즘 및 GPU의 발전이 deep learning의 부흥을 이끔.
- 다양한 형태로 발전.(CNN, RNN, AutoEncoder emd)
GAN(Generative Adversarial Network)
데이터를 만들어내는 Generator와 만들어진 데이터를 평가하는 Discriminator가 서로 대립(Adversarial)적으로 학습해가며 성능을 점차 개선해 나가자는 개념.
- Discriminator를 학습시킬 때에는 D(x)가 1이 되고 D(G(z))가 0이 되도록 학습시킴.
(진짜 데이터를 진짜로 판별하고, 가짜 데이터를 가짜로 판별할 수 있도록)
- Generator를 학습시킬 때에는 D(G(z))가 1이 되도록 학습시킴.
(가짜 데이터를 discriminator가 구분 못하도록 학습, discriminator를 헷갈리게 하도록)
강화학습(Reinforcement Learning)
- Q-Learning : 현재 상태에서부터 먼 미래까지 가장 큰 보상을 얻을 수 있는 행동을 학습하게 하는 것.
Q -Learning + Deep Learning : DQN(Deep Reinforcement Learning) > 최근에는 잘 사용하지 않는다.
- 강화학습은 학문적으로 연구하며, 실제 산업에서는 마땅히 적용하기 아직 어렵다.
머신러닝 > 딥러닝 > 이미지, 텍스트, Generalization > GAN / Reinforcement Learning
모형의 적합성 평가 및 실험 설계
모형의 적합성을 평가하는 방법
- 실험설계
데이터 분할 : 과적합을 방지하기 위해 전체 데이터를 학습 데이터, 검증 데이터(validation), 테스트 데이터로 나누며 보통 비율은 5:3:2로 정함.
- 학습 데이터(training data) : 모형 f를 추정하는데 필요.
- 검증 데이터(validation data) : 추정한 모형 f가 적합한지 검증함.
- 테스트 데이터(teat data) : 최종적으로 선택한 모형의 성능을 평가
- k-Fold 교차검증(k-Fold Cross Validation)
모형의 적합성을 보다 객관적으로 평가하기 위한 방법.
- 데이터를 k(주로 5 또는 10)개 부분으로 나눈 뒤, 그 중 하나를 검증 집합, 나머지를 학습 집합으로 분류.
- 위 과정을 k번 반복하고 k개의 성능 지표를 평균
하여 모형의 적합성을 평가
- LOOCV(Leave-One-Out Cross Validation)
데이터의 수가 적을 때 사용하는 교차검증 방법.
- 총 n(데이터 수 만큼)개의 모델을 만드는데, 각 모델은 하나의 샘플만 제외하면서 모델을 만들고, 제외한 샘플로 성능 지표를 계산.
이렇게 도출된 n개의 성능 지표를 평균 내어 최종 성능 지표를 도출한다.
데이터 분석과정
raw데이터 → 전처리 된 데이터 → 실험설계 → Model
- 전처리 : raw데이터를 모델링 할 수 있도록 데이터를 병합 및 파생 변수를 생성.
- 실험설계 : test데이터는 실제로 우리가 모델을 적용한다는 가정하에 실험설계를 해야한다.
과적합(Overfitting)이란
복잡한 모형일수록, 데이터가 적을수록 과적합이 일어나기 쉽다.
과적합은 data science 뿐만 아니라 AI 전반적으로 매우 큰 이슈다.
근본적인 해결책은 나와있지 않다.
적절한 모형 선택과 실험설계를 통한 과적합을 방지해야한다.