본문 바로가기

전체 글

(294)
Classification - predict_proba (log_loss) [log_loss] log_loss는 분류 모델의 손실 함수로 사용되며 Cross Entropy라고도 불림 log_loss는 정확한 label값 (0, 1, ..)을 맞히는 것이 아닌, 모델이 그 클래스를 예측할 확률을 이용해서 평가하는 지표 모델의 fit 이후 predict_proba를 이용하면 각 클래스별 예측 확률을 array형태로 리턴함 현재 학습한 확률이 특정 확률에 대한 참값(목표 확률)에 가까울 수록 cross entropy는 낮아짐 from sklearn.metrics import log_loss model.fit(X_train, y_train) y_pred = model.predict_proba(X_valid) log_loss(y_valid, y_pred) log_loss는 손실이므로 값..
Classification - LGBMClassifier Gradient Boosting 알고리즘 기반의 단점을 보완한 xgboost에도 아쉬운 점이 있다. 바로, 여전히 속도가 느리다는 것이다. 이를 다시 보완하기위해 나온 것이 LightGBM이다. [LightGBM] XGboost보다 가볍고 더 나은 성능을 보이며 메모리도 더 적게 사용한다. XGboost의 균형 트리 분할 방식 (level-wise)가 아닌 리프 중심 분할 방식 (leaf-wise)을 사용해 비대칭적 트리를 형성하므로 균형을 잡기 위한 연산을 하지 않는다. lightgbm의 장단점 장점 단점 xgboost의 장점을 차용한다. 데이터의 양이 적다면 과적합될 가능성이 있다. (leaf-wise) xgboost 보다 빠르고 좋은 성능, 더 적은 메모리 https://steadiness-193...
Classification - XGBClassifier [XGBoost] 부트스트래핑(Bootstrapping) 방식의 앙상블 알고리즘 부트스트래핑 : 임의로 샘플 및 변수를 선택하여 학습 부스팅 알고리즘 (Boosting algorithm) 각 트리(이터레이션)가 맞히지 못한 샘플에 대해 가중치를 부여, 추후 학습할 때 가중치를 반영하여 새로운 트리를 생성 XGBoost는 균형 트리 분할 방식(level-wise)으로 모델을 학습하여 대칭적 트리를 만듦 XGBoost의 장점 1. 강력한 병렬 처리로 학습과 처리가 빠름 (Gradient Boosting Model 대비 빠른 것) 2. Greedy-algorithm을 이용, 자동 가지치기(Pruning)가 가능 과적합(Overfitting) 방지 3. 자체 교차검증 알고리즘 탑재 4. 결측치 자체 처리 5. ..
Regression - Regularization : L1 규제(Lasso), L2 규제(Ridge) * 수학적 증명, 수식보단 기본 개념과 활용법에 초점을 맞춤 Regularization (정형화, 규제, 일반화) 모델이 과적합되게 학습하지 않고 일반성을 가질 수 있도록 규제 하는 것. 하늘색 선은 오버피팅 될 수 있으므로 빨간색 점선으로 모델이 설정될 수 있게 해주는 작업이다. 데이터의 feature에는 손대지 않고 최대한 하늘색 선을 펴주려면 기울기(가중치)를 건드리면 된다. 이때 이용하는 것이 Lasso, Ridge이다. Lasso (least absolute shrinkage and selection operator) w는 가중치(기울기)를 의미한다. MSE (손실함수)에 α를 곱한 L1규제항을 더한 것이다. (비용함수에 가중치 파라미터의 절댓값을 모두 합한 형태) 학습의 방향이 단순히 손실함수..
Classification - RandomForestClassifier https://steadiness-193.tistory.com/257 Machine Learning - valid와 test를 train으로 전처리 https://steadiness-193.tistory.com/256 Machine Learning - train_test_split https://steadiness-193.tistory.com/253 Machine Learning - 랜덤으로 train과 test로 나누기 데이터 불러오기 seaborn의 iris 데.. steadiness-193.tistory.com 위 포스팅에서 만든 데이터셋을 이용한다. [RandomForestClassifier] 여러 개의 모델을 합치는 앙상블의 대표적 모델 서로 다른 변수 셋으로 여러 트리를 생성 [파라미터] n_..
Classification - DecisionTreeClassifier [DecisionTreeClassifier] 각 영역의 복잡도가 낮은 기준점으로 잘라(분기) 트리 형태의 구조로 분류하는 모델 Greedy한 알고리즘 : 분기를 한번 하면 최적의 트리 형태가 발견되더라도 되돌려서 재분기하지 않음 최적의 트리 생성을 보장하지 않기에 속도가 빠름 [파라미터] - max_depth : 생성할 DecisionTree의 깊이 (int) - max_features : DT가 사용하는 feature의 수 (float) - min_samples_split : 구간의 데이터 수가 N개 미만이면 더이상 분기하지 않음 (int) 과적합 방지 - max_leaf_nodes : 리프 노드에서 최대로 가지고 있을 수 있는 데이터의 수 (int) - random_state : 난수 (int) 복잡..
Classification - SVM 서포트 벡터 머신 https://steadiness-193.tistory.com/257 Machine Learning - valid와 test를 train으로 전처리 https://steadiness-193.tistory.com/256 Machine Learning - train_test_split https://steadiness-193.tistory.com/253 Machine Learning - 랜덤으로 train과 test로 나누기 데이터 불러오기 seaborn의 iris 데.. steadiness-193.tistory.com 위 포스팅에서 만든 데이터셋을 이용한다. 분류이기 때문에 SVM에서의 SVC를 불러왔다. 아무 파라미터 없이 기본으로 SVC로 예측한 뒤 정확도를 평가했다. [Support Vector Ma..
Classification - 정확도 평가 : accuracy_score 분류에서는 일반적으로 accuracy (정확도)를 평가한다. from sklearn.metrics import accuracy_score accuracy_score에 정답배열과 예측값의 배열을 넣으면 정확도가 평가된다. 예시. accuracy_score(y_train, y_valid) * 100 93.41