Driverless AI에서의 샘플링

데이터 샘플링

Driverless AI는 데이터 세트가 크거나(정확도 향상을 위해) 불균형이 심한 경우를 제외하고 기타 다른 유형의 데이터 샘플링을 수행하지 않습니다. 무엇이 큰 것으로 간주되는지는 정확도 설정 및 config.toml file 또는 상세 설정에서의 statistical_threshold_data_size_large 매개변수에 따라 달라집니다. 실험 설정 시, 실험 미리보기를 확인하면 데이터의 샘플링 여부를 확인할 수 있습니다. 아래 실험 미리보기에서 최종 모델의 경우에는 데이터가 5백만 행으로, 실험의 특색 진화 부분에 대해서는 10만 행으로 샘플링되어 있음을 확인할 수 있습니다.

Experiment settings summary

Driverless AI가 이러한 설정 및 데이터 크기를 기반으로 데이터를 샘플링하기로 결정하면 Driverless AI는 실험 시작 시 (및/또는 실험 전반에 걸쳐), 다음 유형의 샘플링을 수행합니다.

  • 회귀 분석 문제에 대한 무작위 샘플링

  • 분류 문제에 대한 계층화 샘플링

  • 대상 분포가 불균형화된 것으로 간주되고 불균형 샘플링 방법이 활성화된 이진 문제의 경우에 대한 불균형 샘플링 (imbalance_sampling_method"off" 로 설정되지 않음)

불균형 모델 샘플링 방법

불균형 샘플링 기술은 결과가 매우 불균형한 이진 분류 유스케이스(churn, 사기, 희귀 이벤트 모델링 등)에 도움이 될 수 있습니다.

Driverless AI에서 불균형 샘플링은 Imbalanced Model 이라고 불리는 특별한 사용자 정의 레시피를 통해 구현되는 선택적인 기술입니다. ImbalancedLightGBMModelImbalancedXGBoostGBMModel 을 사용할 수 있습니다. 두 모델 모두 모델링 속도를 높이고 두 클래스 간 결정 경계의 해상도를 향상하기 위해 fit() 방법 내에서 계층화된 샘플링(배깅)을 반복해서 수행합니다. 이러한 모델은 원본 데이터와 다른 이전 훈련 데이터 세트로 제공되기 때문에 예측() 방법에서 후처리의 일부분으로 수행되는 확률 보정을 필요로 합니다.

불균형 샘플링이 활성화되면 실험을 시작할 때 특성 진화 단계 또는 최종 모델 파이프라인에 대한 샘플링이 수행되지 않습니다. 그 대신 모델 피팅 중에 샘플링(대체 포함)이 수행되고, 모델은 기존 데이터보다 더 균형 잡힌 대상 클래스 분포로 표시됩니다. 샘플은 일반적으로 원본 데이터보다 훨씬 작기 때문에 이러한 프로세스의 반복이 가능하며, 각 내부 모델의 예측을 평균화하여 정확도(배깅)를 개선할 수 있습니다. 가방 수는 자동으로 결정되지만, 이 값은 상세 설정에서도 지정이 가능합니다( imbalance_sampling_number_of_bags=-1 은 자동을 의미함). "over_under_sampling" 의 경우 각각의 가방은 소수 클래스 및 다수 클래스 사이의 균형이 서로 미세하게 다를 수 있습니다.

불균형 샘플링에 대한 여러 가지 설정이 있습니다.

  • 비활성화(imbalance_sampling_method="off", 기본값)

  • 자동 (imbalance_sampling_method="auto"). 아래 두 가지 방법의 조합.

  • 소수와 다수 클래스 모두를 언더 및 오버 샘플링하여 각각의 샘플링된 가방에서 대략적인 클래스 밸런스에 도달합니다(imbalance_sampling_method="over_under_sampling"). 원본 데이터의 불균형이 500:10000일 경우, 이 방법은 첫 번째 가방에 대해 1000:1500개의 샘플, 두 번째 가방에 대해서는 500:400개의 샘플의 샘플링이 가능합니다.

  • 다수 클래스의 언더 샘플링을 통해, 각각의 샘플링된 가방에서 정확한 클래스 균형에 도달합니다(imbalance_sampling_method="under_sampling"). 동일한 예제의 불균형 비율에 대해서는 가방당 500:500의 샘플을 생성합니다. 그 후, 각 가방은 교체를 통해 각 클래스의 500개 행을 샘플링하기 때문에 각 가방은 여전히 ​​다릅니다.

불균형의 양은 실험에 불균형 모델이 얼마나 공격적으로 사용되는지를 통제합니다(imbalance_sampling_method is not "off" 인 경우).

  • 불균형은 기본적으로 다수 클래스가 소수 클래스보다 5배 더 많은 경우로 정의됩니다(imbalance_ratio_sampling_threshold=5, 구성 가능). 이 경우 불균형 모델은 실험이 선택할 수 있는 모델 목록에 추가됩니다.

  • 과도한 불균형은 기본적으로 다수 클래스가 소수 클래스보다 25배 더 많은 경우로 정의됩니다(heavy_imbalance_ratio_sampling_threshold=25, 구성 가능). 불균형이 심한 때는 불균형 모델이 독점적으로 사용됩니다.

참고:

  • 데이터는 불균형 샘플링을 사용할 수 있을 정도로 충분히 커야 합니다. Imbalance_sampling_threshold_min_rows_original 은 기본적으로 100,000개 행으로 설정됩니다.

  • imbalance_sampling_number_of_bags=-1 (자동) 및 imbalance_sampling_method="auto" 인 경우, 가방의 수는 실험의 accuracy 설정과 함께 모든 가방의 총 크기에 의해 자동으로 결정되고 imbalance_sampling_max_multiple_data_size 에 의해 통제되며 이것의 기본값은 1 입니다. 따라서 모든 가방은 기본적으로 기존 데이터의 1배보다 크지 않습니다. 불균형이 1:19인 경우, 각 균형 1:1 샘플은 데이터의 10%의 크기이기 때문에 해당 한도에 도달하기 위해서는 이러한 1:1 가방(또는 해당 균형이 다르거나 약간 무작위인 경우 대략 10개)이 최대 10개가 필요합니다. 특성 진화에는 여전히 약간의 비용이 소요되며, 속도가 많이 느려질 수 있습니다. 이것이 특성 진화에 대한 기타 제한 3(기본값)이 존재하는 이유입니다. 필요에 따라 자유롭게 조정하십시오.

  • imbalance_sampling_number_of_bags=-1 (자동) 및 imbalance_sampling_method="over_under_sampling" 또는 "under_sampling" 인 경우 가방의 수는 실험의 accuracy 설정(accuracy 7은 7개의 가방 사용)과 동일합니다.

  • 가방의 수에 대한 상한치는 기능 진화(imbalance_sampling_max_number_of_bags_feature_evolution) 및 (imbalance_sampling_max_number_of_bags) 에 의해 설정된 글로벌(즉, 최종 모델)에 대해 별도로 지정되며, 둘 다 엄격하게 적용됩니다.

  • 기본값 imbalance_sampling_target_minority_fraction=-1 (0.5로 설정한 것과 동일)을 통해 대상 클래스 분포의 균형을 맞추는 대신, 소수 클래스의 목표 비율을 제어할 수 있습니다. 따라서 데이터가 1 ​:1000 불균형으로 시작하고, 1:9 불균형으로 모델링하려면 imbalance_sampling_target_minority_fraction=0.1 을 지정합니다.

  • 모든 모델에 대해 가방의 수를 15개로 강제 지정하려면 imbalance_sampling_number_of_bags=imbalance_sampling_max_number_of_bags_feature_evolution=imbalance_sampling_max_number_of_bags=15imbalance_sampling_method 를 기본 설정에 따라 《over_under_sampling》`` 또는 under_sampling 으로 설정하십시오.

  • 기본적으로 Driverless AI는 불균형 비율(다수 대 소수)이 imbalance_ratio_notification_threshold 에 의해 통제되는 2보다 큰 때, 이를 사용자에게 알립니다.

  • 상기에서 언급된 각각의 매개변수는 config.toml 파일에 자세히 설명되어 있으며, 또한 상세 옵션(마우스 커서를 위에 놓을 경우)에도 표시되며 각각의 실제 불균형 모델은 실험 로그에 해당 매개변수를 표시합니다.

요약:

Driverless AI에는 불균형 샘플링을 제어할 수 있는 ​​많은 옵션이 있습니다. 대부분의 경우, imbalance_sampling_method="auto" 를 설정하고 불균형 샘플링 기술 imbalance_sampling_method="off" 이 없는 실험 및 결과를 비교하는 것만으로도 충분합니다. 그러나 대부분의 경우 불균형 모델은 일반 《full》 모델보다 성능이 떨어집니다(특히 다수의 클래스 예제가 결과에 중요하기 때문에, 샘플링이 손상될 수 있는 경우). 하지만, 데이터 세트가 매우 크고 불균형이 심한 경우에는 불균형 샘플링 기술을 사용하는 것이 결코 나쁜 생각은 아닙니다.