로지스틱 회귀 기반 모델의 정확도 측정


26

테스트 데이터 세트에 적용 할 훈련 된 로지스틱 회귀 모델이 있습니다. 종속 변수는 이진 (부울)입니다. 테스트 데이터 세트의 각 샘플에 대해 로지스틱 회귀 모델을 적용하여 종속 변수가 참일 확률을 %로 생성합니다. 그런 다음 acutal 값이 true인지 false인지 기록합니다. 선형 회귀 모델에서와 같이 또는 조정 된 그림 을 계산하려고합니다 .R 2R2R2

테스트 세트의 각 샘플에 대한 레코드는 다음과 같습니다.

prob_value_is_true         acutal_value
   .34                          0
   .45                          1
   .11                          0
   .84                          0
    ....                        ....          

모델의 정확성을 테스트하는 방법이 궁금합니다. 첫 번째 시도는 우발 사태 테이블을 사용하여 " prob_value_is_true0.80보다 크면 실제 값이 참이라고 생각합니다 "라고 말한 다음 올바른 분류와 잘못된 분류의 비율을 측정하는 것입니다. 그러나 나는 0.80을 경계로 평가하는 것처럼 느껴지기 때문에 모델 전체의 정확성과 모든 prob_value_is_true값 의 정확성이 아닙니다 .

그런 다음 각 prob_value_is_true 이산 값을 예를 들어 prob_value_is_true= 0.34 인 모든 샘플을보고 절단 값이 참인 샘플의 %를 측정하려고했습니다 (이 경우 샘플의 %가 그건 사실 = 34 %). 각 이산 값에서의 차이를 합산하여 모델 정확도 점수를 만들 수 있습니다 prob_value_is_true. 그러나 표본 크기는 특히 극단적 인 경우 (0 % 또는 100 %) 극한의 경우에 큰 관심사입니다. 따라서 평균값이 정확하지 않으므로 모델 정확도를 측정하는 데 적합하지 않습니다.

나는 충분한 표본 크기 (0-.25, .25-.50, .50-.75, .75-1.0)를 보장하기 위해 거대한 범위를 만들려고 시도했지만 실제 값의 %에 대한 "양호도"를 측정하는 방법 . prob_value_is_true0.25와 0.50 사이의 모든 샘플 의 평균 acutal_value이 0.45 라고 가정하십시오 . 그 범위에 있기 때문에 좋은가요? 37.5 % (범위의 중심)에 미치지 못해서 불량합니까?

그래서 나는 쉬운 질문이 될 것 같은 것에 갇혀 있으며 누군가가 나를 로지스틱 회귀 모델에 대한 정확성을 계산할 수있는 자원이나 방법을 가리킬 수 있기를 바라고 있습니다.


나는 범위 예 : (0-.25, .25-.50, .50-.75, .75-1.0)이 합리적이라고 생각합니다. 범위를 좁 히면 도움이 되겠습니까? 예 : 0-.03, .03-.06, .06-.09, ....., 즉 모든 .03. 이것은 데이터 포인트가 많은 지역에 유용 할 수 있습니다.

답변:


18

로지스틱 회귀의 유효성을 검사하는 데 주로 사용되는 측정 값은 ROC 곡선 의 AUC입니다 (1- 특이성에 대한 민감도 그림-필요한 경우 용어에 대해서만 Google). 본질적으로 이것은 임계 값의 전체 범위를 평가합니다.

단점 : 전체 범위의 임계 값을 평가하는 것은 당신이 원하는 것이 아닐 수도 있습니다. 이것은 (일반적으로) 매우 많은 수의 오탐 또는 오탐을 초래하는 임계 값을 포함하기 때문입니다. 이를 설명하는 AUC 버전 (부분 AUC)이 있으므로 문제가있는 경우이를 확인할 수 있습니다.


1
잠시 AUC를 제외하고 ROC 곡선의 구성이 이와 같다고 가정하면 정확합니까? prob_value_is_true의 각 이산 값에 대해 이산 값을 임계 값으로 사용하여 하나의 우발성 테이블을 작성하십시오. 그런 다음 각 우발 사태 테이블의 진 양성 비율과 거짓 양의 비율을 기록하십시오. 산점도에 모든 우발성 테이블의 비율을 표시하면 ROC 곡선이 표시됩니까? 그 소리가 맞습니까?
John Reed

나는 확률과 실제 값으로 임의의 값을 공급하는 직선 코드였습니다. AUC가 적합 모델에서 "곡선"의 편차를 다시 "선"또는 임의성으로 측정한다고 가정합니까?
John Reed

ROC와 관련하여 : 그렇습니다. 일부 변형이 있습니다 (더 매끄럽게하기; 선택한 임계 값 선택에 대한 예측 확률을 고려하여). (사용하는 소프트웨어 / 선택한 언어에 따라) 이미이를 제공하는 수많은 도구가 있습니다. Wrt AUC : ROC 곡선 아래의 실제 면적보다 크거나 작지 않습니다. 완벽한 랜덤 예측 변수가 아닌 ROC 곡선은 (0,0)에서 (1,1)까지의 직선이되어 AUC가 0.5입니다. AUC는하지만 (구글이나 위키피디아도 :-) 참조), 멋진 해석이있다
닉 Sabbe

8

임의 경계의 영향을 주로 반영하는 비율로 분류 된 비율에 대해 걱정해야합니다. 두 가지 조치를 권장합니다. 하나는 다른 사람들이 설명한 것처럼 index 또는 ROC 영역입니다. 이것은 ROC 곡선을 생각하는 것보다 간단한 해석을 가지고 있으며 순수한 예측 차별의 척도입니다. 둘째, 데이터의 비닝없이 연속적인 보정 곡선을 추정합니다. 독립 데이터 세트에서 예측을 평가하는 경우 특이 치 탐지를 끈 상태에서 예측 및 실제 Prob [Y = 1]의 관계를 추정 할 수 있습니다 . R 패키지 의 함수 는이 두 가지를 모두 수행합니다. 다른 기능들clowessval.probrmsrms 리샘플링을 사용하여 과적 합의 영향을 제거하는 내부 유효성 검사에서도 동일하게 적용됩니다.


6

데이터가 값 으로 그룹화 된 경우 모형 예측 값과 관련 신뢰 구간을 계산하고 관측 된 백분율이 해당 범위 내에 있는지 확인할 수 있습니다. 예를 들어, 당신은에서 10 명 관찰했다 에서 10 OBS를 에서 10 OBS를 , 다음 등, , , 등의 예측에 비교 될 수 비율을 얻을 것입니다. 모델이 완벽하더라도 OLS 회귀와 마찬가지로 일부 관측 된 백분율이 95 % CI 외부에서 바운스 될 것입니다. 데이터가 그룹화되지 않은 경우 범위에 따라 데이터를 비닝하여 고유 한 그룹을 구성 할 수 있습니다.x = 10 x = 20 x = 30 xxx=10x=20x=30mean(y[x==10]==1)mean(y[x==20]==1)x제안한대로 변수. 이는 빈의 선택에 따라 다르므로 모델을 탐색하는 방법으로 유용 할 수 있으므로 완전히 유효하지는 않습니다.

일반적으로 여기에 맡겨진 과제는 어렵습니다. 로지스틱 회귀를 사용하면 두 가지 다른 종류의 일을 처리하기 때문입니다. 모델의 예측은 잠재 변수이지만 관측 된 응답 변수 (잠재 변수에 의해 생성 된 것으로 추정 됨)는 그렇지 않습니다. 물론 사람들은 종종 예측 된 반응이 무엇인지 알고 싶어 할 것입니다. 이것은 삶이 불공평 한 경우 중 하나입니다.

결과를 예측하려면 최대화 할 대상을 결정해야합니다. 사례가 1 개이고 예측이 옳을 가능성이 가장 높은 경우 인 경우 예측해야합니다 . 반면에 전체 샘플 (또는 다른 그룹)에 대해 전체 정확도를 최대화 하려면 인 경우 예측해야합니다. . 예를 들어, 표본에서 모든 경우의 30 %가 1이라고 가정하고 인 경우 이지만 가 이 될 것으로 예측해야합니다.Y0.5 , Y = 1 개 , YP ( Y = 1 ) , Y = 0.31 , Y 1 < 0.5y=1y^.5y=1y^p(y=1)y^=.31y1<.5. 이것은 직관적이지 않으며 많은 사람들이 우연히 발견되지만이 알고리즘은 정확도를 극대화합니다.

모델에 얼마나 많은 정보가 있는지에 대한보다 포괄적 인 방법은 가능한 모든 임계 값 얼마나 정확한지에 대해 통합하는 것 입니다. 이것은 @Nick Sabbe가 논의한 모델의 ROC (수신기 동작 특성)의 곡선 아래 면적 (AUC)입니다. 로지스틱 회귀 분석 에는 가 없습니다 . 소위 '의사 '가 있지만 AUC (또는 일 치어 , 동의어)가 아마도이 문제에 대해 생각하는 가장 좋은 방법 일 것입니다. R 2 R 2 c(0,1)R2R2c


좋은 답변입니다! 따라서 모든 사례의 30 %가 1 인 예에서 특정 사례의 예측 확률 0.31은 다른 사례와 비교하여이 사례의 "순위"와 유사합니다 (1이 얼마나 가까운 지 (더 클수록))? 그리고이 특정 사례가 1 일 것으로 예상되는 확률로 보아서는 안됩니다.
mac

1
@JunchiGuo, 내가 당신을 따라 갈지 모르겠습니다. 수단이라는 것을 예측 확률 이다 . 예측 확률과 관련하여 관측치의 순위를 지정할 수 있지만 & 은 보다 높습니다 . 10.310.31.25y^i=.311.31.31.25
gung-Monica Monica 복원

3

임계 값을 설정할 수 있다고 생각하므로 (예 : 0.5) 확률이 해당 임계 값보다 크거나 같으면 예측 클래스는 1이되고 그렇지 않으면 0이됩니다. 그런 다음 다음과 같은 방법으로 정확도를 측정 할 수 있습니다.

confusion_matrix <- ftable(actual_value, predicted_value)
accuracy <- sum(diag(confusion_matrix))/number of events*100

확률이 데이터 (x)에 주어진 확률이고 모델을 사용할 때 클래스 값 (y)가 1과 같다는 것을 감안할 때, 항상 0.5보다 낮은 확률 값을 얻는 이유를 이해하지 못합니다. 실제 수업의 빈도는 어느 정도입니까 (actual_value)?


2

내 패키지를 살펴보고 싶을 수도 있습니다 softclassval(softclassval.r-forge.r-project.org에서 패키지 뒤에있는 아이디어에 대해 두 가지 구두 프레젠테이션을 보았습니다).

나는 약간 다른 문제, 즉 참고 문헌 (예 : 병리학 자)이 명확한 수업을 거부하는 경우에 그것을 썼다. 그러나 "일반"하드 클래스와 함께 사용할 수 있으며 원래 연속 예측을 강화하기위한 임계 값 정의를 피 하므로 0.8을 평가하지 않습니다.

그러나 ROC 또는 특이성 민감도 다이어그램과 함께 사용하는 것이 좋습니다. "나"방법이 이미 약간의 편차를 가할 경우 결과가 종종 나빠질 수 있습니다 (예 : 1 대신 0.9는 내 측정 값에 0.1 차이를줍니다) 0.9 미만의 모든 임계 값은이를 무시합니다. 실제로 나는 오히려 이점이라고 생각한다.이 감도가 적어도 작은 편차는 정확도, 감도, 리콜 등과 같은 "강화 된"측정에 대한 비판의 주요 포인트 중 하나이다.

또한, 평균 절대 오차 (MAE)와 근 평균 제곱 오차 RMSE를 비교하여 작은 편차가 많거나 심각하게 잘못 판단 된 샘플이 적은지 확인할 수 있습니다.


1

내 빠른 제안은 다음과 같습니다. 종속 변수가 이진수이므로 로지스틱 회귀 확률로 Bernoulli 분포를 따르는 것으로 가정 할 수 있습니다 .Pri=invlogit(a+bxi)

이제 다음과 같이 하나의 시뮬레이션을 설정하십시오. y.rep[i]Bernoulli(p[i])

그런 다음이 시뮬레이션을 100 번 실행하십시오. n 개의 행 (n은 주제의 수)과 k 개의 열 (이 경우 k = 100, 시뮬레이션 수)이있는 행렬이 있습니다. r 코드에서 :

for (j  in 1:100)
  mat.y.rep[,j] <- Bernoulli ( p) # p is a vector with a probability for each subject

이제 각 시뮬레이션에서 예측 된 것과 관찰 된 것의 차이를 계산합니다. 이 차이를 계산 한 후 각 행 (각 주제)에 대한 평균 양의 진 양성 및 위양성 계산하고 히스토그램을 플로팅하십시오. 또는 각 열 (모의)에 대해 둘 다 계산하십시오.

그것이 도움이되기를 바랍니다 ...


1

그러한 예측의 정확성을 추정하는 방법에는 여러 가지가 있으며 최적의 선택은 실제로 추정을 구현할 대상에 따라 다릅니다.

예를 들어 고가의 후속 연구를 위해 몇 개의 높은 점수 적중을 선택하려는 경우 높은 점수에서 정밀도를 최대화 할 수 있습니다. 반면에, 후속 연구가 저렴하다면 낮은 점수에서 리콜 (민감도)을 최대화 할 수 있습니다. 다른 방법 등을 비교하는 경우 ROC AUC가 적합 할 수 있습니다.

실용적인 측면에서 RROCR패키지에는 2 가지 유용한 기능이 있습니다.

pred.obj <- prediction(predictions, labels,...)
performance(pred.obj, measure, ...)

이러한 함수를 함께 사용하면 전역 스칼라 값 (예 : "auc" ) 및 리콜 정밀도 및 ROC 곡선 ( "prec" , "rec" , "tpr""fpr" 등)


1

"정확도"의 의미를 정의해야합니다. 알고 싶은 것은 입에 단어를 넣은 것에 대해 용서해주십시오. 모델이 훈련 데이터에 얼마나 잘 맞는지, 더 중요한 것은이 모델이 훈련 데이터가 아닌 샘플에 얼마나 "일반화"되는지입니다. ROC 곡선은 다양한 임계 값 값에 대한 정밀도와 리콜 간의 트레이드 오프를 분석하는 데 유용 할 수 있지만 도구 상자에 평균 제곱 오차 또는 Brier 점수를 추가하는 것이 좋습니다. 계산이 쉽고 훈련 데이터에 적용 할 때 기능 변경이 모델의 적합에 영향을 미치는지 즉시 알 수 있습니다. 이 경우 과적 합이 가능하기 때문에 여기서 작업이 완료되지 않습니다. 일반화 성능 또는 아직 보지 못한 데이터에 대한 성능을 평가하려면 훈련 샘플에 대한 성과를 충분히 볼 수 없습니다. 물론 모델은 물류에 대한 계수를 결정하는 데 사용한 값이기 때문에 모델에 적합합니다. 테스트 데이터 용 샘플을 따로 보관해야합니다. 이 세트의 MSE 성능은 Hoeffding 불평등에 따라 일반화 기대치를 설정해야합니다. 최대 일반화 오류는 모형의 피처 수와 검정 통계량 계산에 사용되는 샘플 수에 따라 다릅니다. 테스트 샘플을 위해 일부 트레이닝 샘플을 훔쳐 야합니다. 셔플하는 경우 10 배 교차 검증을 권장하고 훈련은 90 %, 테스트는 10 %를 선택한 다음 모든 측정을 측정, 반복 및 평균화하십시오. 물류에 대한 계수를 결정하는 데 사용한 값이기 때문입니다. 테스트 데이터 용 샘플을 따로 보관해야합니다. 이 세트의 MSE 성능은 Hoeffding 불평등에 따라 일반화 기대치를 설정해야합니다. 최대 일반화 오류는 모형의 피처 수와 검정 통계량 계산에 사용되는 샘플 수에 따라 다릅니다. 테스트 샘플을 위해 일부 트레이닝 샘플을 훔쳐 야합니다. 셔플하는 경우 10 배 교차 검증을 권장하고 훈련은 90 %, 테스트는 10 %를 선택한 다음 모든 측정을 측정, 반복 및 평균화하십시오. 물류에 대한 계수를 결정하는 데 사용한 값이기 때문입니다. 테스트 데이터 용 샘플을 따로 보관해야합니다. 이 세트의 MSE 성능은 Hoeffding 불평등에 따라 일반화 기대치를 설정해야합니다. 최대 일반화 오류는 모형의 피처 수와 검정 통계량 계산에 사용되는 샘플 수에 따라 다릅니다. 테스트 샘플을 위해 일부 트레이닝 샘플을 훔쳐 야합니다. 셔플하는 경우 10 배 교차 검증을 권장하고 훈련은 90 %, 테스트는 10 %를 선택한 다음 모든 측정을 측정, 반복 및 평균화하십시오. 이 세트의 MSE 성능은 Hoeffding 불평등에 따라 일반화 기대치를 설정해야합니다. 최대 일반화 오류는 모형의 피처 수와 검정 통계량 계산에 사용되는 샘플 수에 따라 다릅니다. 테스트 샘플을 위해 일부 트레이닝 샘플을 훔쳐 야합니다. 셔플하는 경우 10 배 교차 검증을 권장하고 훈련은 90 %, 테스트는 10 %를 선택한 다음 모든 측정을 측정, 반복 및 평균화하십시오. 이 세트의 MSE 성능은 Hoeffding 불평등에 따라 일반화 기대치를 설정해야합니다. 최대 일반화 오류는 모형의 피처 수와 검정 통계량 계산에 사용되는 샘플 수에 따라 다릅니다. 테스트 샘플을 위해 일부 트레이닝 샘플을 훔쳐 야합니다. 셔플하는 경우 10 배 교차 검증을 권장하고 훈련은 90 %, 테스트는 10 %를 선택한 다음 모든 측정을 측정, 반복 및 평균화하십시오.


1

왜 bernoulli log-likelihood 함수를 사용하지 않는지 궁금합니다. 기본적으로 실제 값 마다 합니다. 모델이 얼마나 가까운 지 예측 합니다. 마찬가지로, 실제 값 마다 . 예측에 얼마나 가까운이 조치 모델이입니다.- 로그 ( 1 - P ) 0 1 - 로그 ( P ) (1)0log(1p^)01log(p^)1

이것은 임의의 임계 값이 없습니다. 측정 값이 작을수록 좋습니다.

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