본문 바로가기

금융 및 데이터

[Python] Random Forest 모델 기반 변수 중요도 산출하기

728x90

Random Forest 가 어떤 모델인지 궁금하신 분은 잘 정리된 블로그 링크를 남겨두었으니 참고하시길 바랍니다.

https://eunsukimme.github.io/ml/2019/11/26/Random-Forest/

 

Random Forest(랜덤 포레스트) 개념 정리

Decision Tree는 overfitting될 가능성이 높다는 약점을 가지고 있습니다. 가지치기를 통해 트리의 최대 높이를 설정해 줄 수 있지만 이로써는 overfitting을 충분히 해결할 수 없습니다. 그러므로 좀더 일

eunsukimme.github.io

 

아래의 코드는 실제 서비스 하고 있는 프로젝트에서 사용하고 있는 코드입니다.

 

 

[Python] 포트폴리오 최적화 서비스 제공과 텍스트마이닝을 사용한 금융 데이터 분석

해외의 포트폴리오 최적화 및 백테스트 사이트인 PortfolioVisualizer의 국내화 버전으로 개발하였습니다. 개인의 포트폴리오 최적화와 백테스트 기능을 제공하고 텍스트마이닝을 사용하여 시장, 기

sieon-dev.tistory.com

def getDf(self,data):
  X_data = data[data.drop(['Date','Kospi'],axis=1).columns]
  y_data = data[['Kospi']]
  #정규화
  ss = StandardScaler()
  X_scaled = ss.fit_transform(X_data)
  y_scaled = ss.fit_transform(y_data)
  x_train, x_test, y_train, y_test = train_test_split(X_scaled, y_scaled, test_size=0.3,shuffle=True)
  # 학습 진행
  forest = RandomForestRegressor(n_estimators=100)
  forest.fit(x_train, y_train)

  return list(forest.feature_importances_)

우선 필요한 데이터를 로드한 뒤 StandartScaler()로 정규화를 진행합니다. 이후 Train_test_split()을 사용하여 트레인과 테스트 셋을 나눈 뒤 RandomForest 모델로 학습을 시키면 Model.feature_importances 로 간단하게 변수 중요도를 구하실 수 있습니다. 

 

데이터셋

 

결과값