핸즈온 머신러닝 251쪽의 엑스트라 트리 설명에서 한참 헤매다가 원문을 보고 에러타가 아닌가 해서 질문 드립니다.
우선 250쪽 14번 각주에는 랜덤포레스트가 최적 특성 분할을 한다는 의미로 "splitter(무조건 "best")"라고 씌어 있는데, 이는 251쪽에 나오는 내용인 "랜덤 포레스트 알고리즘은 트리의 노드를 분할할 때 전체 특성 중에서 최선의 특성을 찾는 대신 문작위로 선택한 특성 후보 중에서 최적의 특성을 찾는 식으로 무작위성을 더 주입합니다.)와 모순됩니다. 바로 뒤에 나온 예제 코드도 "random"으로 되어 있습니다. 원문에도 랜덤포레스트는 splitter가 "random"으로 설정되는 것으로 나옵니다.
251쪽 엑스트라 트리를 설명하는 항목을 읽으면 더 헷갈립니다. 앞부분에서는 랜덤 포레스트가 사용하는 결정 트리의 splitter가 best인지 random인지 혼동이 오는 중에, 251쪽 제1문단에서는 다음과 같이 설명하고 있습니다. "트리를 더욱 무작위하게 만들기 위해.... 후보 특성을 사용해 무작위로 분할한 다음 그중에서 최상의 분할을 선택합니다." 이는 엑스트라 트리가 랜덤 포레스트와 다른 점이 엑스트라 트리는 특성을 무작위로 선택하는 점에 있다고 설명하는 것으로 읽기 쉬웠습니다. 하지만 원문을 확인한 결과 엑스트라 트리는 무작위 특성에 더해 무작위 임계값(이게 뭔지 잘 감은 안 오지만)을 사용한다는 것이었습니다.
그런데 블로그를 확인해보니,
"사실 엑스트라 트리의 베이스 트리인 ExtraTreeClassifier는 DecisionTreeClassifier를 상속한 것이며 splitter=’best’가 아니고 splitter=’random’인 것과 max_features=’auto’인 것을 제외하고는 동일합니다."
라고 되어 있어서 또 헷갈립니다. 제가 지적한 점이 맞는지, 엑스트라 트리가 랜덤 포레스트와 무엇이 다른지 설명해주시면 감사하겠습니다!!
(책과 깃허브, 블로그가 꼼꼼하게 되어 있어서 도움이 많이 되고 있습니다. 감사드립니다)