Data Analysis & ML/Machine Learning

[Machine Learning][머신러닝] 머신러닝 개요

YSY^ 2020. 8. 26. 12:31

머신러닝 개요

인공지능 (AI - Artificial Intelligence)

  • 지능: 어떤 문제를 해결하기 위한 지적 활동 능력
  • 인공지능
    • 기계가 사람의 지능을 모방하게 하는 기술
    • 규칙기반, 데이터 학습 기반

머신러닝(Machine Learning)

  • 데이터 학습 기반의 인공 지능 분야
  • 기계에게 어떻게 동작할지 일일이 코드로 명시하지 않고 데이터를 이용해 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 인공지능의 한분야

딥러닝 (Deep Learning)

  • 인공신경망 알고리즘을 기반으로 하는 머신러닝의 한 분야. 대용량 데이터 학습에 뛰어난 성능을 나타낸다.

머신러닝은 역사가 70 ~ 80년 가까이 연구된 분야지만 최근 10여년 사이에 활성화 되었다.

  • 이유
    • 데이터의 증가
    • 컴퓨터 하드웨어의 발전
    • 알고리즘의 발견

머신러닝 모델(알고리즘, 모형)

  • 모델이란 데이터의 패턴을 수식화 한 함수를 말한다.
    • 그러나 처음에는 방대한 데이터의 패턴을 알 수 없기 때문에 "이 데이터는 이런 패턴을 가졌을 것"이라고 가정한 함수를 정한뒤 데이터를 학습시켜 데이터 패턴을 잘 표현하는 함수를 만든다.

모델을 만드는 과정

  1. 모델을 정하여 수식화 한다.
  2. 모델을 데이터를 이용해 학습(Train) 시킨다.
    • 모델을 데이터의 패턴에 맞춘다. (fit)
  3. 학습된 모델이 얼마나 데이터 패턴을 잘 표현하는지 평가한다.(Test)

머신러닝이란 데이터의 패턴을 찾는 함수를 만드는 것

데이터 Feature와 Label

Feature

  • 예측 하거나 분류해야 하는 데이터의 특성, 속성 값
  • 입력 변수(Input), 독립변수라고도 한다.
  • 일반적으로 X로 표현한다.

Label

  • 예측하거나 분류해야 하는 값
  • 출력 변수(Output), 종속변수라고도 한다.
  • 일반적으로 y로 표현한다.

머신러닝 알고리즘 분류

지도학습(Supervised Learning)

  • 모델에게 데이터의 특징(Feature)와 정답(Label)을 알려주며 학습시킨다.
  • 대부분의 머신러닝은 지도학습이다.
  • 분류(Classification):
    • 두개 이상의 클래스(범주)에서 선택을 묻는 지도 학습방법
      • 이진 분류 : 분류 대상 클래스가 2개
      • 다중 분류 : 분류 대상 클래스가 여러개
    • 의사결정트리(Decision Tree)
    • 로지스틱 회귀(Logistic Regression)
    • K-최근접 이웃(K-Nearest Neighbors, KNN)
    • 나이브 베이즈(Naive Bayes)
    • 서포트 벡터 머신(Support Vector Machine, SVM)
    • 랜덤 포레스트(Random Forest)
    • 신경망(Neural Network)
  • 회귀(Regression):
    • 숫자(연속된값)를 예측 하는 지도학습
    • 의사결정트리(Decision Tree)
    • 선형 회귀(Linear Regression)
    • 릿지 회귀(Rige Regression)
    • 라쏘 회귀(Lasso Regression)
    • 엘라스틱 넷(Elastic Net)
    • K-최근접 이웃(K-Nearest Neighbors, KNN)
    • 나이브 베이즈(Naive Bayes)
    • 서포트 벡터 머신(Support Vector Machine, SVM)
    • 랜덤 포레스트(Random Forest)
    • 신경망(Neural Network)

비지도학습 (Unsupervised Learning)

  • 정답이 없이 데이터의 특징만 학습하여 데이터간의 관계를 찾는 학습방법
  • 군집(Clustering)
    • 비슷한 유형의 데이터 그룹을 찾는다. 주로 데이터 경향성을 파악하는 비지도 학습
    • K-평균 클러스터링(K-Means Clustering)
    • 평균점 이동 클러스터링(Mean-Shift Clustering)
    • DBSCAN(DensityBased Spatial Clustering of Applications with Noise)
  • 차원축소(Dimensionality Reduction)
    • 예측에 영향을 최대한 주지 않으면서 변수(Feature)를 축소하는 한다.
    • 고차원 데이터를 저차원의 데이터로 변환하는 비지도 학습
    • 주성분 분석(Principal Component Analysis, PCA)

강화학습

  • 학습하는 시스템이 행동을 실행하고 그 결과에 따른 보상이나 벌점을 받는 방식으로 학습. 학습이 계속되면서 가장 큰 보상을 얻기 위한 최상의 전략을 스스로 학습하게 한다.

출처: sckit-lean docs(https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html)

머신러닝 개발 절차 (Machine Learning Process)

  1. Business Understanding
    • 머신러닝 개발을 통해 얻고자 하는 것 파악.
  2. Data Understanding
    • 데이터 수집
    • 탐색을 통해 데이터 파악
  3. Data Preparation
    • 데이터 전처리
  4. Modeling
    • 머신러닝 모델 선정
    • 모델 학습
  5. Evaluation
    • 모델 평가
    • 평가 결과에 따라 위 프로세스 반복
  6. Deployment
    • 평가 결과가 좋으면 실제 업무에 적용

파이썬 머신러닝,딥러닝 패키지

  • Scikit-learn
    • 딥러닝을 제외한 머신러닝 주요 알고리즘 제공
  • Tensorflow
    • 구글 브레인 팀이 개발한 텐서플로우는 머신러닝 및 딥러닝 위한 오픈소스 라이브러리다.
  • Keras
    • 딥러닝 모델을 쉽게 만들 수 있도록 다양한 딥러닝 플랫폼 위에서 실행되는 고수준 딥러닝 패키지.
    • Tensorflow 2.0 부터 keras를 포함하고 있다.
  • Pytorch
    • 토치(Torch) 및 카페2(Caffe2) 프레임워크를 기반으로한 페이스북에서 만든 딥러닝 프레임워크

사이킷런(scikit-learn) (https://scikit-learn.org/stable)

파이썬 머신러닝 라이브러리가 가장 많이 사용된다. 딥러닝을 제외한 대부분의 머신러닝 알고리즘을 제공한다.

사이킷런의 특징

  1. 파이썬 기반 다른 머신러닝 라이브러리가 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스런 API 제공
  2. 머신러닝 관련 다양한 알고리즘을 제공하며 모든 알고리즘에 일관성있는 사용법을 제공한다.

scikit-learn(사이킷런) 설치

  • conda install scikit-learn
  • pip install scikit-learn
  • 아나콘다는 내장되 있다.

Estimator와 Transformer

  • Estimator (추정기)
    • 데이터를 학습하고 예측하는 알고리즘(모델)들을 구현한 클래스들
    • fit()
      • 데이터를 학습하는 메소드
    • predict()
      • 예측을 하는 메소드
  • Transformer (변환기)
    • 데이터 전처리를 하는 클래스들. 데이터 셋의 값의 형태를 변환한다.
    • fit()
      • 어떻게 변환할지 학습하는 메소드
    • transform()
      • 변환처리 하는 메소드
    • fit_transform()
      • fit()과 transform()을 같이 처리하는 메소드

사이킷런 주요모듈

scikit-learn 개발 패턴

  1. 데이터 분할
    • 데이터셋을 모델을 학습시키기 위한 데이터셋(훈련 데이터)와 모델의 성능을 테스트하기 위한 데이터셋(테스트 데이터)으로 분리한다.
  2. 모델 생성
    • 예측 목적에 맞는 모델생성
    • 하이퍼파라미터 설정
      • 하이퍼파라미터 : 학습에 의해 찾는 값이 아닌 개발자가 직접 설정해야 하는 파라미터
  3. 모델 학습
    • fit
    • 훈련데이터로 모델 학습 또는 특징 추출
  4. 예측
    • predict / predict_prob (예측), transform (변환)
    • 테스트 데이터셋 예측 또는 변환
  5. 평가
    • 모델 성능 평가
    • 정확도, AUC, R2, MSE 등 목적에 맞는 적절한 평가 함수를 이용해 결과 확인
728x90
반응형