2024. 5. 16. 10:43ㆍ학습/머신러닝
01 랜덤포레스트 하이퍼파라미터
트리수10 시간0.0초 정확도0.3675
트리수100 시간2.2초 정확도0.3961
트리수200 시간4.5초 정확도0.4005
트리수300 시간6.8초 정확도0.4014
트리수400 시간9.4초 정확도0.4007
트리수500 시간11.4초 정확도0.4010
트리수600 시간13.9초 정확도0.4014
서론: 머신러닝 모델 최적화를 위해 트리 수와 정확도, 그리고 실행 시간을 고려하여 가장 효율적인 트리 수를 결정한다. 여기서 효율성은 높은 정확도를 유지하면서도 계산 비용(시간)을 최소화하는 것을 의미한다.
본론: 정확도는 트리 수가 증가함에 따라 점진적으로 증가하지만 300트리 이후로 정확도의 증가량은 상대적으로 미미하다. 실행 시간은 트리 수와 거의 선형적으로 증가한다. 즉, 트리 수가 많아질수록 모델을 훈련시키는 데 더 많은 시간이 소요된다.
분석 결과:
1) 100트리와 200트리 사이에서 정확도가 상당히 증가하며 (약 0.004), 시간 증가는 2.3초가 소요된다.
2) 200트리에서 300트리로 넘어갈 때의 정확도 증가는 약 0.0008로, 이는 상대적으로 작은 향상이며, 시간은 추가로 2.3초가 소요된다.
3) 300트리 이후로는 정확도의 증가가 더욱 미비하며, 시간 비용은 계속 증가한다.
결론: 200트리에서 300트리 사이가 정확도와 시간 사이의 균형이 잘 이루어져 가장 효율적인 트리 수의 범위로 보인다. 가장 균형 잡힌 점을 선택해야 한다면, 200트리가 가장 효율적이다. 이 때의 정확도는 0.4005이며, 실행 시간은 4.5초로, 상대적으로 높은 정확도를 합리적인 시간 비용으로 달성할 수 있다. 비용을 조금 더 투자할 수 있다면 300도 괜찮은 선택이라고 본다.
02 코드 기록
비교할 수 없는 데이터 삭제
ml_Data = ml_Data[ml_Data['ranking'].apply(len) > 1]
numpy는 pop이 안된다. 대신 np.delete를 추가한다. 이것은 직접 변환하지 않고 값을 반환해서 람다에 적합함.
리스트 중 첫번째 데이터만 삭제 후 반환
ml_Data['tmp'] = ml_Data['ranking'].apply(lambda x: np.delete(x,0))
X_test 자리에 스케일러된 데이터를 입력해야 한다.
y_pred = model.predict(X_test)
작가, 출판사를 제거 후 다시 병합하는 코드
zero_df_selected = zero_df_selected.drop_duplicates(subset='title')
merge_df = pd.merge(data, zero_df_selected)
03 테스트 기록
1. X = 컬럼 7개 (기본 컬럼)
R² Score: 0.3682120817960085
RandomForest Regressor score: 0.368224920901135
Linear Regression score: 0.24256376499093923
2. X = 컬럼 8개 - best(최근랭킹제외) 추가
R² Score: 0.3973600458185117
RandomForest Regressor score: 0.39746349381659474
Linear Regression score: 0.2786522385762441
3. X = 컬럼 9개 - best(최근랭킹제외), first 추가
R² Score: 0.4014250975046889
트리수200 RandomForest Regressor score: 0.40059825178589004
트리수300 RandomForest Regressor score: 0.40140598549679063
Linear Regression score: 0.2781695197479187
4. Feature Selection - 가격 제거
RandomForest Regressor score: 0.3916574665341619
5. Feature Selection - 판매지수 제거
RandomForest Regressor score: 0.3166905154913804
6. Feature Selection - 리뷰 수 제거
RandomForest Regressor score: 0.3836313940957271
7. Feature Selection - 평점 제거
RandomForest Regressor score: 0.40015621974425875
8. Feature Selection - 출판일부터 현재까지 기간 제거
RandomForest Regressor score: 0.39673042395337876
9. Feature Selection - 이전랭킹에서 현재일자 기간 제거
RandomForest Regressor score: 0.3943315417549732
10. Feature Selection - 베스트랭킹 제거
RandomForest Regressor score: 0.39290119685529634
'학습 > 머신러닝' 카테고리의 다른 글
머신러닝 2일차: 로지스틱 회귀 (0) | 2024.07.12 |
---|---|
머신러닝 1일차: 선형회귀 (0) | 2024.07.10 |
GEMMA, LLM, 댓글 긍부정 분석 실습 (0) | 2024.03.28 |
시계열 데이터 예측 모델 (머신러닝) (0) | 2024.03.20 |
Machine Learning 8 : 로지스틱회귀 실습 (0) | 2024.02.02 |