문제

자, 여기 내 문제와 유사한 문제가 있습니다 (아래의 실제 문제에 대해 자세히 설명하지만이 비유는 이해하기가 더 쉽다고 생각합니다).

나는 1,001 개의 던지기마다 1 (무작위로) 만 올라가는 이상한 양면 동전을 가지고 있습니다 (나머지는 꼬리입니다). 다시 말해, 내가 볼 때마다 1,000 개의 꼬리마다 머리가 1 개가있을 것입니다.

나는 1,000 개의 꼬리마다 1 만 눈에 띄는 독특한 질병이 있지만 모든 머리를 발견하므로 머리 나 꼬리를 알아 차리는 비율은 0.5 인 것으로 보입니다. 물론, 나는이 질병과 그 효과를 알고 있으므로 보상 할 수 있습니다.

누군가가 이제 나에게 새로운 동전을 주었고, 나는 머리를 알아 차리는 비율이 이제 0.6이라는 것을 알았습니다. 내 질병이 바뀌지 않았다는 점을 감안할 때 (여전히 1,000 대의 꼬리마다 1 명만 참조),이 새로운 동전이 생성하는 머리 대 꼬리의 실제 비율을 어떻게 계산합니까?


알겠습니다. 실제 문제는 무엇입니까? 글쎄, 나는 입력으로 구성된 많은 데이터와 1과 0의 출력이 있습니다. 입력이 주어진 예상 출력 (0에서 1 사이)을 예측하기 위해 감독 된 기계 학습 알고리즘을 가르치고 싶습니다. 문제는 1이 매우 드물다는 것입니다. 이는 고정밀 부유 포인트 수학에도 불구하고 반올림 오류에 매우 취약하기 때문에 내부 수학을 망칩니다.

따라서 대부분의 0 훈련 샘플의 대부분을 무작위로 생략하여 데이터를 정규화하여 1과 0의 비율이 거의 동일합니다. 물론 이것은 이제 머신 러닝 알고리즘의 출력이 확률을 예측하지 못한다는 것을 의미합니다. 0.001을 예측하는 대신 이제 0.5를 예측합니다.

머신 러닝 알고리즘의 출력을 원래 교육 세트 내의 확률로 다시 변환하는 방법이 필요합니다.

저자 노트 (2015-10-07) : 나중에이 기술은 일반적으로 "다운 샘플링"으로 알려져 있음을 발견했습니다.

도움이 되었습니까?

해결책

다음을 계산하고 있습니다

calculatedRatio = heads / (heads + tails / 1000)

그리고 당신은 필요합니다

realRatio = heads / (heads + tails)

꼬리에 대한 두 방정식을 모두 해결하면 다음 방정식이 생성됩니다.

tails = 1000 / calculatedRatio - 1000
tails = 1 / realRatio - 1

두 가지를 결합하면 다음이 산출됩니다.

1000 / calculateRatio - 1000 = 1 / realRatio - 1

그리고 마지막으로 Realratio를 위해 해결합니다.

realRatio = 1 / (1000 / calculatedRatio - 999)

옳은 것 같습니다. CalculatedRatio 0.5는 Realratio 1/1001, 0.6 수율 3 / 2003을 생산합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top