Root Mean Squared Error (RMSE)
- 해석:
- 예측 오차의 크기를 직관적으로 해석하기 쉽게 만드
- 값이 낮을수록 모델의 성능이 좋다 #MSE
Mean Squared Error(MSE)
- 해석:
- MSE는 예측 오차의 제곱 평균
- 값이 낮을수록 모델의 성능이 좋다
(결정 계수)
= 1-\tfrac{\sum (예측값 - 실제값)^2}{\sum (실제값평균-실제값)^2}$$ - **해석**: - 값이 0과 1 사이에 있으며, 1에 가까울수록 모델이 데이터의 변동성을 잘 설명한다는 것을 의미 - 반면, 0에 가까울수록 모델의 설명력이 떨어진다는 것을 의미합니다. - MSE는 예측 오차의 제곱 평균을 나타내며, 값이 낮을수록 좋다 - RMSE는 MSE의 제곱근으로, 예측 오차의 실제 크기를 나타낸다. - **$R^2$는 모델이 데이터의 변동성을 얼마나 잘 설명하는지를 나타내는 지표로, 1에 가까울수록 좋다. #비용함수 #### 로지스틱 회귀의 비용 함수: $$ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)})) \right] $$h_\theta(x) = \frac{1}{1 + e^{-\theta^T x}}
#### 정규화(regularization) 기법 - 불순물 추가 하여 과적합을 막는다 $$(y-(W_{1}X_{1} + W_{2}X_{2}\cdots +W_{0})) + \lambda$$ $\lambda$ : 불순물 #Ridge #### **릿지(Ridge) 회귀**: - **정규화 항**: $L2$ 노름(norm)의 제곱, 즉 모든 계수의 제곱합입니다. - **목적 함수(Objective Function)**: $$J(\Theta )=MSE(\Theta)+\lambda \sum_{i=1}^{n}{\Theta_{i}^2 }$$ #Lasso #### **라소(Lasso) 회귀**: - **정규화 항**: $L1$ 노름, 즉 모든 계수의 절대값의 합입니다. - **목적 함수(Objective Function)**: $$J(\Theta )=MSE(\Theta)+\lambda \sum_{i=1}^{n}\left |{\Theta_{i}} \right |$$ - 릿지와 라소는 선형 회귀 모델에 정규화를 추가하여 과적합 방지 - 릿지는 $L_{2}$ 정규화를 사용하여 계수를 작게 만들지만 0으로 만들지는 않는다 - 라소는 $L_{1}$ 정규화를 사용하여 계수를 0으로 만들 수 있어, 불필요한 특성을 자동으로 제거하는 효과가 있다 ## 모델 파라미터 정리 ### 회귀(Regression) #### 결정 트리 (Decision Tree) - **max_depth**: 트리의 최대 깊이. 너무 높으면 과적합의 위험이 있다 - **criterion**: 분할 품질을 측정하는 기준. 'gini' 또는 'entropy'를 사용 - **splitter**: 분할을 수행하는 전략. 'best' 또는 'random' ### 앙상블(Ensemble) #### 배깅(Bagging, Bootstrap) ##### **랜덤포레스트 (Random Forest)** - **n_estimators**: 앙상블에 사용할 결정 트리의 수 (default: 100) - **max_depth**: 각 트리의 최대 깊이 (default: None, 가능한 값: 정수) - **random_state**: 재현 가능성을 위한 랜덤 시드 (default: None) ##### **엑스트라트리 (Extra Trees)** - **n_estimators**: 생성할 트리의 수 (default: 100) - **max_features**: 각 트리에서 분할에 사용할 특성의 최대 수 (default: 'auto', 가능한 값: 'auto', 'sqrt', 'log2') - **bootstrap**: 무작위로 데이터를 샘플링할 것인지 여부 (default: False) #### 부스트(Boost) ##### **그레이디언트 부스팅 (Gradient Boosting)** - **learning_rate**: 학습률 (default: 0.1) - **n_estimators**: 부스팅 단계의 수 (default: 100) - **subsample**: 각 부스팅 단계에서 사용할 훈련 샘플의 비율 (default: 1.0, 가능한 값: 0~1 사이의 실수) ##### **히스토그램 기반 부스팅 (Histogram-based Boosting)** - **learning_rate**: 학습률 (default: 0.1) - **max_iter**: 최대 반복 횟수 (default: 100) - **max_leaf_nodes**: 각 트리에서의 최대 리프 노드 수 (default: 31) ##### **XGBoost** - **eta**: 학습률 (default: 0.3) - **max_depth**: 트리의 최대 깊이 (default: 6) - **subsample**: 훈련 데이터의 하위 샘플 비율 (default: 1) ##### **LightGBM** - **learning_rate**: 학습률 (default: 0.1) - **num_leaves**: 하나의 트리가 가질 수 있는 최대 리프의 수 (default: 31) - **max_depth**: 트리의 최대 깊이 (default: -1, 의미: 제한 없음) ### 분류(Classification) #### K-means 클러스터링 (K-means Clustering) - **n_clusters**: 군집의 수를 결정하는 파라미터 (default: 8) - **init**: 초기 중심점의 설정 방법 (default: 'k-means++') - **n_init**: 중심 초기화를 몇 번 반복할지 결정 (default: 10) - **max_iter**: 알고리즘의 최대 반복 횟수 (default: 300) - **tol**: 수렴 조건을 판단하기 위한 허용 오차 (default: 1×10−41×10−4) - **precompute_distances**: 거리 계산을 미리 할지 결정 (default: 'auto') - **verbose**: 상세한 정보 출력 여부 (default: 0) - **random_state**: 결과의 재현성을 위한 랜덤 시드 (default: None) - **copy_x**: 데이터를 복사할지 여부 (default: True) - **n_jobs**: 병렬 처리를 위한 CPU 코어 수 (default: None) - **algorithm**: 사용할 K-means 알고리즘 버전 (default: 'auto') #### **주성분 분석 (Principal Component Analysis, PCA)** - **n_components**: 주성분의 수를 결정하는 파라미터 (default: None, 가능한 값: 정수, 'mle', 0-1 사이의 실수) - **svd_solver**: SVD (Singular Value Decomposition) 해결 방법 (default: 'auto', 가능한 값: 'auto', 'full', 'arpack', 'randomized') - **whiten**: 주성분을 희석화할지 여부, 일반적으로 클러스터링이나 분류에서 유용 (default: False) - **tol**: SVD를 위한 허용 오차 (default: 0.0, svd_solver가 'arpack'일 경우에 사용) - **random_state**: 결과의 재현성을 위한 랜덤 시드 (default: None) ##### **MLE (Maximum Likelihood Estimation, 최대우도추정)** - 정의: MLE는 주어진 데이터를 가장 잘 설명하는 확률 분포의 파라미터를 찾는 통계적 방법입니다. - PCA에서의 역할: - `n_components`에 'mle'를 설정하면, PCA는 최대우도추정을 사용하여 자동으로 주성분의 수를 선택합니다. - 이 방법은 주어진 데이터에 가장 적합한 차원의 수를 자동으로 결정하려고 할 때 유용합니다. - 작동 원리: 1. 데이터에 가장 잘 맞는 확률 모델을 가정합니다. 2. 모델의 파라미터를 조정하여 데이터의 우도(likelihood)를 최대화합니다. - 목적: - 데이터를 가장 잘 설명하는 모델의 파라미터를 찾아, 모델의 성능을 개선하려는 목적으로 사용됩니다.