SMOTE

Synthetic Minority Oversampling을 사용하여 데이터 집합에서 적게 발생하는 예제 수 증가

범주: 데이터 변환/조작

참고

적용 대상: Machine Learning Studio (클래식)

이 콘텐츠는 Studio (클래식)에만 해당 됩니다. Azure Machine Learning 디자이너에는 비슷한 끌어서 놓기 모듈이 추가 되었습니다. 이 문서에서는 두 가지 버전을 비교 하는방법에 대해 자세히 알아보세요.

모듈 개요

이 문서에서는 Azure Machine Learning Studio (클래식)에서 SMOTE 모듈을 사용 하 여 기계 학습에 사용 되는 데이터 집합에서 사용 되는 항목의 수를 늘리는 방법을 설명 합니다. SMOTE는 단순히 기존 사례를 복제 하는 것 보다 드물게 발생 하는 사례 수를 늘릴 수 있는 좋은 방법입니다.

SMOTE 모듈을 불균형 된 데이터 집합에 연결 합니다. 데이터 집합이 불균형한 이유는 여러 가지가 있습니다. 대상으로 지정한 범주가 모집합에서 매우 드물거나, 단순히 데이터를 수집하기가 어려울 수 있습니다. 일반적으로 분석 하려는 클래스가 미달 사용 되는 경우 SMOTE를 사용 합니다.

이 모듈에서는 지정한 백분율에 따라 원래 샘플이 포함된 데이터 집합과 추가 가상 소수 샘플 수를 반환합니다.

SMOTE에 대 한 자세한 정보

SMOTE가상의 소주주 과다 샘플링 기법 을 의미 합니다. 데이터 집합의 사례 수를 균형 있는 방식으로 늘리는 통계 기술입니다. 모듈은 입력으로 제공 하는 기존 소주주 사례에서 새 인스턴스를 생성 하는 방식으로 작동 합니다. 이 SMOTE 구현은 대다수 사례 수를 변경 하지 않습니다.

새 인스턴스는 기존의 소주주 케이스의 복사본 일 뿐입니다. 대신 알고리즘은 각 대상 클래스와 가장 인접 한 환경에 대 한 기능 공간의 샘플을 사용 하 고 대상 사례의 기능을 이웃 기능과 결합 하는 새로운 예제를 생성 합니다. 이 방법을 사용하면 각 클래스에 사용할 수 있는 기능이 증가하고 샘플이 더 일반적이게 됩니다.

SMOTE는 전체 데이터 집합을 입력으로 사용 하지만, 소주주 사례의 백분율이 늘어납니다. 예를 들어 사례의 1%가 대상 값 A (소수 클래스)를 가지 며 사례의 99%가 값 B를 갖는 불균형 분산 된 데이터 집합이 있다고 가정 합니다. 소수 사례의 비율을 이전 백분율의 두 배 이상으로 늘리려면 모듈의 속성에서 SMOTE 비율 에 대해 200을 입력 합니다.

예제

적은 수의 데이터 집합에서 SMOTE 를 사용하여 작동 방식을 확인하는 것이 좋습니다. 다음 예제에서는 Azure Machine Learning Studio (클래식)에서 사용할 수 있는 블러드 기부 데이터 집합을 사용 합니다.

데이터 집합을 실험에 추가 하 고 데이터 집합의 출력에서 시각화 를 클릭 하면 데이터 집합의 748 행 또는 사례 중 570 사례 (76%)가 있는 것을 볼 수 있습니다. 클래스 0 및 178 사례 (24%) 클래스 1. 그다지 균형이 맞지 않는 것은 아니지만 클래스 1은 피를 기증 한 사용자를 나타내므로 이러한 행에는 모델링할 기능 공간이 포함 됩니다.

사례 수를 늘리려면 다음과 같이 100의 배수를 사용 하 여 SMOTE 비율 값을 설정할 수 있습니다.

클래스 0 클래스 1 total
원래 데이터 집합

SMOTE 백분율 = 에 해당 합니다. 0)
570

76%
178

24%
748
SMOTE 백분율 = 100 570

62%
356

38%
926
SMOTE 백분율 = 200 570

52%
534

48%
1104
SMOTE 백분율 = 300 570

44%
712

56%
1282

경고

SMOTE를 사용하여 사례 수를 늘리더라도 더 정확한 모델이 생성되는 것은 아닙니다. 사례 추가가 모델에 미치는 영향을 보려면 다른 백분율, 다른 기능 집합 및 다른 수의 가장 인접한 사항을 사용하여 실험해 보아야 합니다.

SMOTE를 구성 하는 방법

  1. SMOTE 모듈을 실험에 추가 합니다. 데이터 변환 모듈의 조작 범주에서 모듈을 찾을 수 있습니다.

  2. 상승 시키려는 데이터 집합을 연결 합니다. 특정 열만 사용 하거나 일부를 제외 하 여 새 사례를 빌드하기 위한 기능 공간을 지정 하려면 데이터 집합의 열 선택 모듈을 사용 하 여 SMOTE 를 사용 하기 전에 사용할 열을 분리 합니다.

    그렇지 않으면 SMOTE 를 사용 하 여 새 사례를 만드는 것은 입력으로 제공 하는 모든 열을 기반으로 합니다.

  3. 레이블 또는 대상 클래스를 포함 하는 열이 해당으로 표시 되어 있는지 확인 합니다.

    레이블 열이 없으면 메타 데이터 편집 모듈을 사용 하 여 클래스 레이블이 포함 된 열을 선택 하 고 필드 드롭다운 목록에서 레이블 을 선택 합니다.

  4. SMOTE 모듈은 레이블 열에서 소주주 클래스를 자동으로 식별 한 다음, 해당 클래스에 대 한 모든 예제를 가져옵니다.

  5. SMOTE 비율 옵션에서 출력 데이터 집합에 있는 소수 사례의 대상 백분율을 나타내는 정수를 입력 합니다. 예를 들면 다음과 같습니다.

    • 0 (%)을 입력 합니다. SMOTE 모듈은 입력으로 제공한 것과 동일한 데이터 집합을 반환 하 여 새 소주주 케이스를 추가 합니다. 이 데이터 집합에서 클래스 비율은 변경 되지 않았습니다.

    • 100 (%)을 입력 합니다. SMOTE 모듈은 원래 데이터 집합에 있던 것과 동일한 수의 소주주 사례를 추가 하 여 새로운 소주주 사례를 생성 합니다. SMOTE는 대다수의 사례 수를 늘리지 않으므로 각 클래스의 대/소문자 비율이 변경 되었습니다.

    • 200 (%)을 입력 합니다. 모듈은 원래 데이터 집합에 비해 소주주 사례의 백분율을 두 배로 늘립니다. 이로 인해 전 처럼 두 번의 소주주 사례가 두 배가 되지 않습니다. 대신, 대다수 사례 수가 동일 하 게 유지 되 고, 필요한 백분율 값과 일치 하기 전까지 소주주 사례의 수가 증가 하는 방식으로 데이터 집합의 크기가 증가 합니다.

    참고

    SMOTE 백분율에 대해 100의 배수를 사용 합니다.

  6. 새 사례를 구축할 때 SMOTE 알고리즘이 사용 하는 기능 공간의 크기를 확인 하려면 가장 인접 한 이웃 수 옵션을 사용 합니다. 가장 인접한 항목 은 일부 대상 사례와 매우 비슷한 데이터 행(사례)입니다. 두 사례 사이의 거리는 가중치가 적용된 모든 기능의 벡터를 결합하여 측정됩니다.

    • 가장 인접 한 이웃 수를 늘려서 더 많은 사례에서 기능을 얻을 수 있습니다.
    • 가장 인접 한 이웃의 수를 낮게 유지 하면 원래 샘플의 기능과 매우 유사한 기능을 사용할 수 있습니다.
  7. 동일한 실험의 실행에 대해 동일한 데이터를 사용 하 여 동일한 결과를 확인 하려는 경우 임의 초기값 텍스트 상자에 값을 입력 합니다. 그렇지 않으면 실험을 배포할 때 모듈에서 프로세서 클록 값을 기준으로 임의 초기값을 생성 하 여 실행에 대해 약간 다른 결과를 발생 시킬 수 있습니다.

  8. 실험을 실행합니다.

    모듈의 출력은 원래 행을 포함 하는 데이터 집합과 소수 사례가 포함 된 몇 개의 추가 행을 포함 합니다.

추가 된 새 행을 파악 하려는 경우 SQL 변환 적용 또는 데이터 조인 모듈을 사용할 수 있습니다.

기술 정보

  • SMOTE 모듈을 사용 하는 모델을 게시할 때 예측 실험에서 SMOTE 를 제거 하 여 웹 서비스로 게시 합니다. 그 이유는 SMOTE가 학습 중 모델 개선을 위한 것이 고, 점수 매기기를 위한 것이 아닙니다. 게시 된 예측 실험에 SMOTE 모듈이 포함 되어 있으면 오류가 발생할 수 있습니다.

  • SMOTE을 적용 하기 전에 데이터를 수정 하기 위해 누락 된 값 정리 또는 기타 변환을 적용 하는 경우에는 종종 더 나은 결과를 얻을 수 있습니다.

  • 일부 연구원은 SMOTE가 텍스트 분류 또는 genomics 데이터 집합에 사용 되는 데이터와 같은 상위 차원 또는 스파스 데이터에 적용 되는지 조사 했습니다. 이 문서에서는 SMOTE을 적용할 때의 영향 및 이론적 유효성을 이해 하 고 있습니다. 이러한 경우에는 Blagus 및 Lusa: SMOTE에 대 한 높은 수준의 클래스-불균형 데이터를 위한 것입니다.

    SMOTE가 데이터 집합에서 유효 하지 않은 경우에는 과다 샘플링에 대 한 다양 한 방법을 사용 하 여 사용 하는 경우를 예로 들 수 있습니다. 이러한 방법으로는 클러스터, 모음 만들기 또는 적응형 부스트를 사용 하 여 학습자에 직접 도움을 주는 앙상블 기술 뿐만 아니라 소수의 사례를 수 있습니다.

예상 입력

Name Type 설명
샘플 데이터 테이블 샘플 데이터 집합

모듈 매개 변수

Name 범위 Type 기본값 설명
SMOTE 백분율 >= 0 정수 100 100의 배수인 과다 샘플링 정도입니다.
가장 인접한 항목 수 >= 1 정수 1 새로운 사례에 대한 기능을 그릴 가장 인접한 항목 수입니다.
무작위 초기값 모두 정수 0 난수 생성기의 초기값입니다.

출력

Name Type 설명
테이블 데이터 테이블 원본 샘플과 추가 개수의 가상 소수 클래스 샘플을 포함 하는 데이터 테이블 입니다. 새로운 샘플 수는 (smotePercent/100)*T입니다. 여기서 T는 소수 클래스 샘플의 수입니다.

참고 항목

샘플 및 분할
전체 모듈 목록