이 이진 예측 문제에 어떻게 접근해야합니까?


9

다음 형식의 데이터 세트가 있습니다.

암 암 예측

이진 결과 암이 있거나 암이 없습니다. 데이터 세트의 모든 의사는 모든 환자를보고 환자에게 암이 있는지 여부에 대한 독립적 인 판단을 내 렸습니다. 그런 다음 의사는 5 단계 중 자신의 진단이 정확하고 신뢰 수준이 괄호 안에 표시된다는 신뢰 수준을 제공합니다.

이 데이터 세트에서 좋은 예측을 얻기 위해 다양한 방법을 시도했습니다.

의사의 평균 수준을 무시하고 자신감 수준을 무시하는 것이 꽤 효과적입니다. 위의 표에서 환자 1과 환자 2에 대해 올바른 진단을 내릴 수 있지만, 환자 3은 암에 걸렸다 고 잘못 말했지만 의사는 환자 2가 대다수가 암에 걸렸다 고 생각하기 때문입니다.

나는 또한 두 명의 의사를 무작위로 추출하는 방법을 시도했으며, 그들이 서로 동의하지 않으면 의사 결정에 더 자신감이있는 사람에게 결정 투표를합니다. 이 방법은 많은 의사와 상담 할 필요가 없다는 점에서 경제적이지만 오류율도 상당히 증가합니다.

나는 우리가 두 명의 의사를 무작위로 선택하는 관련 방법을 시도했으며, 그들이 서로 동의하지 않으면 무작위로 두 명을 더 선택합니다. 하나 이상의 진단이 적어도 두 개의 '투표'로 진행되면 해당 진단을 위해 문제를 해결합니다. 그렇지 않다면, 우리는 더 많은 의사를 계속 샘플링합니다. 이 방법은 매우 경제적이며 많은 실수를하지 않습니다.

좀 더 정교한 방식으로 일을 잃어버린 느낌이 들지 않습니다. 예를 들어, 데이터 세트를 훈련 및 테스트 세트로 나누고 진단을 결합하는 최적의 방법을 찾은 다음 해당 가중치가 테스트 세트에서 어떻게 수행되는지 확인할 수있는 방법이 있는지 궁금합니다. 한 가지 가능성은 시험 세트에서 실수를 저지른 체중 감량 의사와 저 자신감 검사로 고생 진단을 할 수있는 일종의 방법입니다 (자신감은이 데이터 세트의 정확성과 관련이 있습니다).

이 일반적인 설명과 일치하는 다양한 데이터 세트가 있으므로 샘플 크기가 다양하며 모든 데이터 세트가 의사 / 환자와 관련이있는 것은 아닙니다. 그러나이 특정 데이터 세트에는 각각 108 명의 환자를 본 40 명의 의사가 있습니다.

편집 : 다음은 @ jeremy-miles의 답변을 읽은 결과로 나온 가중치에 대한 링크 입니다.

  1. 비가 중 결과는 첫 번째 열에 있습니다. 실제로이 데이터 세트에서 내가 실수로 말한 것처럼 최대 신뢰도 값은 5가 아니라 4입니다. 따라서 @ jeremy-miles의 접근법에 따르면 환자가 얻을 수있는 가장 높은 비가 중 점수는 7이됩니다. 이는 말 그대로 모든 의사가 환자가 암에 걸렸다는 신뢰 수준 4를 주장한다는 의미입니다. 환자가 얻을 수있는 가장 낮은 비가 중 점수는 0이며, 이는 모든 의사가 환자에게 암이 없음을 신뢰 수준 4로 주장했음을 의미합니다.

  2. Cronbach의 알파에 의한 가중치. SPSS에서 전체 Cronbach의 알파 0.9807이 있음을 발견했습니다. Cronbach의 알파를보다 수동으로 계산 하여이 값이 올바른지 확인하려고했습니다. 내가 붙여 모두 40 의사의 공분산 행렬 생성 여기를 . 그런 다음 Cronbach의 알파 공식에 대한 나의 이해를 바탕으로α=KK1(1σxi2σT2) 어디 K 내가 계산 한 항목의 수입니다 (여기서는 의사는 '항목'입니다) σxi2 공분산 행렬의 모든 대각선 요소를 합산하여 σ2공분산 행렬의 모든 요소를 ​​합산합니다. 나는 그때 얻었다α=40401(18.7915200.7112)=0.9807그런 다음 각 의사가 데이터 세트에서 제거 될 때 발생하는 40 가지 Cronbach Alpha 결과를 계산했습니다. 나는 Cronbach의 알파에 부정적으로 기여한 의사를 0으로 가중시켰다. 나는 나머지 의사들이 크론 바흐의 알파에 긍정적으로 기여한 것에 대한 가중치를 생각 해냈다.

  3. 총 항목 상관 관계 별 가중치. 모든 전체 항목 상관 관계를 계산 한 다음 각 의사의 상관 관계 크기에 비례하여 가중치를 적용합니다.

  4. 회귀 계수에 의한 가중치.

내가 아직도 확실하지 않은 한 가지는 어떤 방법이 다른 방법보다 "더 잘"작동하는지 말하는 방법입니다. 이전에는 이진 예측 및 이진 결과가있는 경우에 적합한 Peirce Skill Score와 같은 항목을 계산했습니다. 그러나 이제 0에서 1 대신 0에서 7 사이의 예측 범위를 갖습니다. 모든 가중치 점수> 3.50을 1로 변환하고 모든 가중치를 <3.50에서 0으로 변환해야합니까?


우리는 말할 수 No Cancer (3)있다 Cancer (2)? 그렇게하면 문제가 약간 단순화됩니다.
Wayne

1
재 : 데이터 구조, 거의 항상 다른 열에 다른 변수 (환자가 암이 있는지, 평가가 얼마나 신뢰할 수 있는지)를 갖는 것이 좋습니다. "암 없음 (3)"과 같이 이들을 조합하면 선택의 폭이 좁아집니다.
rolando2

@Wayne 데이터는 최대 신뢰도 Cancer (4)를 가진 암 예측에서 최대 신뢰도 를 가진 암이없는 예측까지 다양합니다 No Cancer (4). 우리는 말할 수 없다 No Cancer (3)Cancer (2)동일하지만, 우리는 거기 연속이며,이 연속체의 중간 점은 말할 수 Cancer (1)No Cancer (1).
user1205901-복원 Monica

@ rolando2 조언을 주셔서 감사합니다. 내 데이터 파일에서 항목을 다시 정렬하여 이제 분리했습니다.
user1205901-복원 Monica Monica

1
임계 값은 조정 가능한 매개 변수 이므로 적절한 컷오프는 평가 기준에 따라 다릅니다. 내가 실제로 메트릭 내가 봤 그것에 익숙하고되었을 때 첫번째 히트는 귀하와 관련 될 수있다 : 최대 피어스 기술 점수 (2007)에주의 .
GeoMatt22

답변:


7

먼저, 의사들이 서로 동의하는지 알 것입니다. 모델을 과도하게 맞추기 때문에 50 명의 의사를 개별적으로 분석 할 수 없습니다. 한 명의 의사가 우연히보기에 좋습니다.

자신감과 진단을 10 점 척도로 결합하려고 시도 할 수 있습니다. 의사가 환자에게 암이없고 매우 자신감이 있다고 말하면 0입니다. 의사가 암이 있다고 말하고 매우 확신한다면 9입니다. 의사가 그렇지 않다고 말하면, 자신감이 없습니다. 5 등입니다.

예측하려고 할 때 일종의 회귀 분석을 수행하지만 이러한 변수의 인과 관계에 대해 생각하면 다른 방법입니다. 환자에게 암이 있는지 여부는 진단의 원인이며 결과는 진단입니다.

행은 환자 여야하고 열은 의사 여야합니다. 이제 심리 측정에서 일반적인 상황이 발생했습니다 (따라서 태그를 추가 한 이유).

그런 다음 점수 간의 관계를 살펴보십시오. 각 환자는 평균 점수와 각 의사의 점수를 가지고 있습니다. 평균 점수는 모든 의사의 점수와 양의 상관 관계가 있습니까? 그렇지 않은 경우 해당 의사는 신뢰할 수 없을 것입니다 (항목 간 상관 관계라고 함). 때로는 총점 (또는 평균 점수)에서 한 의사를 제거하고 해당 의사가 다른 모든 의사의 평균과 상관 관계가 있는지 확인합니다. 이것이 올바른 항목 총 상관 관계입니다.

Cronbach의 알파 (클래스 내 상관 관계의 형태)와 각 의사가없는 알파를 계산할 수 있습니다. 의사를 추가 할 때 항상 알파가 높아야하므로 의사를 제거 할 때 알파가 높아지면 해당 의사의 등급이 의심됩니다 (이는 수정 된 항목-총 상관과 다른 것을 나타내지 않는 경우가 많습니다).

R을 사용하면 alpha 함수를 사용하여 psych 패키지에서 이러한 종류의 것을 사용할 수 있습니다. Stata를 사용하는 경우 명령은 알파이고 SAS에서는 proc corr이며 SPSS에서는 규모가 작고 안정성이 높습니다.

그런 다음 각 의사의 평균 점수 또는 가중 평균 (상관에 의해 가중)으로 점수를 계산하고 해당 점수가 실제 진단을 예측하는지 확인할 수 있습니다.

또는 해당 단계를 건너 뛰고 진단에 대한 각 의사의 점수를 개별적으로 회귀하고 회귀 매개 변수를 가중치로 처리 할 수 ​​있습니다.

설명을 요청하십시오. 책을 원한다면 Streiner와 Norman의 "건강 측정 척도"를 좋아합니다.

편집 : OP 추가 정보를 기반으로합니다.

와우, 그것은 Cronbach의 알파의 지옥입니다. 내가 그것을 본 유일한 시간은 실수했을 때입니다.

이제 로지스틱 회귀 분석을 수행하고 ROC 곡선을 살펴 보겠습니다.

회귀에 의한 가중치와 상관 관계의 차이점은 의사의 반응에 따라 다릅니다. 일부 문서는 일반적으로 자신감이 많을수록 (숙련되지 않은 상태) 극단적 인 범위를 더 많이 사용할 수 있습니다. 이를 수정하려면 회귀가 아닌 상관 관계를 사용하면됩니다. 원래 데이터를 유지하고 정보를 버리지 않기 때문에 회귀로 가중치를 부여합니다.

편집 (2) : R에서 로지스틱 회귀 모델을 실행하여 각 결과를 얼마나 잘 예측했는지 확인했습니다. tl / dr : 그들 사이에는 아무것도 없습니다.

내 코드는 다음과 같습니다.

d <- read.csv("Copy of Cancer data - Weightings.csv")

mrc <- glm(cancer ~ weightrc, data = d, family = "binomial")
mun <- glm(cancer ~ unweight, data = d, family = "binomial")
mca <- glm(cancer ~ weightca, data = d, family = "binomial")
mic <- glm(cancer ~ weightic, data = d, family = "binomial")

d$prc <- predict(mrc, type = "response")
d$pun <- predict(mun, type = "response")
d$pca <- predict(mca, type = "response")
d$pic <- predict(mic, type = "response")

par(mfrow = c(2, 2))
roc(d$cancer, d$prc, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pun, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pca, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pic, ci = TRUE, plot = TRUE)

4 가지 ROC 곡선

그리고 출력 :

> par(mfrow = c(2, 2))
> roc(d$cancer, d$prc, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$prc, ci = TRUE,     plot = TRUE)

Data: d$prc in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9831
95% CI: 0.9637-1 (DeLong)
> roc(d$cancer, d$pun, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pun, ci = TRUE,     plot = TRUE)

Data: d$pun in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9808
95% CI: 0.9602-1 (DeLong)
> roc(d$cancer, d$pca, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pca, ci = TRUE,     plot = TRUE)

Data: d$pca in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9854
95% CI: 0.9688-1 (DeLong)
> roc(d$cancer, d$pic, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pic, ci = TRUE,     plot = TRUE)

Data: d$pic in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9822
95% CI: 0.9623-1 (DeLong)

1
아주 좋아요 그리고 당신의 추론이 허락하는 것처럼, 일부 의사는 트렌드를 극복하면서 독특한 통찰력을 제공함으로써 알파를 악화시킬 수 있습니다.
rolando2

@ jeremy-miles이 답변에 대해 감사의 말씀을 전합니다. 제안한 내용을 구현하려고 시도하고 일부 결과를 게시하도록 OP를 수정했습니다. 내가 궁금하게 생각하는 것은 게시물을 올바르게 해석했는지 여부와 결과를 예측하는 데 특정 집계 방법이 다른 방법보다 효과적이라는 것을 보여주는 데 필요한 것입니다.
user1205901-복원 Monica Monica

데이터를 게시 해 주셔서 감사합니다. 나중에 살펴 보겠습니다. (어떤 소프트웨어를 사용하고 있습니까?)
Jeremy Miles

@JeremyMiles이 편집을 게시 해 주셔서 감사합니다! MATLAB을 사용하고 있지만 이미 R 코드를 게시 했으므로 R에 대해 충분히 알고 그것을 대신 사용할 수 있습니다. SPSS에서 Cronbach의 알파를 계산했습니다. R과 다른 값을 얻습니까?
user1205901-Reinstate Monica

1
네, 제가 생각한 것입니다. 따라서 의사마다 체중이 다릅니다.
Jeremy Miles

2

두 가지 기본 제안 :

  1. 로지스틱 회귀 분석의 손실 함수에 가중치를 사용할 수 있으므로 환자가 P = 1 인 암에 걸렸다 고 확신하는 의사는 두 배의 영향을 미치므로 P = 0.75 인 암에 걸린 사람도 있습니다. 확률을 가중치로 올바르게 변환하는 것을 잊지 마십시오.
  2. 종종 무시되는 모델순위 모델입니다. 랭커 내에는 입력 내용에 따라 목록, 포인트 및 페어 순위의 세 가지 큰 그룹이 있습니다. 귀하의 경우 포인트 점수를 사용할 수있는 것 같습니다 .

확률을 가중치로 올바르게 변환하는 방법을 제안 할 수 있습니까? 나는이 개념을 인터넷 검색하려고 시도했지만 이것을 수행하는 방법에 대한 명확한 조언을 찾을 수 없었습니다.
user1205901-복원 Monica Monica

@ user1205901, 나는 매우 간단한 것을 염두에 두었다 P. 의사가 암에 걸릴 확률을 말한 다음 (파이썬 표기법으로) : y=[1 if p >= 0.5 else 0 for p in P]w=[abs(p-0.5)*2 for p in P]. 그런 다음 모델을 훈련 시키십시오.LogisticRegression().fit(X,y,w)
Ricardo Cruz

손실 기능에서, 이것은 예를 들어 암이 아닌 것 (0.1-> 0.8 및 0.2-> 0.6)에 대해 0.2의 무게를 0.1보다 두 배로 줄 것이다. 의사가 확실하지 않으면 (P ~ 0.5) 관찰 결과 손실에 거의 영향을 미치지 않습니다. 어떤 모델을 사용하든 대부분의 모델에서 지원하는 손실 함수에 비용 벡터 추가를 지원해야합니다. 이것이 좋은지 모르겠지만 시도하는 것이 사소한 것 같습니다. 먼저 측정 항목을 지정해야합니다. 손실 기능은 그가 최대화하고자하는 메트릭에 따라 더 조정될 수 있습니다.
Ricardo Cruz

2

(이것은 제 전문 분야가 아니므 로 Jeremy Miles답변 이 더 신뢰할 수 있습니다.)

한 가지 아이디어가 있습니다.

먼저, 자신감 수준이 없다고 상상해보십시오. 그런 다음 각 환자마다나는=1암이 있거나없는 나는{0,1}, 그리고 각 의사 제이=1미디엄 암 진단을 받았는지 아닌지 나는제이{0,1}.

간단한 접근법은 의사가 주어진 환자의 진단에 동의하거나 동의하지 않을 수 있지만 환자의 실제 상태를 알면 각 의사의 진단은 독립적으로 취급 될 수 있다고 가정하는 것입니다. 즉,나는제이있는 조건부 독립 주어진는나는. 이로 인해 Naive Bayes 라는 잘 정의 된 분류 기가 생성됩니다. 으로 추정하기 쉬운 매개 변수와 함께 합니다.

특히 기본 매개 변수는 기본 요율입니다. []1나는나는조건부 진단 가능성

[제이|]나는나는제이나는나는나는
이 후자의 매개 변수는 의사 진단의 가중 평균입니다. 제이가중치가 실제 환자 상태 인 경우 나는.

이 모델이 합리적이라면 신뢰 수준을 통합하는 한 가지 방법은 가중치를 조정하는 것입니다. 그러면 조건부 우도는

[제이|,제이]나는나는제이나는제이나는나는나는제이나는
여기 나는제이0 신뢰 수준을 설명하는 가중치입니다. 나는제이.

가중치가 확률로 캐스팅 된 경우 [0,1]Bernoulli 바로 가기’수식을 사용할 수 있습니다

[]=(1)1
설명하기 위해 =0 적절한 경우.

참고 : 이 경우 소프트웨어가 0^0=1아닌을 주어야합니다. 0^0=NaN일반적이지만 점검 할 가치가 있습니다! 또는 당신은 보장 할 수 있습니다(0,1)예를 들어 자신감이 케이{1케이} 그때 =케이/(케이+1) 작동 할 것이다.


@Wayne의 코멘트 맥락에서 : 당신이 말하면 No Cancer (3) = Cancer (2), 이것은 다음을 사용하는 가중치 모델과 일치합니다[케이]=케이케이, 이후 25=15. 당신이 말하는 경우 또는 No Cancer (3) = Cancer (3),이과 일치[케이]=케이케이+1, 이후 6=16.
GeoMatt22

이해할 수 있는지 확인할 수 있습니까
[제이|,제이]나는나는제이나는제이나는나는나는제이나는
바르게? 결과가 [1,0,1]이고 의사가 [0,1,1]을 예측하고 의사의 체중이 [0.2,0.4,0.8] 인 경우 가중 조건부 진단 가능성은 0.5입니까?
user1205901-복원 Monica Monica

죄송합니다. 가중, 즉 δ[0,1]지표보다는 {0,1}. 그래서 당신의 경우를 위해δ나는=나는(나는=1)+(1나는)(나는=0)δ=[0.8,0.4,0.8]. 그때[,δ]=δ¯=0.8+0+0.8=20.8, 동안 [2]=¯=2[δ]=δ¯=560.8. 그래서[|δ]=[,δ]/[δ]=0.8[δ|]=[,δ]/[]=0.8.
GeoMatt22

0

귀하의 질문에서, 테스트하려는 것은 측정 시스템 인 것으로 보입니다. 프로세스 엔지니어링 영역에서 이는 속성 측정 시스템 분석 또는 MSA입니다.

이 링크는 필요한 샘플 크기와이 유형에 대한 연구를 수행하기위한 계산에 대한 유용한 정보를 제공합니다. https://www.isixsigma.com/tools-templates/measurement-systems-analysis-msa-gage-rr/making-sense-attribute-gage-rr-calculations/

이 연구를 통해 의사는 동일한 환자에게 동일한 정보를 두 번 이상 진단해야합니다.

이 연구는 두 가지 방법 중 하나를 수행 할 수 있습니다. 단순 암 / 암 없음 등급을 사용하여 의사와 각 의사의 합의를 결정할 수 있습니다. 이상적으로는 동일한 수준의 신뢰도로 진단 할 수 있어야합니다. 그런 다음 10 점 만점을 사용하여 각 의사 간의 동의를 테스트 할 수 있습니다. (모두 암 (5)이 같은 등급이고 암 (1)이 같은 등급이 아니라는 것에 동의해야합니다.)

링크 된 웹 사이트의 계산은 테스트에 사용할 수있는 모든 플랫폼에서 간단하게 수행 할 수 있습니다.

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