최근에 잘 수신 된 질문에서 팀은 언제 머신 러닝에서 불균형 데이터가 실제로 문제 가 되는지 묻습니다 . 문제의 전제는 수업 균형 과 불균형 수업의 문제에 대해 많은 머신 러닝 문헌이 있다는 것입니다 . 아이디어는 긍정적 클래스와 부정적인 클래스 사이의 불균형이있는 데이터 세트가 일부 기계 학습 분류 (여기서는 확률 모델 포함) 알고리즘에 문제를 유발하고 데이터 세트를 “균형화”하여 완벽한 50/50을 복원하는 방법을 찾아야한다는 것입니다 긍정적 클래스와 부정적인 클래스로 나뉩니다.
공감 된 답변의 일반적인 의미는 “적어도 모델링에 대해 신중하지 않다”는 것입니다. 헨리 엘 (Henry L.)은 답변에 대한 찬성 의견에서 다음과 같이 말합니다.
[…] 불균형 데이터를 사용하는 데에는 저수준 문제가 없습니다. 내 경험상 “불균형 데이터 피하기”에 대한 조언은 알고리즘에 따라 다르거 나 상속 된 지혜입니다. 저는 일반적으로 불균형 데이터가 잘 지정된 모델에 개념적 문제를 일으키지 않는다는 AdamO에 동의합니다.
AdamO는 클래스 균형을 가진 “문제”는 실제로 클래스 희귀 성 중 하나라고 주장합니다.
따라서 적어도 회귀에서는 (그러나 모든 상황에서 의심되는) 불균형 데이터의 유일한 문제는 효과적으로 작은 표본 크기를 갖는 것입니다. 드문 클래스의 인원수에 적합한 방법이 있다면, 회원 비율이 불균형 인 경우 아무런 문제가 없습니다.
이것이 실제 문제라면 , 데이터 세트의 균형을 맞추기위한 모든 리샘플링 방법의 목적은 무엇입니까 : 오버 샘플링, 언더 샘플링, SMOTE 등? 암시 적으로 작은 샘플 크기를 갖는 문제를 해결하지 못하므로 아무 것도 정보를 만들 수 없습니다!
답변
일부 표본 추출 기법은 편향 (인구 비율이 알려지고 다른 경우)을 조정하는 것이지만 불균형 계급 자체가 문제 자체가 아니라는 개념에 동의합니다. 처리 성능이 중요한 이유 중 하나입니다. 예를 들어 대상 클래스가 1 : 100000의 극단적 인 경우 인 경우 모델링 데이터 세트가 방대하고 계산이 어려울 수 있습니다. 어떤 전략을 사용하든 샘플링은 전체 데이터 세트 크기를 줄이기 위해 항상 일부 데이터를 버립니다. 나는 모든 다른 샘플링 전략의 차이점은 예측 가능성의 손실을 희생하지 않고 어떤 데이터를 버릴 지의 영리함이라고 생각합니다.
답변
이러한 방법으로 해결하려는 문제는 소수 계층이 비용 함수에 미치는 영향을 증가시키는 것입니다. 이것은 algos가 전체 데이터 세트에 잘 맞는 다음 대다수에 적응하려고하기 때문입니다. 다른 접근법은 클래스 가중치를 사용하는 것이며, 대부분의 경우이 어포 치는 더 나은 결과를 제공합니다. 언더 샘플링 또는 성능 손실로 인한 정보 손실과 오버 샘플링으로 인한 노이즈 도입이 없기 때문입니다.
답변
좀 더 극단적 인 예를 드리겠습니다. 99 개의 데이터 포인트가 양수로 표시되고 하나만 음수로 표시되는 데이터 세트가있는 경우를 고려하십시오. 훈련하는 동안 모델은 모든 것을 긍정적으로 분류하면 결국 사라질 것임을 깨달을 것입니다. 이를 해결하는 한 가지 방법은 표현되지 않은 클래스를 오버 샘플링하고 다른 방법은 표현 된 클래스를 언더 샘플링하는 것입니다. 예를 들어, 70 개의 양수 및 30 개의 음수 레이블의 데이터 세트에서 교체하지 않고 양수 레이블을 교체 및 양수 레이블로 샘플링하여 모델이 훈련 중에 더 많은 음수 레이블을 보게됩니다. 이런 식으로, 내 모델이 모든 것을 긍정적으로 분류하려고하면 다른 방법보다 더 큰 손실을 입게됩니다.
샘플링과 관련이없는 또 하나의 접근 방식은 소수 레이블을 사용하여 데이터 포인트에 더 높은 가중치를 부여하도록 비용 함수를 조정하는 것입니다. 예를 들어 레이블 중 0과 비교하여 1이 과도하게 표현 된 데이터 집합에서 NLL 손실을 사용하는 경우 손실 함수를 다음과 같이 조정할 수 있습니다.
L(xi~,yi)=−α(yi)ln(xi~)−β(1−yi)ln(1−xi~)
β>α
β−α
답변
언밸런스 드 데이터는 머신 러닝에서 문제가되지 않는다는 전제에 동의하지 않습니다. 아마도 회귀 분석에서는 그렇지 않지만 확실히 분류에 있습니다.
불균형 데이터는 클래스 불균형 설정에서 알고리즘의 성능 저하 (내가 생각하는 연구는 특별히 분류 기준)로 인해 머신 러닝 응용 프로그램과 관련이 있습니다.
클래스 A ‘대’클래스 B ‘의 25 : 1 비율의 훈련 예제로 간단한 이진 분류 문제를 생각해보십시오. 연구에 따르면 클래스 B의 분류와 관련된 정확도는 훈련 데이터의 비율이 감소하기 때문에 단순히 타격을받습니다. 교육 예제 수가 적을수록 분류 기가 해당 데이터에 대한 교육을 더 잘 수행 할 수 없습니다. 주석가 중 한 사람이 말했듯이 아무것도 아무것도 만들 수 없습니다. 내가 본 논문에서 멀티 클래스 분류 문제에서 소수 클래스의 정확성에 큰 영향을 미치기 시작하려면 10 : 1의 비율에 도달해야합니다. 아마도 내가 본 것과 다른 문헌을 읽는 사람들은 다른 의견을 가지고있을 것입니다.
제안 된 솔루션은 다음과 같습니다. 소수 클래스 오버 샘플링, 다수 클래스 언더 샘플링 또는 소수 클래스에서 SMOTE 사용. 예, 소수 클래스에 대한 합성 데이터 생성에 들어 가지 않는 한 (간단한 방법은 아님) 실제로는 아무 데서나 데이터를 생성 할 수 없습니다 (SMOTE 정렬 방식이지만 정확히는 아닙니다). MixUp 등과 같은 다른 기술은 잠재적 으로이 개념에 속하지만 클래스 불균형 솔루션보다 더 규칙적이라고 생각합니다. 내가 읽은 논문에서 오버 샘플링> SMOTE> 언더 샘플링.
기술에 관계없이 발생률에 영향을 줄 수있는 다수 및 소수 클래스 간의 관계를 변경하고 있습니다. 다시 말해, 발생률이 10 분의 1이고 등급 분류 기가 1 : 1 인 초 희귀 뇌 질환 X를 탐지하기 위해 분류기를 작성하는 경우 더 많은 오 탐지로 더 민감하고 덜 구체적 일 수 있습니다. . 그러한 사건과 중재인을 나중에 발견하는 것이 중요하다면 괜찮습니다. 그렇지 않다면, 당신은 많은 다른 사람들의 시간과 돈을 낭비했습니다. 이 문제는 결국 해결해야합니다.
따라서 질문에 대답하려면 다음을 수행하십시오.
tl / dr : 오버 / 언더 샘플링 및 SMOTE (및 합성 데이터)와 같은 클래스 밸런싱 작업은 불균형 자체로 인해 발생하는 알고리즘의 고유 성능 저하를 해결함으로써 머신 러닝 알고리즘 (분류기) 성능을 향상시키기 위해 존재합니다 .