TIL 83일차 : 랜덤포레스트 실습, 허투루 배운 건 없다!

2024. 3. 11. 22:56회고/TIL(매일)

 

✏️도전한 점


1. 주말에 급하게 크롤링, 수집한 데이터셋의 변수를 수치형으로 모두 변환했다.

2. 변환한 변수를 독립 변수의 X로, 작가의 최고 순위를 Y의 종속 변수로 할당했다.

3. 데이터 스케일링과 학습 및 테스트 데이터도 모두 분리하였다.

4. 한 줄 정리: 책의 판매량 지수, 가격, 리뷰 수, 평점, 랭크에 처음 올랐을 때의 순위로 작가가 가질 수 있는 최고의 순위를 예측하고 그 작가가 루키가 될 수 있는 작가인지 아닌지 판별하는 모델을 만들었다.

 

01 머신러닝 모델학습의 결과


 

RMSE: 135 / mse: 18277 / R² Score: 0.65

 

* 제작모델에 X_test -> X_scaled 입력 시 모든 예측값 확인

y_pred = model.predict(X_scaled)

 

✏️좋았던 점


1. 셀레니움 라이브러리를 이용하여 크롤링하는 방법을 학습하고 실행해본 점.

2. 도전할 수 있는 방향의 가능성을 열어두게 된 점.

3. 정리된 데이터가 아닌 크롤링한 로우 데이터를 전처리 해 본 점.

4. 전처리를 엄청나게 반복하면서 판다스 책에서 배운 내용을 직접 실습해 본 점이 좋았다.

5. 이론으로 배운 것과 실제 데이터를 만져보니 특히, split해야 할 컬럼들이 너무 많았다.

 

✏️아쉬운 점


1. 내가 만든 건 머신러닝 모델은 루키가 될 가능성이다.

2. 내가 보고 싶은 건 다음 달에 루키가 될 수 있는지 여부이다.

3. 날짜 변수를 제거하고 만들었고, 컨트롤 할 수 있는 변수가 적어서 아쉽다.

4. 다음은 YES or NO, 0 or 1을 예측하는 모델을 제작해봐야겠다.

5. 종속변수 데이터를 해석하는데 오류가 있었던 점이 아쉽다.

 

✏️시도할 점


1. 머신러닝 공부 : 부족하다.

2. 기본통계 공부 : 부족하다.

3. 태블로 공부 : 태블로를 잘 다루는 건 정말 멋진 능력이다. 어렵고 배우고 싶다고 생각한다.

4. 알고리즘 공부 : 이번에 깨달은 점이  점프투와 판다스입문 책에서 배운 내용, 알고리즘에서 배운 로직을 구현하는 방법들이 실습해서 매우 많이 사용된다는 것이다. 캠프 학습에서, 스터디에서 허투루 배운 건 없다!

5. 머신러닝을 활용한 대시보드 제작법을 배우고 싶다.

 

✏️인사이트


- yes_df = yes_df.sort_values(['title','rank_month']) # 소현튜터님 전처리 코드
- yes_df['rownum'] = yes_df.groupby(['title']).cumcount()+1 # 그룹화 방법
- new_df= yes_df.groupby(['title']).max('rownum') # sql의 rownumber
- yes_df['rank_max'] = yes_df.groupby(['title'])['ranking'].transform(max) # 그룹화 방법
- pivot(index='title', values='rank_max', inplace=True) # 피벗테이블

 

- R² Score도 1에 가까울수록 이 모델 쓸만한지 알려주는 지표는 맞다.
- 근데 다른 모델링도 같다. 잘 안쓰는 지표이다.
- 랜덤포레스트는 분류, 회귀 모두 사용 가능하다.
- R² Score는 회귀 분석 성능을 보는 방법이다.

- 실제값 대비 얼마나 떨어져 있는지 비율로 보여준다.

 

- 실전에서는 일자별로 잘리게 되어 있다.

- 모델링을 진행하면서 평가모델의 정확도가 낮을 때는 월초, 월말 에는 이슈가 있을 수 있다고 판단하고 데이터를 제외한다.

- 사회적으로 이슈가 있었던 날의 날짜 데이터는 제외하고 평범한 데이터를 가지고 모델링을 진행하려고 한다.

- 일자 별로 혹은, 데이터 값이 갑자기 뛸 때 이 데이터는 제거해야 할 확률이 높다.

- 그러면 정확도가 올라간다.

 

- 현재 데이터는 가공이 힘들다.
- 날짜 데이터가 없으니까 정확도를 높이는게 힘들다.
- 데이터셋 바꿨으면 좋겠다.