목록AI/Machine Learning (48)
우노
교차 검증이란? 보통은 train set 으로 모델을 훈련, test set으로 모델을 검증한다. 여기에는 한 가지 약점이 존재한다. 고정된 test set을 통해 모델의 성능을 검증하고 수정하는 과정을 반복하면, 결국 내가 만든 모델은 test set 에만 잘 동작하는 모델이 된다. 즉, test set에 과적합(overfitting)하게 되므로, 다른 실제 데이터를 가져와 예측을 수행하면 엉망인 결과가 나와버리게 된다. 이를 해결하고자 하는 것이 바로 교차 검증(cross validation)이다. 교차 검증은 train set을 train set + validation set으로 분리한 뒤, validation set을 사용해 검증하는 방식이다. 교차 검증의 장점과 단점 장점 모든 데이터셋을 훈련에..
의사결정트리(Decision Tree)란? 의사결정트리는 일련의 분류 규칙을 통해 데이터를 분류, 회귀하는 지도 학습 모델 중 하나이며, 결과 모델이 Tree 구조를 가지고 있기 때문에 Decision Tree라는 이름을 가집니다. 아래 그림을 보면 더 쉽게 이해가 가능합니다. 위 그림은 대표적인 의사결정트리의 예시로서, 타이타닉호의 탑승객의 생존여부를 나타내고 있습니다. 이렇게 특정 기준(질문)에 따라 데이터를 구분하는 모델을 의사 결정 트리 모델이라고 합니다. 한번의 분기 때마다 변수 영역을 두 개로 구분합니다. 결정 트리에서 질문이나 정답은 노드(Node)라고 불립니다. 맨 처음 분류 기준을 Root Node라고 하고 중간 분류 기준을 Intermediate Node 맨 마지막 노드를 Termina..
결측치란? 대부분의 머신러닝 알고리즘은 Missing feature, 즉 누락된 데이터가 있을 때, 제대로 역할을 하지 못합니다. 그래서 먼저 Missing feature에 대해 처리해주어야 합니다. Missing feature, NA(Not Available) : '결측치'라고 하며 값이 표기되지 않은 값 결측치의 종류 Random : 패턴이 없는 무작위 값 No Random : 패턴을 가진 결측치 결측치 처리 전략 제거 (Deletion) 대치 (Imputation) 예측 모델 (Prediction model) 결측치 확인 결측치 여부 확인 df["col"].isnull() 결측치 개수 확인 df["col"].isnull().value_counts() 제거 (Deletion) 결측치의 ..
Hyperparameter Optimization이란, 학습을 수행하기 위해 사전에 설정해야 하는 값인 hyperparameter(하이퍼파라미터)의 최적값을 탐색하는 문제를 지칭합니다. 보통 Hyperparameter를 찾기 위해 사용되는 방법으로는 Manual Search, Grid Search, Random Search, Bayesian optimization, Evolutionary algorithm 등이 있습니다. 여기서 다룰 내용은 Manual Search, Grid Search, Random Search, Bayesian optimization입니다. Manual Search 여러분들은 보통 직관 또는 대중적으로 알려진 노하우 등에 의존하여, hyperparameter 값을 선정하고, 이들을 ..
이상값이란? 검출된 값중 다른 값들에 비해 지나치게 높거나 낮은 값을 말합니다. 예를 들어, 어느 마을 구성원의 수입이 다음과 같다고 가정합시다. A : 10만원 B : 12만원 C : 14만원 D : 16만원 여기서 마을 구성원들의 평균 수입은 13만원입니다. 그런데 어느날, 이 마을에 빌게이츠가 이사옵니다. 빌게이츠의 수입은 1000만원이라고 하겠습니다. 그렇다면 마을 구성원의 수입 평균은 13만원이 아닌 210만원이 됩니다. 이상하지 않나요? 여기서 평균이라는 대푯값의 문제점이 발생합니다. 평균은 이상값(Outlier), 즉 다른 값들에 비해 지나치게 크거나 작은 값에 영향을 많이 받는다는 것입니다. 따라서 이러한 경우에는 흔히 중앙값(median)을 대푯값으로 사용합니다. 위의 예시에서 중앙값을 ..
모델을 학습시키기 이전에, compile() 메소드를 통해서 학습 방식에 대한 환경설정을 해야 합니다. 다음 세 개의 인자를 입력으로 받습니다. 정규화기 (optimizer) 훈련과정을 설정합니다. 즉, 최적화 알고리즘을 설정을 의미합니다. adam, sgd, rmsprop, adagrad 등이 있습니다. 손실 함수 (loss function) 모델이 최적화에 사용되는 목적 함수입니다. mse, categorical_crossentropy, binary_crossentropy 등이 있습니다. 평가지표 (metric) 훈련을 모니터링 하기 위해 사용됩니다. 분류에서는 accuracy, 회귀에서는 mse, rmse, r2, mae, mspe, mape, msle 등이 있습니다. 사용자가 메트릭을 정의해서 사..
Classification Metrics (분류 메트릭) Accuracy 분류기의 성능을 측정할 때 가장 간단히 사용할 수 있음 optimize하기 어려움 Logloss 잘못된 답변에 대해 더 강하게 패널티 부여 Area Under Curve (AUC ROC) 이중 분류에만 사용된다. 특정 threshold를 설정 예측의 순서에 의존적이며 절대값엔 의존적이지 않음 Regression Metrics (회귀 메트릭) MSE (Mean Squared Error) 평균 오차 제곱합이라고 불리며 실제값과 오차의 차를 제곱한 뒤 평균을 한 값으로 산출한다. 예제코드 from sklearn.metrics import mean_squared_error print('MSE : ', mean_squared_..
앙상블(Ensemble) 앙상블은 여러 개의 의사 결정 트리(Decision Tree)를 결합하여 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법입니다. 앙상블 학습의 핵심은, 여러 개의 약 분류기(Weak Classifier)를 병렬 또는 직렬로 결합하여 강 분류기(Strong Classifier)로 만드는 것입니다. 배깅 : 동일 알고리즘의 약 분류기를 병렬로 사용 부스팅 : 동일 알고리즘의 약 분류기를 직렬로 사용 보팅 : 다른 알고리즘의 약 분류기를 병렬로 사용 배깅(Bagging) 원본 데이터를 랜덤 샘플링해, 크기가 동일한 n개의 샘플 데이터를 생성하고 각 샘플 데이터를 기반으로 동일한 알고리즘 기반의 의사 결정 트리를 병렬적으로 학습한 뒤, 각 모델의 학습 결과를 결합하는 방식입니다..
Boosting 이란? 여러 개의 약한 Decision Tree를 조합해서 사용하는 Ensemble 기법 중 하나이다. 즉, 약한 예측 모형들의 학습 에러에 가중치를 두고, 순차적으로 다음 학습 모델에 반영하여 강한 예측모형을 만드는 것이다. XGBoost 란? XGBoost는 Extreme Gradient Boosting의 약자이다. Boosting 기법을 이용하여 구현한 알고리즘은 Gradient Boost 가 대표적인데 이 알고리즘을 병렬 학습이 지원되도록 구현한 라이브러리가 XGBoost 이다. Regression, Classification 문제를 모두 지원하며, 성능과 자원 효율이 좋아서, 인기 있게 사용되는 알고리즘이다. XGBoost의 장점 GBM 대비 빠른 수행시간 병렬 처리로 학습, 분..
스케일링이란? 머신러닝을 위한 데이터셋을 정제할 때, 특성별로 데이터의 스케일이 다르다면 어떤 일이 벌어질까요? 예를 들어, X1은 0 부터 1 사이의 값을 갖고 X2 는 1000000 부터 1000000000000 사이의 값을 갖고 y 는 1000000 부터 100000000 사이의 값을 갖는다고 가정한다면 X1 특성은 y 를 예측하는데 큰 영향을 주지 않는 것으로 생각할 수 있습니다. 때문에 특성별로 데이터의 스케일이 다르다면, 머신러닝이 잘 동작하지 않을 수 있습니다. 따라서, 저희는 데이터 스케일링 작업을 통해, 모든 특성의 범위(또는 분포)를 같게 만들어줘야합니다. 주로 사용되는 스케일링 개념 Standardization (표준화) 특성들의 평균을 0, 분산을 1 로 스케일링하는 것입니다. 즉,..