지난 달에 XGBoost 1.6 버전이 릴리스되었습니다. 무엇보다도 이번에 범주형 변수에 대한 지원이 확대된 것이 눈에 띱니다. 1.5버전에서 'gpu_hist'
만 범주형 변수를 지원했는데 1.6 버전에서는 'hist'
, 'approx'
에서도 범주형 변수를 지원합니다. 또 LightGBM처럼 원-핫 인코딩을 위한 범주 개수의 임곗값을 지정하는 max_cat_to_onehot
매개변수가 추가되었습니다. 기본값은 4입니다.
또한 다중 출력 모델을 지원하고, 'approx'
트리 메서드를 'hist'
를 기반으로 재작성했으며, 모델 저장을 위해 UBJSON 포맷을 지원합니다. 이외에도 많은 기능이 추가, 개선되었습니다. 자세한 내용은 XGboost 릴리스 노트를 참고하세요.

<XGBoost와 사이킷런을 활용한 그레이디언트 부스팅>의 깃허브 코드는 사이킷런 1.1과 XGBoost 1.6에서 모두 테스트되었습니다.
다음은 두 라이브러리의 버전 변경으로 인해 수정할 내용입니다.
- (노트: 2022년 5월 현재 코랩의 파이썬 버전은 3.7.x로 사이킷런 1.0.x만 설치됩니다. 코랩을 사용하는 경우 이 항목의 수정 사항을 무시하세요) 사이킷런 1.1 버전에 따른 변경 사항
- (p95, p96)
DecisionTreeClassifier
와DecisionTreeRegressor
,ExtraTreeClassifier
,ExtraTreeRegressor
,RandomForestClassifier
,RandomForestRegressor
,ExtraTreesClassifier
,ExtraTreesRegressor
의max_features
매개변수 중'auto'
가'sqrt'
와 동일합니다. 1.3 버전에서'auto'
가 삭제된다는 deprecated 경고가 발생하므로'auto'
를'sqrt'
로 변경합니다.
(p95) 위에서 9번째 줄, (p96) 위에서 3번째 줄, (p119) 아래에서 6번째 줄, (p120) 위에서 7번째 줄과 아래에서 9번째 줄, (p121) 위에서 4번째 줄과 아래에서 12번째 줄.
- (p95, p96)
- XGBoost 1.6 버전에 따른 변경 사항
- 1.6 버전에서
use_label_encoder
매개변수 기본값이True
에서False
로 변경되었습니다. 따라서 타깃 레이블을 0부터 인코딩해야 합니다.
(p149) 위에서 13번째 줄에서y = df.iloc[:,0]
을y = df.iloc[:,0] - 1
로 수정합니다.
(p221) 위에서 3번째 줄에서y = df.iloc[:,0]
을y = df.iloc[:,0] - 1
로 수정합니다.
(p232) 위에서 8번째 줄에서 “recall_score()
함수를 호출하려면y_test
,y_pred
와 함께pos_label=2
로 지정해야 합니다”를 “recall_score()
함수를 호출하려면y_test
와y_pred
를 전달해야 합니다”로 수정합니다. 그 아래recall_score()
함수 호출에서pos_label=2
를 삭제합니다.
(p233) 아래에서 7번째 줄에서y = df.iloc[:,0]
을y = df.iloc[:,0] - 1
로 수정합니다. 아래에서 1번째 줄에서pos_label=2
를 삭제합니다.
(p237) 위에서 2번째 줄에서df_train[df_train['LABEL']==2].values
를df_train[df_train['LABEL']==1].values
로 수정합니다. 아래에서 1번째 줄에서pos_label=2
를 삭제합니다. - (p352) 1.6 버전에서 범주형 변수에 대한 지원이 추가되었습니다. 두 번째 문단 끝에 “1.6버전에서는
'approx'
와'hist'
에서도 범주형 변수를 지원합니다.”를 추가합니다.
- 1.6 버전에서