티스토리 뷰

인공지능 AI

사이킷런과 함께 하는 머신러닝

망고농장주인 2021. 9. 29. 01:14

머신러닝(ML)의 알고리즘 종류

  1. 지도학습 (Supervised Learning) -> 분류, 회귀, 예측
  2. 비지도학습 (Unsupervised Learning) -> 클러스터링, 차원축소
  3. 강화학습 (Reinforcement Learning) -> 알고리즘의 대표적인 종류 : Monte Carlo methods, Q-Learning, Policy Gradient methods
  4. 특정 알고리즘 -> 선형회귀, 로지스틱 회귀, 트리, 앙상블트리 (랜덤포레스트, 그래디언트 부스팅), 신경망 & 딥러닝을 사용하는 알고리즘, K평균, K모드, 가우시안혼합모델 클러스터링, DBSCAN, 계층적 군집화, PCA, SVD, LDA

회귀 (자주 까먹고 어려웠던 개념)

참고한 링크에서 "잔차(residual: 데이터의 실측치와 모델의 예측치 사이의 차이. 즉, 회귀식에서 오차항에 대한 관측치)가 평균으로 회귀하는 것'을 의미합니다."라고 설명합니다.
이때 잔차에 대한 이해 또한 회귀만큼 어렵습니다.


잔차

잔차는 산점도 그래프와 그 그래프를 대표할 수 있는 직선 그래프를 그린다고 가정했을 때 이해가 쉬웠습니다.
세계적인 온라인 수학 교육 사이트인 "콴 사이트"에서 한글로 설명이 쉽게 되어있습니다.

간단하게 정리하자면,
산점도 그래프에 있는 각각의 자료와 어떤 직선이 얼마나 잘 맞는지 확인 도구가 잔차입니다.


다시 회귀로 돌아와서,
회귀는 이런 잔차가 평균으로 돌아오는 것이라고 이해할 수 있습니다.

사이킷런

사이킷런에서 알고리즘의 Task

4가지입니다. Classification, Regression, Clustering, Dimensionality Reduction

사이킷런의 알고리즘 기준

  • 데이터 수량
  • 라벨의 유무
  • 데이터 종류 (수치형 데이터(quantity), 범주형 데이터(category) 등)

사이킷런의 Classification 알고리즘 종류

SGD Classifier, KNeighborsClassifier, LinearSVC, NaiveBayes, SVC, Kernel approximation, EnsembleClassifiers

사이킷런의 Regression 알고리즘 종류

SGD Regressor, Lasso, ElasticNet, RidgeRegression, SVR(kernel='linear'), SVR(kernel='rbf'), EnsembelRegressor

분류와 회귀에서 공통인 알고리즘

Ensemble, SGD

사이킷런의 의존성

사이킷런은 파이썬 기반 머신러닝 라이브러리이기 때문에 다음과 같은 파이썬과 파이썬 라이브러리에 의존성을 갖습니다.
최신 버전 0.24를 사용하기 위해서 아래와 같은 사양이 요구됩니다.

Python (>= 3.6)
NumPy (>= 1.13.3)
SciPy (>= 0.19.1)
joblib (>= 0.11)

위 라이브러리가 설치되었다면 다음과 같이 설치하면 됩니다.

!pip install scikit-learn

사이킷런의 데이터 표현법

사이킷런에서 데이터 표현 방식은 보통 2가지 : 특성행렬(Feature Matrix) 과 타겟벡터(Target Vector)

특성 행렬(Feature Matrix)

  • 입력 데이터를 의미
  • 특성(feature): 데이터에서 수치 값, 이산 값, 불리언 값으로 표현되는 개별 관측치를 의미, 특성 행렬에서 열에 해당하는 값입니다.
  • 표본(sample): 각 입력 데이터, 특성 행렬에서 행에 해당하는 값입니다.
  • n_samples: 행의 개수(표본의 개수)
  • n_features: 열의 개수(특성의 개수)
  • X: 통상 특성 행렬은 변수명 X로 표기합니다.
  • [n_samples, n_features]은 [행, 열] 형태의 2차원 배열 구조를 사용하며 이는 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 사용하여 나타낼 수 있습니다.

타겟 벡터 (Target Vector)

  • 입력 데이터의 라벨(정답)을 의미합니다.
  • 목표(Target): 라벨, 타겟값, 목표값이라고도 부르며 특성 행렬(Feature Matrix)로부터 예측하고자 하는 것을 말합니다.
  • n_samples: 벡터의 길이(라벨의 개수)
  • 타겟 벡터에서 n_features는 없습니다.
  • y: 통상 타겟 벡터는 변수명 y로 표기합니다.
  • 타겟 벡터는 보통 1차원 벡터로 나타내며, 이는 NumPy의 ndarray, Pandas의 Series를 사용하여 나타낼 수 있습니다.
  • (단, 타겟 벡터는 경우에 따라 1차원으로 나타내지 않을 수도 있습니다. 이 노드에서 사용되는 예제는 모두 1차원 벡터입니다.)

!주의!

특성행렬 X의 n_samples와 타겟벡터 y의 n_samples는 동일해야 합니다.

Linear Regression

랜덤한 x와 그에 대응하면서 bias를 가지고 있는 y값을 train data로 Linear Regression을 학습시키면,
랜덤한 train data와의 잔차가 가장 평균으로 유지되는 직선 그래프가 결과로 도출되는 것을 확인 할 수 있다.

'인공지능 AI' 카테고리의 다른 글

Deep Residual Learning for Image Recognition  (0) 2021.06.25