혼자 공부하는 머신러닝 + 딥러닝 05-1 확인문제

손지호·2023년 8월 4일
0

1. 다음 중 결정 트리의 불순도에 대해 옳게 설명한 것을 고르세요.

① 지니 불순도는 부모 노드의 불순도와 자식 노드의 불순도의 차이로 계산합니다.
② 지니 불순도는 클래스의 비율을 제곱하여 모두 더한 다음 1에서 뺍니다.
③ 엔트로피 불순도는 1에서 가장 큰 클래스 비율을 빼서 계산합니다.
④ 엔트로피 불순도는 클래스 비율과 클래스 비율에 밑이 2인 로그를 적용한 값을 곱해서 모두 더한 후 음수로 바꾸어 계산합니다.

2. 결정 트리에서 계산한 특성 중요도가 저장되어 있는 속성은 무엇인가요?

① importantvariables
② variableimportances
③ importantfeatures
④ featureimportances

3. 앞서 결정 트리 예제에서 max_depth를 3으로 지정하여 좌우가 대칭인 트리를 만들었습니다. 사이킷런의 결정 트리 클래스가 제공하는 매개변수 중 min_impurity_decrease를 사용해 가지치기를 해 보겠습니다. 어떤 노드의 정보 이득 x (노드의 샘플 수) / (전체 샘플 수) 값이 이 매개변수보다 작으면 더 이상 분할하지 않습니다. 이 매개변수의 값을 0.0005로 지정하고 결정 트리를 만들어 보세요. 좌우가 균일하지 않은 트리가 만들어지나요? 테스트 세트의 성능은 어떤가요?

dt = DecisionTreeClassifier(, random_state=42) # 코드를 완성해 보세요.
dt.fit(train_input, train_target)
print(dt.score(train_input, train_target))
print(dt.score(test_input, test_target))

plt.figure(figsize=(20,15))
plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH'])
plt.show()







<풀이>

1. 답 ②,④

지니 불순도 계산식 : 1 - (양성 클래스 비율^2 + 음성 클래스 비율^2)
엔트로피 불순도 계산식 : -음성 클래스 비율 x log_2(음성 클래스 비율) - 양성 클래스 비율 x log_2(양성 클래스 비율)


2. 답 ④ 결정 트리가 계산한 특성 중요도는 모델 객체의 featureimportances 속성에 저장되어 있다.

3.

dt = DecisionTreeClassifier("min_impurity_decrease=0.0005", random_state=42)
dt.fit(train_input, train_target)

print(dt.score(train_input, train_target))
print(dt.score(test_input, test_target))
>>> 0.8874350586877044
	0.8615384615384616
plt.figure(figsize=(20,15))
plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH'])
plt.show()

profile
초보 중의 초보. 열심히 하고자 하는 햄스터!

1개의 댓글

comment-user-thumbnail
2023년 8월 4일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기