210712 FUNDAMENTALS 11. Scikit-learn

시에나 Sienna·2021년 7월 12일
0

AIFFEL

목록 보기
10/66
post-custom-banner

1. 머신러닝

  • 지도학습과 비지도학습 : 정답 유무, 데이터의 종류, 특성, 문제 정의에 따라 머신러닝 알고리즘은 굉장히 복합적으로 사용
  • 지도 학습(Supervised learning)
    • 한 세트의 사례들을(examples) 기반으로 예측을 수행
    • 분류된 학습용 데이터(labeled training data)로 구성된 입력 변수가 특징
    • 단점 : 데이터분류(labeling) 작업에 비용 & 시간 多 소요
    • 대표 알고리즘의 종류 :
      • 분류(Classification) : 예측해야할 데이터가 범주형(categorical) 변수일때 분류 라고 함
      • 회귀(Regression) : 예측해야할 데이터가 연속적인 값 일때 회귀 라고 함
      • 예측(Forecasting) : 과거 및 현재 데이터를 기반으로 미래를 예측하는 과정 예를 들어 올해와 전년도 매출을 기반으로 내년도 매출을 추산하는 것
  • 준지도 학습(Semi-supervised learning)
    • 지도학습 단점을 개선
    • 분류된 자료가 한정적일때, 학습 정확성 개선을 위해 미분류 사례 & 소량의 분류(labeled) 데이터 이용
  • 비지도 학습(Unsupervised learning)
    • 미분류 데이터만을 제공받아 고유 패턴을 발경하도록 함
    • 대표 알고리즘의 종류 :
      • 클러스터링(Clustering) : 특정 기준에 따라 유사한 데이터끼리 그룹화함
      • 차원 축소(Dimension Reduction) : 고려해야할 변수를 줄이는 작업, 변수와 대상간 진정한 관계를 도출하기 용이
  • 강화 학습(Reinforcement learning)
    • 환경 피드백 기반으로 행위자(agent)의 행동을 분석 및 최적화
    • 특징 : 시행착오(Trial-and-error) & 지연보상(delayed reward)
    • 용어 :
      • 에이전트(Agent): 학습 주체 (혹은 actor, controller)
      • 환경(Environment): 에이전트에게 주어진 환경, 상황, 조건
      • 행동(Action): 환경으로부터 주어진 정보를 바탕으로 에이전트가 판단한 행동
      • 보상(Reward): 행동에 대한 보상을 머신러닝 엔지니어가 설계
    • 대표 알고리즘의 종류 :
      • Monte Carlo methods
      • Q-Learning
      • Policy Gradient methods

2. Scikit-learn

  • train_test_split() : 훈련데이터와 테스트 데이터를 나누는 기능
  • transformer() : ETL(Extract Transform Load; 데이터 가공) 기능
  • fit.predict() : 모델로 표현되는 Estimator 클래스의 메소드
  • Pipeline/meta-estimator : Estimator와 transformer() 기능을 동시 수행하는 API

1) 데이터 표현법

Scikit-learn: API Reference

💜주로 사용하는 API💜

비고모듈명설명
데이터셋sklearn.datasets사이킷런에서 제공하는 데이터셋
데이터타입sklearn.utils.Bunch사이킷런에서 제공하는 데이터셋 자료형
데이터 전처리sklearn.preprocessing정규화, 인코딩, 스케일리 등
데이터 분리sklearn.model_selection_train_test_splittrain or test 데이터셋 분리
평가sklearn.metrics분류, 회귀, 클러스터링 알고리즘의 성능 측정 함수 제공
머신러닝
알고리즘
(모델)
sklearn.emsemble
sklearn.linear_model
sklearn.naive_bayes
sklearn.neighbors
sklearn.svm
sklearn.tree
sklearn.cluster
앙상블 관련 머신러닝 알고리즘(Random Forest 등)
선형 머신러닝 알고리즘(릿지, 라쏘, SGD 등)
나이브 베이즈 관련 머신러닝 알고리즘
최근접 이웃 모델 관련(릿지, 라쏘, SGD 등)
SVM 관련 머신러닝 알고리즘
트리 관련 머신러닝 알고리즘(의사결정트리 등)
군집 관련 머신러닝 알고리즘
  • 사이킷러의 데이터 표현 방식 : Feature Matrix & Target Vector
    • Feature Matrix X의 n_samples == Target Vector y의 n_sample
데이터표현법설명
Feature Matrix
(특성행렬)
- 입력데이터 X
- 특성(Feature) : 데이터의 값(value), 특성행렬의 열
- 표본(Sample) : 각 입력 데이터, 특성해렬의 행
- n_samples : 표본(행)의 개수
- n_features : 특성(열)의 개수
- [n_samples, n_features] : 2차원 배열구조, Numpy의 ndarray, Pandas의 DataFrame 등 사용가능
Target Vector
(타겟벡터)
- 입력데이터의 라벨 y
- 목표(Target) : 특성 행렬로 부터 예측하고자 하는 것
- n_samples : 벡터의 길이(라벨의 개수)
- Target Vector는 1차원 벡터, Numpy의 ndarray, Pandas의 Series 사용가능

3) 회귀 모델 실습

  • .reshape() : 구조의 재배열, 현재 배열의 차원(1차원, 2차원, 3차원)을 변경하여 행렬로 반환
    • np.reshape(변경할 배열, 차원) or 배열.reshape(차원)
    • .reshape(-1,1)-1의 의미
      • 원하는 행 또는 열을 지정하고 나머지는 알아서 숫자를 맞춰줌
      • 단, 배열이 원소가 지정된 인수만큼 나누었을 때 배열크기에 맞아야함
        ex) 원소가 12개일 때 (-1,5)로 한다면 12 % 5 = 2 이므로 ValueError

참고자료 : reshape에서 -1 은 무슨 의미인가?

  • 산점도에 회귀 모형 그리기
  • 성능평가
    • 회귀 모델의 경우 RMSE(Root Mean Square Error)를 사용
      • 실제값과 예측값의 오차 평균값에 기반한 평가
      • MSE가 오류 제곱을 구할때 실제 오류 평균보다 커지는 것에 보완
      • 값이 작을 수록 회귀 성능이 좋음

  • 회귀선 그리기

4) datasets 모듈

① datasets.load_wine() 뜯어보기

  • Bunch : 딕셔너리와 유사한 형태

② data
키값 data = 특성행렬 = 행 n_samples X 열 n_features

③ target

④ feature_name : 키의 특성들의 이름

⑤ DESCR : 데이터의 설명(describe)

5) 분류 문제 실습

① DataFrame 나타내기 ⇨ EDA(Exploration Data Analysis) 편리함

② 머신러닝

정확도 1.00이 나온 이유는 훈련 데이터와 예측에 사용되는 데이터를 같은 값을 사용했기 때문이다.

6) Estimator

  • 데이터셋 기반으로 머신러닝 모델의 파라미터를 추정하는 객체
  • 모든 머신러닝 모델은 Extimator 클래스로 구현
  • 훈련: Estimator의 fit() 메소드/ 예측: predict() 메소드
  • 지도학습
  • 비지도학습
    • Target Vector가 없는 비지도 학습도 Estimator로 학습과 예측 가능

7) 훈련 데이터와 테스트 데이터 분리

  • 데이터 비율 훈련 8 : 테스트 2

① 직접 분리하기

train_test_split() 함수

post-custom-banner

0개의 댓글