머신러닝에서의 앙상블?
하나의 모델을 쓰는 대신, 수많은 모델을 사용해 종합적인 판단을 하는 것
수많은 모델이 어떤 결과에 투표했는지에 따라 결정할 수도 있다.
수많은 모델을 만들고, 모델의 예측을 합쳐 종합적인 예측을 하는 것을 앙상블이라 한다.
트리 모델들을 임의로 많이 만들어서 다수결 투표로 결과를 종합하는 알고리즘.
Bootstrapping : 갖고 있는 데이터셋으로 다른 데이터셋을 만들어내는 방법.
(같은 행이 여러 번 들어가서 만들어도 됨, 다음 사진이 예시다.)
임의로 속성 두 개 선택한다고 해보자. 불순도가 낮은 것을 루트노드의 질문으로 한다. 다른 두 개의 속성의 불순도를 비교하여 낮은 것을 노드로 사용한다. 이것은 이전에도 학습했던 속성을 결정해 트리를 만드는 방법이다.
✅ 결정트리 임의로 만들기
1. bootstrapping 사용, 임의의 데이터셋을 만든다
2. 속성을 임의로 고르면서 만든다. 트리가 완성된다.
3. 1,2 의 과정을 반복한다.
3. 그리고 굉장히 많은 트리들을 임의로 만드는 것이 random forest
다. 트리들의 예측을 다수결로 모아 결과를 결정한다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
import numpy as numpy
import pandas as pd
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 5)
y_train = y_train.values.ravel()
model = RandomForestClassifier(n_estimators = 2000, max_depth = 4)
model.fit(X_train, y_train)
model.predict(X_test)
model.score(X_test, y_test)
importances = model.feature_importances_
indices_sorted = np.argsort(importances)
plt.figure()
plt.title('Feature importances')
plt.bar(range(len(importances)), importances[indices_sorted])
plt.xticks(range(len(importances)), X.columns[indices_sorted], rotation = 90)
plt.show()
rom sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
# 데이터 셋 불러 오기
cancer_data = load_breast_cancer()
# 저번 챕터 유방암 데이터 준비하기 과제에서 쓴 코드를 갖고 오세요
X = pd.DataFrame(cancer_data.data, columns = cancer_data.feature_names)
y = pd.DataFrame(cancer_data.target, columns = ['class'])
# 여기에 코드를 작성하세요
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 5)
y_train = y_train.values.ravel()
model = RandomForestClassifier(n_estimators = 10, max_depth = 4, random_state = 42)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
score = model.score(X_test, y_test)
# 테스트 코드
predictions, score