계층화 된 샘플링이 필요합니까 (랜덤 포레스트, Python)?


14

파이썬을 사용하여 불균형 데이터 세트에서 임의의 포리스트 모델을 실행합니다 (대상 변수는 이진 클래스였습니다). 교육 및 테스트 데이터 세트를 분할 할 때 계층화 된 샘플링을 사용할지 (표시된 코드와 같은) 사용하지 않을지 고민했습니다. 지금까지 프로젝트에서 계층화 된 사례가 더 높은 모델 성능으로 이어질 것으로 관찰했습니다. 그러나 현재 데이터 세트와 대상 클래스의 분포가 크게 다를 수있는 새로운 사례를 예측하기 위해 모델을 사용할 것이라고 생각합니다. 그래서 나는이 구속을 풀고 층화되지 않은 스플릿을 사용하는 경향이있었습니다. 누구 든지이 점을 분명히하기 위해 조언을 할 수 있습니까?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)

답변:


13

각 클래스에 속하는 값의 수가 불균형 인 경우 계층화 된 샘플링을 사용하는 것이 좋습니다. 당신은 기본적으로 클래스 비율이있는 전체 데이터 세트의와 동일하도록 훈련 및 테스트 세트를 취할 모델을 요구하고 옳은 일을 할. 수업이 균형을 잡으면 셔플 (여기서는 계층화가 필요하지 않음)이 기본적으로 공정한 테스트와 열차 분할을 보장 할 수 있습니다.

이제 모델은 숫자가 적은 클래스 (숫자가 적은 클래스)를 예측할 수있는 능력을 갖추거나 최소한 갖추어야합니다. 이것이 바로 정확도를 계산하는 대신 감도 및 특이성과 같은 다른 메트릭스를 제공 한 이유 입니다. 이것들을 지켜 봐라. 이들은 보호자이다.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.