KDT 데이터 분석가 과정 8주차 (머신러닝)

휸하엘레나킴·2021년 9월 7일
0
머신러닝 (21.09.07 - 21.09.10)

머신러닝의 개념

무엇(X)으로 무엇(Y)을 예측하고 싶다.
Y=f(X)Y = f(X)

주어진 데이터를 통해서 입력변수(XX)와 출력변수(YY)간의 관계를 만드는 함수 ff를 만드는 것.
주어진 데이터 속에서 데이터의 특징을 찾아내는 함수 ff를 만드는 것.

ff란 무엇인가 (회귀분석인 경우)

  • ff를 구하기 위해서 입력 변수와 출력 변수가 필요함.
  • 모집단 전체를 확인할 수 없기 때문에 Y=f(X)Y = f(X)가 아닌, 샘플 데이터를 이용해 학습 데이터로 이용하여 Y^=f^(X)\hat{Y} = \hat{f}(X)로 모델링 한다.

지도학습과 비지도학습

지도학습(supervised learning)

Y=f(X)Y = f(X)에 대하여 입력 변수(X)(X)와 출력 변수(Y)(Y)의 관계에 대하여 모델링 하는 것.
(YY에 대하여 예측 또는 분류하는 문제)

  • 회귀(regression): 입력 변수 XX에 대해서 연속형 출력 변수 YY를 예측.
    예 : 주식가격 예측
  • 분류(classification): 입력 변수 XX에 대해서 이산형 출력 변수 YY(class)를 예측.
    예 : 공정 불량 여부 탐지

비지도학습(unsupervised learning)

출력 변수 (Y)(Y)가 존재하지 않고, 입력 변수(X)(X)간의 관계에 대해 모델링 하는 것.

  • 군집 분석 - 유사한 데이터끼리 그룹화
    예 : 고객 segmentaion
  • PCA - 독립변수들의 차원을 축소화

강화학습(reinforcement learning)

수 많은 시뮬레이션을 통해 현재의 선택이 먼 미래에 보상이 최대가 최도록 학습.

예 : AlphaGo


머신러닝의 종류

선형 회귀분석(Linear Regression)

  • 독립변수와 종속변수가 선형적인 관계가 있다라는 가정하에 분석.
  • 직선을 통해 종속변수를 예측하기 때문에 독립변수의 중요도와 영향력을 파악하기 어려움.

의사결정나무(Decision Tree)

  • 독립변수의 조건에 따라 종속변수를 분리. (비가 내린다 \rightarrow 축구를 하지 않는다.)
  • 이해하기 쉬우나 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) : 모형 ff를 추정하는데 필요.
    - 검증 데이터(validation data) : 추정한 모형 ff가 적합한지 검증함.
    - 테스트 데이터(teat data) : 최종적으로 선택한 모형의 성능을 평가
  • k-Fold 교차검증(k-Fold Cross Validation)
    모형의 적합성을 보다 객관적으로 평가하기 위한 방법.
    - 데이터를 k(주로 5 또는 10)개 부분으로 나눈 뒤, 그 중 하나를 검증 집합, 나머지를 학습 집합으로 분류.
    - 위 과정을 k번 반복하고 k개의 성능 지표를 평균하여 모형의 적합성을 평가
  • LOOCV(Leave-One-Out Cross Validation)
    데이터의 수가 적을 때 사용하는 교차검증 방법.
    - 총 nn(데이터 수 만큼)개의 모델을 만드는데, 각 모델은 하나의 샘플만 제외하면서 모델을 만들고, 제외한 샘플로 성능 지표를 계산.
    이렇게 도출된 nn개의 성능 지표를 평균 내어 최종 성능 지표를 도출한다.

데이터 분석과정

raw데이터 \rightarrow 전처리 된 데이터 \rightarrow 실험설계 \rightarrow Model

  • 전처리 : raw데이터를 모델링 할 수 있도록 데이터를 병합 및 파생 변수를 생성.
  • 실험설계 : test데이터는 실제로 우리가 모델을 적용한다는 가정하에 실험설계를 해야한다.

과적합(Overfitting)이란

복잡한 모형일수록, 데이터가 적을수록 과적합이 일어나기 쉽다.
과적합은 data science 뿐만 아니라 AI 전반적으로 매우 큰 이슈다.
근본적인 해결책은 나와있지 않다.
적절한 모형 선택과 실험설계를 통한 과적합을 방지해야한다.

profile
문과생의 데이터 분석 공부

0개의 댓글