목록공부/ML (7)
블로그
클래스 불균형(Class Imbalances) 문제의 경우 알고리즘이 다수 클래스를 더 많이 예측하는 방향으로 편향되는 경향이 있음 → 소수 클래스에서 오분류율이 높아짐 다수 클래스는 잘 맞추기 때문에 모델의 정확도(Accuracy)는 높지만, 소수 클래스의 재현율(Recall)은 매우 낮아질 수 있음 해결 방법 1: Resampling Under Sampling : 다수 클래스 데이터를 소수 클래스 수 만큼 랜덤 샘플링(비복원 추출) Over Sampling : 소수 클래스 데이터를 다수 클래스 수 만큼 랜덤 샘플링(복원 추출) 샘플링 방식이 다양하므로 상황에 맞는 샘플링 방식을 사용해야 함 해결 방법 2 : Class Weight Resampling 없이 클래스에 가중치를 부여하여 클래스 불균형 문제..
여러 개의 모델을 결합하여 훨씬 강력한 모델을 생성하는 기법 1. 보팅(Voting) 여러 모델들(다른 유형의 알고리즘 기반)의 예측 결과를 투표를 통해 최종 예측 결과를 결정하는 방법 하드 보팅: 다수 모델이 예측한 값이 최종 결괏값 소프트 보팅: 모든 모델이 예측한 레이블 값의 결정 확률 평균을 구한 뒤 가장 확률이 높은 값을 최종 선택 2. 배깅(Bagging) Bootstrap Aggregating의 약자 데이터로부터 부트스트랩(중복 추출) 한 데이터로 모델들을 학습시킨 후, 모델들의 예측 결과를 집계해 최종 결과를 얻는 방법 같은 유형의 알고리즘 기반 모델을 사용함 데이터 분할 시 중복을 허용(복원 랜덤 샘플링 방식이라고 함) 범주형 데이터(Categorical Data)는 투표 방식(Votin..
1. Hyperparameter 알고리즘을 사용해 모델링 할 때, 모델 성능을 최적화하기 위해 조절할 수 있는 매개변 모델의 성능 향상을 위해 최선의 하이퍼파라미터 값을 찾는 다양한 시도를 해야 함 KNN k 값(n_neighbors)에 따라 성능이 달라짐 데이터 건수의 제곱근 값으로 설정하는 경우가 종종있음 k 값이 가장 클 때(=전체 데이터 개수) 가장 단순한 모델 → 평균, 최빈값 k 값이 작을 수록 복잡한 모델이 됨 거리 계산법(metric)에 따라 성능이 달라질 수 있음 Decision Tree max_depth 트리의 최대 깊이를 제한 완벽하게 클래스 결정 값이 될 때까지 깊이를 계속 키우며 분할하거나, 노드가 가지는 데이터 개수가 min_samples_split보다 작아질 때까지 계속 깊이를..
K - Fold Cross Validation from sklearn.model_selection import cross_val_score # 사용할 모델 선언 model = MODEL() cv_score = cross_val_score(model, x_train, y_train, cv=10) K-분할 교차 검증 모든 데이터가 평가에 한 번, 학습에 k-1번 사용됨 k개의 분할(Fold)에 대한 성능을 예측 → 평균, 표준편차 계산, 일반화 성능 단 k는 2 이상이어야 함(k가 1일 경우, 학습 데이터로 평가까지 하게 됨) 장점 모든 데이터를 학습과 평가에 사용할 수 있음 반복 학습과 평가를 통해 정확도를 향상시킬 수 있음 데이터가 부족해서 발생하는 과소적합 문제를 방지할 수 있음 평가에 사용되는 데이터..
1. Linear Regression from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_error, r2_score 실젯값과의 오차가 최소가 되는 직선 y햇 = w0 +w1x1 w0 : 편향 w1 : 가중치(회귀 계수) 최선의 회귀모델 : 전체 데이터의 오차 합이 최소가 되는 모델 # 회귀계수 확인 model.coef_ model.intercept_ model.coef_ : 모델 가중치(회귀 계수) 확인 model.intercept_ : 편향 확인 단순 회귀(Simple Regression) 독립변수 하나가 종속변수에 영향을 미치는 선형회귀 x값 하나만으로 y값을 설명할 수 있는 경우 회귀식..
1. 회귀모델 성능평가 y : 실젯값, Target. 이 값과 비교해서 모델의 성능을 평가 y햇 : 예측값 , 모델의 예측값이 평균값보다 오차를 얼마나 더 줄였는지 궁금한 것 y바 : 평균값 회귀모델의 성능은 실젯값과 예측값의 차이인 오차의 크기로 평가함 하나의 값으로 오차를 표현하기 위해 다양한 연산을 활용함 방법1 : 오차합 오차가 2, -1, 2, -3인 경우 다 합하면 오차가 0이 돼버림. 사용X 방법2 : 오차 제곱의 합 오차 제곱의 합 → SSE(Sum Squared Error) 오차 제곱(SSE)의 합을 구한 후 평균을 구함 → MSE 오차의 제곱이므로 루트를 사용해 일반적인 값으로 표현 → RMSE 방법3 : 오차 절대값의 합 오차 절대값의 합을 구한 후 평균을 구함 → MAE 오차 비율을..
컬럼이 너무 많아질 경우 One-Hot Encoding 하지 않음 Label Encoding => 컬럼이 y에 얼마나 영향을 주는지 알 수 있음 One-Hot Encoding => 컬럼의 범주별로 y에 얼마나 영향을 주는지 알 수 있음 데이터 컬럼이 너무 많아지면(너무 복잡해지면) 모델 성능이 떨어질 수 있음 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3) test_size 정수로 주면 개수 지정하는 것 (3을 주면 하위 3행을 테스트 셋으로 설정함)