'학습'은 기계가 미래의 유사한 경험을 향상시키기 위해 과거의 경험을 활용하는 것이다. 기본적인 학습의 과정은 다음과 같다.
- 데이터 입력: 새로운 이미지, 텍스트, 영상, 센서 데이터 등
- 추상화: 데이터에 의미를 부여(Training 과정)
- 일반화: 추상적인 지식을 실행에 사용할 수 있는 형태로 조절하는 과정
특징, 즉 feature
는 관찰 대상에서 발견한 개별적이고 측정 가능한 경험적 속성을 의미한다. 특징 공학은 Raw data
를 예측 모델의 기저에 있는 문제들을 잘 표현해주는 특징들로 변환하는 것을 의미한다. 특징 공학 과정을 거치면서 처음 보는 데이터에 대한 모델의 정확도가 향상된다. 좋은 특징들은 모델에 유연성을 부여하고 모델을 단순화하며, 좋은 결과를 도출하는 데 도움을 준다.
feature
로 사용편향은 데이터 내 숨겨진 모든 정보를 고려하지 않아 잘못 학습을 하는것을 의미한다(under fitting
). 분산은 데이터 내의 에러와 노이즈까지 학습에 고려하는 것을 의미한다(over fitting
). 기본적으로 머신러닝의 학습은 아래 수식에서 (가중치)와 (편향)을 찾아가는 과정을 의미한다.
과적합(over fitting
)은 학습한 모델이 학습 데이터에 과도하게 맞춰져 학습되었거나 지나치게 복잡한 모델을 사용한 경우에 발생할 수 있다.
부적합(under fitting
)은 학습한 모델이 데이터의 흐름을 파악할 수 없을만큼 지나치게 단순한 경우에 발생할 수 있다.
머신러닝 모델의 정확도가 100%라면 과적합인지, 혹은 머신러닝을 적용할 필요가 있는 도메인인지 고려해본다. 머신러닝은 경험을 근간으로 하는 일반화의 싸움이기 때문에 기본적으로 99.9%를 지향한다. 따라서 좋은 모델이라고 이야기 하기 전에 다양한 모델에 실험을 해봤는지부터 확인해보아야 하며 정확도의 기준은 실험에 사용되는 도메인의 속성과 사용한 알고리즘에 따라 달라진다.
회귀 모델은 원래 값과 예측한 값이 얼마나 차이 나는지 평가한다.
MAE
(Mean Absolute Error)MSE
(Mean Squared Error)MAE
(Median Absolute Error)R2 Score
데이터를 잘 군집화 했는지 평가한다(같은 cluster 안에 있는 데이터들의 유사성 평가).
Adjusted Rand Index
→ 악성코드에서는 사용 ↓Mutual Information Based Scores
Homogeneity
, completeness and V-measure
Fowlkes-Mallows Scores
Silhouette Coefficient
정답은 정답으로, 오답은 오답으로 잘 분류했는지 평가한다.
Accuracy Score
- 얼마나 잘 예측을 했는지 평가 (정답 / 전체)Confusion Matrix
- 알고리즘 성능을 시각화해주는 에러 표통계학 VS 머신러닝
통계학: 데이터에서 의미를 찾아내는 학문
머신러닝: 데이터에서 찾은 의미를 활용하기 위한 학문
확률: 일정한 조건 아래에서 어떤 사건이나 사상이 일어날 가능성의 정도 또는 수치
확률 분포
정규 분포(Normal Distribution) = (Gaussain Distribution)
feature engineering 프로세스
데이터 관찰: 데이터의 형식은 무엇인가? 에러는 없는가? 데이터 단위는?
데이터 전처리
특징 추출(Parsing): 데이터가 알고리즘이 처리하기에 너무 많은 정보를 담고 있는 경우, 특징만 추출
특징 구현(Processing): 직접 특징을 추출하는 방법 → 데이터 구조와 기저 정보에 대한 깊은 이해 必
데이터 변환
min/max 스케일링
PCA
(Principal Component Analysis): 주성분 분석 (대표적인 차원 축소 알고리즘)One Hot Encoding
특징 선택
기계가 학습하는 방법
선형 회귀(Linear Regression)
경사 하강법(Gradient Descent)
서로 연결된 연결망에서 0부터 1사이의 확률로 뉴런을 제거하는 기법이며 주로 과적합을 방지하기 위해 사용한다.
feature
가 너무 경우, 어떤 것이 중요한 feature
가 될 수 있는지 파악하는 시간을 단축하기 위한 목적이다.
import sklearn.ensemble as ske
from sklearn.feature_selection import SelectFromModel
fsel = ske.ExtraTreesClassifier().fit(x, y)
model = SelectFromModel(fsel, prefit=True)
X_new = model.transform()
nb_features = X_new.shape[1]
from lazypredict.Supervised import LazyClassifier
clf = LazyClassifier(verbose=0, predictions=True)
models, predictions = clf.fit(x_train, x_test, y_train, y_test)