Platt의 스케일링을 사용하는 이유는 무엇입니까?


17

과도하게 샘플링 된 데이터를 사용하여 SVM 또는 의사 결정 트리의 신뢰도를 매핑하는 등지도 학습의 확률로 신뢰 수준을 보정하려면 한 가지 방법은 Platt의 스케일링을 사용하는 것입니다 (예 : 부스팅에서 교정 확률 확보 ).

기본적으로 로지스틱 회귀를 사용하여 를 로 매핑 합니다. 종속 변수는 실제 레이블이고 예측 변수는 보정되지 않은 모델의 신뢰도입니다. 내가 이해하지 못하는 것은 1 또는 0 이외의 대상 변수를 사용하는 것입니다.이 메소드는 새로운 "라벨"의 생성을 요구합니다.[;][0;1]

시그 모이 드 트레인 세트에 과적 합을 피하기 위해 샘플 외부 모델이 사용됩니다. 이 경우 긍정적 예 및 각 훈련 예를 들어 기차 세트 네거티브 예, 플랫 보정 사용 목표치 및 (대신 1과 0을 각각), N+Ny+y

y+=N++1N++2;y=1N+2

내가 이해하지 못하는 것은이 새로운 목표가 어떻게 유용한 지입니다. 로지스틱 회귀 분석은 종속 변수를 이진 레이블로 취급하지 않습니까 (어떤 레이블이 제공되는지에 관계없이)?

최신 정보:

SAS에서 종속 항목을 에서 다른 것으로 변경하면 (을 사용하여 ) 동일한 모델로 되돌아 갔다는 것을 알았습니다 . 아마도 내 오류 또는 SAS의 다양성이 부족할 수 있습니다. R에서 모델을 변경할 수있었습니다. 예를 들어 :1/0PROC GENMOD

data(ToothGrowth) 
attach(ToothGrowth) 

  # 1/0 coding 
dep          <- ifelse(supp == "VC", 1, 0) 
OneZeroModel <- glm(dep~len, family=binomial) 
OneZeroModel 
predict(OneZeroModel) 

  # Platt coding 
dep2           <- ifelse(supp == "VC", 31/32, 1/32) 
plattCodeModel <- glm(dep2~len, family=binomial) 
plattCodeModel 
predict(plattCodeModel) 

compare        <- cbind(predict(OneZeroModel), predict(plattCodeModel)) 

plot(predict(OneZeroModel), predict(plattCodeModel))

답변:


13

로지스틱 회귀wikipedia 페이지 를 확인하는 것이 좋습니다 . 이항 종속 변수 로지스틱 회귀 분석의 경우 예측 변수를 종속 변수의 발생 확률에 매핑합니다. 변환이 없으면 모형 학습에 사용 된 확률은 1 (훈련 세트에서 y가 양수인 경우) 또는 0 (y가 음수 인 경우)입니다.

따라서 피팅 할 때 양수 클래스의 경우 절대 값 1을 사용하고 음수 클래스의 경우 0을 사용하는 대신 (여기서 는 SVM의 보정되지 않은 출력입니다) )에서 Platt는 언급 된 변형을 사용하여 반대 레이블이 약간의 확률로 표시되도록 제안합니다. 이러한 방식으로 일부 정규화가 도입되었습니다. 데이터 세트의 크기가 무한대에 도달하면 는 1이되고 는 0이됩니다. 자세한 내용 은 Platt 원본을 참조하십시오 .pi=1(1+exp(Afi+B))fiy+y


답변 주셔서 감사합니다! SAS를 처음 사용했으며 다른 응답 변수를 얻을 수 없었습니다. 나는 R로 다음을 예로 들어 정수 응답 변수가 아니라는 경고가 발행되지만 결과는 다른 모델에 적합하다는 것을 알 수 있습니다.
B_Miner

data (ToothGrowth) 연결 (ToothGrowth) # 1 / 0 코딩 깊이 <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, family = binomial) OneZeroModel predict (OneZeroModel) #Platt coding dep2 <-ifelse (supp == "VC", 31 / 32,1 / 32) plattCodeModel <-glm (dep2 ~ len, family = binomial) plattCodeModel predict (plattCodeModel) 비교 <-cbind (predict (OneZeroModel), predict ( plattCodeModel)) plot (predict (OneZeroModel), predict (plattCodeModel))
B_Miner

@ user2040 : 1. 예 ... 질문이 있습니까, 아니면 그냥 말입니까 :)? 2. 질문에 코드를 추가하지 않는 이유는 무엇입니까? 형식이 끔찍하지 않습니다.
steffen

2

내가 유용하다고 것을 오버 피팅 피하는 또 다른 방법은 휴가 아웃 아웃 SVM의 교차 검증 출력을 효율적으로 사용하여 근사 할 수 있습니다에 대한 단 변량 로지스틱 회귀 모델에 맞게하는 것입니다 스팬 바인딩을 .

그러나 클래스 멤버쉽의 확률을 추정하는 분류기를 원한다면 커널 로지스틱 회귀를 사용하는 것이 좋습니다. SVM의 출력은 개별 분류를 위해 설계되었으며 p = 0.5 윤곽선에서 떨어진 확률을 정확하게 추정하는 데 필요한 정보를 반드시 포함 할 필요는 없습니다.

커널 기반 확률 론적 분류기를 원할 경우 가우시안 프로세스 분류 기가 또 다른 좋은 옵션입니다.

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