Data Science

[DSSchool_Level6] Kaggle - Bike Sharing Demand2

고양이의시간 2019. 11. 10. 00:45

컬럼별로 판다스, 시각화를 통하여 데이터 분석을 하여 머신런닝 예측 모델 개선 아이디어를 도출해 본다. 

그리고 도출한 인사이트를 활용하여 머신런닝 알고리즘에 적용해, Kaggle 에 제출하여 점수를 확인한다.

 

 

"자전거 대여량 예측하기" 데이터 분석 순서

  1. read csv 로 데이터 읽어오기
  2. 전체 데이터가 어떻게 구성되어 있는지 확인(데이터 수, 데이터 타입...)
  3. 전처리
  4. 데이터 분석 - 분석전 결과 예상/ 시각화, 판다스로 분석 / 인사이트 도출
  5. Decision Tree 를 사용하여 학습(fit), 예측(predict)
  6. sampleSubmission.csv 에 예측값 넣기
  7. Kaggle 제출

 

Classification & Regression

데이터를 받았을때 가장먼저 판단해야 할 것은, 풀어야 할 문제가 Classification 인지, Regression 인지 파악하는 것이 중요하다.

Classification

* 맞춰야 하는 정답(Label)이 특정 분류중 하나

예) 0 or 1 / 어떤승객이 살았냐 죽었냐(타이타닉)

* Categorical(같냐 다르냐가 중요)

* DecisionTreeClassifier 사용

 

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()

Regression

* 맞춰야 하는 정답(Label)이 높고 낮음의 숫자 

예) 주가예측 / 자전거 대여량이 높냐낮냐

* Continuous (연속적. 값이 높냐낮냐가 중요)

* DicisionTreeRegressor 사용

 

from sklearn.tree import DecisionTreeRegressor

model = DecisionTreeRegressor()

 

 

RandomForest

복원추출로 랜덤하게 데이터를 샘플링해서 여러개의 트리를 만들어 섞어쓰는 것.

(중복을 허용하면서 샘플링하므로, 트리생성을 무제한으로 만들 수 있다)

  • DecisionTree 보다 좋은 성능을 보장
  • 현장에서 자주 쓰이는 알고리즘
from sklearn.ensemble import RandomForestRegressor
# random_state: 랜덤한 결과가 안나오도록 고정
model = RandomForestRegressor(random_state=37)

 

 

DecisionTree 원리

  1. 넣어준 Feature 를 가지고 나올수 있는 모든 조건을 만든다

  2. 조건을 활용해 가지를 쳐서 나무를 만드는데,

  3. 가지에 들어갈 조건의 순서는, 조건 마다의 지니임플릭트를 계산하여

  4. 가장 수치가 낮은 조건을 트리 최상위에 올린다(좋은 조건일수록 상위에 자리함)

  5. 수치가 0이 거나, 가지를 칠 데이터가 없거나, max_depth 에 도달할때까지 가지를 친다

좋은 조건

수치가 크게 벌어지는 조건

예) 타이타닉을 기준으로, 생존10 : 사망90 (성별컬럼 같은)

나쁜 조건

수치가 벌어지지 않는 조건

예) 생존50:사망50