일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ux·ui디자인
- GNN
- likelion
- folium
- intern10
- 멋사
- 멋쟁이사자처럼
- 멋재이사자처럼
- Python
- 마이온
- 파이썬
- likelionlikelion
- Plotly
- TiL
- 프로젝트
- 멋쟁이사자처럼멋쟁이사자처럼
- pyhton
- Join
- parklab
- 알고리즘
- 마이온컴퍼니
- 그리디
- BFS
- DP
- 시각화
- 인턴10
- seaborn
- DFS
- SQL
- GIS
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (21) 본문
2023.03.14
질문🙋🏻♂️: 만약 train에는 없는 데이터가 test에 생긴다면? OneHotEncoder(handle_unknown='ignore') -> 알 수 없는 카테고리가 발견되면 0으로 처리 |
● 머신러닝/딥러닝 알고리즘은 문자 데이터를 처리할 수 없다!
-> 알고리즘이 데이터를 처리할 수 있도록 feature engineering을 통해 데이터를 가공 feature engineering 중 하나인 Encoding Binary encoding vs one-hot-encoding
Binary 값은 굳이 one-hot-encoding해줄 필요가 없다. 배타적인 값이 중복을 일으키기 때문!
- pd.get_dummies() -> 문자 형태 데이터만 encoding 해서 데이터프레임을 변환해 줌
- scikit-learn에서는 numpy-array형태로 변환됨 -> 기존(숫자 형태여서 변환해줄 필요가 없었던 나머지 데이터) 데이터프레임과 병합해 줘야 함
● 인코딩이 필요한 object 데이터만 가져오기
col_ohe = X_train.select_dtypes(include="object")
질문🙋🏻♂️: 왜 pd.DataFrame() 을 사용했나요 ? feature names를 편하게 시각화하기 위해 판다스 데이터프레임으로 데이터를 가공해주었습니다 ! |
● 교차검증이란?
Cross Validation
- 모델 학습 시 데이터를 train set와 validation set로 교차하여 선택하는 방법
- test set을 하나로 고정하지 않고 데이터의 모든 부분을 모델 검증에 사용하여 과적합을 방지한다.
- 모든 데이터셋을 학습과 검증에 활용할 수 있어 평가에 사용되는 데이터 편향을 방지한다.
- 특정 데이터 셋에 대한 과적합을 방지하고 데이터 셋 규모가 적을 때 과소적합을 방지한다.
단, 반복 학습 횟수가 증가하는 만큼 iteration이 돌기 때문에 모델 훈련 및 평가 시간이 증가한다
질문🙋🏻♂️: Hold-out-validation 과 Cross-validation의 장단점은 무엇일까요? |
|
Hold-out validation
|
Cross-validation
|
● Hold-out-validation 과 Cross-validation의 사용하는 경우는?
Hold-out-validation
|
Cross-validation
|
- cross_validate : 교차 검증을 통해 지표를 평가하고 fit/score 시간도 기록
- cross_val_predict: 각 입력 데이터 포인트에 대해 교차 검증된 추정치를 생성합니다.
- cross_val_score : 교차 검증을 통해 점수를 평가
● n_jobs
n_jobs 매개변수를 이용하여 사용할 코어 수를 지정할 수 있습니다.
사용하는 CPU 코어 개수에 비례해서 속도도 빨라집니다(코어를 두 개 사용하면 랜덤 포레스트의 훈련 속도도 두 배 빨라집니다).
하지만 n_jobs 매개변수를 코어 개수보다 크게 지정하는 것은 별로 도움이 되지 않습니다.
n_jobs=-1로 지정하면 컴퓨터의 모든 코어를 사용합니다
● K-Fold Cross-Validation(K겹 교차 검증)
가장 일반적으로 사용되는 교차 검증 방법 진행 절차
- 원본 데이터를 동일한 크기의 fold k개로 분할
- 분할된 fold 중 test data로 할당된 적이 없는 fold 하나를 test data로 할당
- 이 과정을 k번 반복 (전체 데이터셋에 train/test fold가 할당되도록)
- data fold set에 대해서 나온 검증 결과들의 평균으로 최종 검증 결과 도출
● EDA의 주요 목적
가정을 세우기 전에 데이터를 살펴보는 데 도움을 주는 것입니다.
명백한 오류를 식별하고, 데이터 내의 패턴을 더 잘 이해하고, 이상값이나 비정상적인 이벤트를 감지하고,
변수 간의 흥미로운 관계를 찾는 데 도움이 될 수 있습니다
● 트리의 품질 판단
분류에서 트리의 품질 -> 지니, 엔트로피(얼마나 값이 섞여있는지)
회귀에서 트리의 품질 -> absolute error, square error
● 회귀 모델 평가 지표 :
MAE(Mean Absolute Error)
MSE(Mean Sqaured Error)
RMSE(Root Mean Sqaured Error)
RMSLE(Root Mean Square Log Error)
R-Squared(Coefficient of Determination, 결정계수)
● 회귀모델의 성능 평가지표 해석 방법
분류 :
맞는 걸 얼마나 맞다고 예측했는지 , 틀린걸 얼마나 틀리게 예측했는지, 틀린걸 맞다고 예측한게 있는지 .... 등등
회귀 :
- 예측값과 실제값 차이가 얼마나 벌어져있는지를 확인한다.
- 특이값이 존재하면 오차에 대한 수치값이 크게 늘어난다
질문🙋🏻♂️: 회귀모델에서는 정답과 예측값이 얼마나 가까운지를 측정합니다. 정답과 예측의 차이를 어떻게 구할까요?
오차의 절댓값을 구하거나 => Absolute Error
양수로 만들어주기 위해서 제곱해서 => Squared Error
평균냅니다 => MAE, MSE
● r2_score (결정계수)
결정계수의 값은 0에서 1사이에 있으며, 종속변인과 독립변인 사이에 상관관계가 높을수록 1에 가까워진다.
즉, 결정계수가 0에 가까운 값을 가지는 회귀모형은 유용성이 낮은 반면, 결정계수의 값이 클수록 회귀모형의 유용성이 높다고 할 수 있다.
● 잔차와 오차
잔차: 실제 값과 모델이 예측한 값의 차이, 각 데이터 포인트마다 계산
잔차 = 실제 값 - 모델이 예측한 값
오차: 잔차들의 평균적인 크기를 나타내는 값
오차 = (잔차_1 + 잔차_2 + ... + 잔차_n) / n
MAE -> 평균절대오차 오차의 절대값의 평균
abs(y_train - y_valid_predict).mean()
MSE -> 평균제곱오차 오차의 제곱의 평균
((y_train - y_valid_predict)**2).mean()
RMSE -> 평균제곱근오차 오차의 제곱의 평균의 제곱근
mse ** 0.5
질문🙋🏻♂️: 왜 RMSE 대신 RMSLE 를 사용할까요?(chat GPT 답변) RMSE는 평균 제곱 오차의 제곱근으로, 실제 값과 예측 값 간의 차이를 측정하는 대표적인 지표입니다. 하지만 RMSE는 오차의 크기에 따라 가중치가 부여되어 모델 성능을 평가하는 데 있어서 이상치(outlier)에 민감한 경향이 있습니다. 즉, 예측 오차가 큰 값들이 RMSE를 크게 영향을 미치게 되어 모델 성능을 과대평가하는 경향이 있습니다. 반면에 RMSLE는 Root Mean Squared Log Error의 약자로, 예측 값과 실제 값의 로그를 취한 후, 그 차이를 제곱하여 평균한 값의 제곱근을 계산합니다. 이는 오차의 크기보다는 오차 비율에 집중하기 때문에 RMSE와는 달리 이상치에 덜 민감합니다. 또한 RMSLE는 값이 0에 가까워질수록 오차가 작아지므로, 모델 성능을 평가하는 데 있어서 오차의 크기보다는 오차의 상대적인 크기에 대한 정보를 더 잘 전달할 수 있습니다. 따라서, 모델의 성능을 평가하는 데 있어서 이상치(outlier)가 존재하는 경우나 예측값의 범위가 넓은 경우에는 RMSLE를 사용하는 것이 보다 적절합니다. |
'멋쟁이사자처럼 > Python' 카테고리의 다른 글
멋사 AI스쿨 TIL - (23) (0) | 2023.03.23 |
---|---|
멋사 AI스쿨 TIL - (22) (1) | 2023.03.16 |
멋사 AI스쿨 TIL - (20) (0) | 2023.03.15 |
멋사 AI스쿨 TIL - (19) (0) | 2023.03.09 |
멋사 AI스쿨 TIL - (18) (0) | 2023.03.07 |