임의의 숲에서 투표를 통해 "확실성 점수"를 작성 하시겠습니까?


36

나는 구별하는 분류 훈련을 찾고 있어요 Type A하고 Type B있는 절반에 대해, 약 10,000 개체의 합리적 큰 훈련 집합 개체를 Type A그중 절반을 Type B. 데이터 세트는 셀의 물리적 특성 (크기, 평균 반경 등)을 자세히 설명하는 100 개의 연속 기능으로 구성됩니다. 쌍별 산점도 및 밀도 플롯으로 데이터를 시각화하면 많은 특징에서 암성 및 정상 세포의 분포에 유의 한 중복이 있음을 알 수 있습니다.

현재이 데이터 집합의 분류 방법으로 임의 포리스트를 탐색하고 있으며 좋은 결과를보고 있습니다. R을 사용하면 임의 포리스트가 개체의 약 90 %를 올바르게 분류 할 수 있습니다.

우리가 시도하고하고자하는 것 중 하나는 물체의 분류에 대해 얼마나 확신하는지 정량화하는 일종의 "확실성 점수"를 만드는 것입니다. 우리는 분류 기가 100 % 정확하지 않을 것이라는 것을 알고 있으며, 예측에서 높은 정확도가 달성 되더라도 숙련 된 기술자가 어떤 물체가 진정 Type A이고 어떤 물체인지 식별하기를 원합니다 Type B. 따라서 Type A또는 에 대한 타협하지 않는 예측을 제공하는 대신 Type B, 우리 는 객체가 어떻게 A또는 객체인지를 설명 할 각 객체에 대한 점수를 제시하고자합니다 B. 예를 들어, 0에서 10 사이의 점수를 만들면 점수 0은 객체가 객체와 매우 유사하다는 것을 나타낼 수 있지만 점수 10은 객체가 매우 유사 함을 Type A나타냅니다 Type B.

나는 임의의 숲 내에서 투표를 사용하여 그러한 점수를 만들 수 있다고 생각했습니다. 임의의 숲에 대한 분류는 생성 된 나무의 숲 내에서 다수의 투표로 이루어 지므로, 100 %의 나무로 Type A투표 한 대상은 나무의 51 %가 투표 한 대상과 다를 것이라고 가정합니다 수 Type A.

현재 객체가 Type A또는 로 분류하기 위해 받아야하는 투표 비율에 대해 임의의 임계 값을 설정하려고 시도 Type B했으며 임계 값이 통과되지 않으면로 분류됩니다 Uncertain. 예를 들어, 80 % 이상의 나무가 분류에 대한 결정에 동의해야한다는 조건을 강요하면 클래스 예측의 99 %는 정확하지만 개체의 약 40 %는로 비닝됩니다 Uncertain.

그렇다면 투표 정보를 활용하여 예측의 확실성을 평가하는 것이 이치에 맞습니까? 아니면 내 생각에 잘못된 방향으로 가고 있습니까?


별도의 교육 및 테스트 데이터 세트가 있는지 확인하십시오. 테스트 세트를 가능한 한 적게 (이상적으로는 한 번만) 사용하십시오.
Boris Gorelik

@bgbg 저는 70/20/10 분할에서 훈련 / 검증 / 테스트 체계를 사용하고 있습니다. 70 %의 데이터로 모델을 훈련시키고 유효성 검사 세트 20 %의 결과를 기반으로 매개 변수를 조정합니다. 이 두 세트의 파라미터를 조정 한 후 10 % 테스트 세트에서 모델을 평가합니다. Breiman은 내장 된 OOB 오류율이 별도의 테스트 세트를 중복으로 만든다고 주장하지만 그의 주장에주의합니다.
ialm

답변:


19

MATLAB과 같이 작업 한 임의의 포리스트의 모든 구현은이를 위해 확률 적 출력을 제공합니다.

나는 R 구현으로 일하지 않았지만 어려운 결정뿐만 아니라 투표에서 부드러운 결과를 얻는 간단한 방법이 없다면 충격을 받았다.

편집 : 방금 R을 보았을 때 predict.randomForest는 출력 확률도 계산합니다.


1
당신의 답변에 감사드립니다. 당신이 옳습니다, 각 개체가받는 투표 비율을 출력하는 스크립트를 만들었습니다. 그래도이 투표가 얼마나 유용한 지 궁금합니다. 권장하는 다음 단계가 있습니까? RF의 추가 실행을 통해 투표 비율의 변동성을 살펴 봐야합니까? RF에는 확률 적 요소가 있다는 것을 알고 있습니다. 살펴 봐야 할 진단이 있습니까?
ialm

3
@Jonathan 당신은 숲 에서이 클래스에 대한 일부 투표의 함수로 일부 클래스의 실제 객체의 비율을 특징으로하는 플롯을 살펴볼 수 있습니다. 나는 자신감 점수가 필요한 한 가지 문제에 대해 작업하고 있었고 매우 훌륭한 물류 곡선을 얻을 수있었습니다.

@mbq 죄송합니다. 무슨 말인지 알 수 있습니까? 나는 당신의 제안에 관심이 있으며 내일 그것을 따라 할 것입니다!
ialm

1
또한 RF의 변동성은 훈련 단계에 있으므로 RF를 통해 테스트 샘플을 여러 번 실행해도 결과가 변경되지 않습니다. RF가 충분한 나무가 있는지 확인한 다음 AUC에 따라 최소 리프 매개 변수를 최적화하기 위해 RF의 AUC와 트리 수를 살펴 보겠습니다.
benhamner

2
@Jonathan 나는 mbq가 캘리브레이션이라는 이름을 언급하고 있다고 생각합니다 (다른 이름이있을 수도 있지만). 예를 들어이 질문을 참조하십시오 : 멀티 클래스 밀어 분류 보정 , "실제 값은"감독 분류에 참조 무엇?
steffen

17

R을 사용하는 경우 캐럿 패키지 는 휠을 다시 발명하지 않아도됩니다. 예를 들어 다음 코드는 교차 유효성 검사를 사용하여 임의 포리스트 모델에 대한 튜닝 매개 변수를 선택한 다음 각 교차 유효성 검사 접힘의 평균 및 표준 정확도 편차를 출력합니다. 마지막으로 모델의 클래스 확률을 계산합니다.

library(caret)
library(PerformanceAnalytics)
data(iris)

#Make a yes/no dataset
Dataset <- iris
Dataset$Class <- ifelse(Dataset$Species=='versicolor','Yes','No')
Dataset$Class  <- as.factor(Dataset$Class)
Dataset$Species<- NULL
chart.Correlation(Dataset[-5], col= Dataset$Class)

#Fit an RF model
model <- train(Class~.,Dataset,
                method='rf',TuneLength=3,
                trControl=trainControl(
                    method='cv',number=10,
                    classProbs = TRUE))
model$results

#Predict class probabilities (i.e. 'certainty' scores)
pred <- predict(model,iris,"prob")
head(pred)

캐럿의 좋은 점은 다른 예측 모델을 비교하기가 매우 쉽다는 것입니다. 예를 들어 SVM을 사용하려는 경우 텍스트 method='rf'method='svmLinear'또는로 method='svmRadial'. 바꿀 수 있습니다 . trainControl 매개 변수에 행을 추가하여 정확도 대신 AUC를 기반으로 튜닝 매개 변수를 선택할 수도 있습니다 summaryFunction=twoClassSummary.

마지막으로 PerformanceAnalytics 패키지에는 약간의 코드가 있는데 chart.Correlation(Dataset[-5], col= Dataset$Class),이 모델은 모델을 빌드하는 데 필요하지 않지만 데이터 세트를 멋지게 시각화합니다.


당신은 저를 캐럿 패키지의 팬으로 만들고 있습니다. 다른 분류 방법을 시도하고 CV 및 매개 변수 조정을 자체적으로 수행하고 비슷한 결과를 얻었는지 확인하기 위해 두 번째 R 스레드를 열어 둘 것이라고 생각합니다.
ialm

@Jonathan 기뻐요! 훌륭한 패키지입니다. modelLookup()가능한 목록을 보려면 명령을 시도하십시오 .
Zach

prob의 유형은 predict사용도 가능합니다 randomForest(또는 같은 다른 패키지를 사용하지 않고 모델을 훈련 caret또는 PerformanceAnalytics).
Hack-R

2

R 의 randomForest 패키지는 분석에 대한 자세한 정보를 얻는 데 매우 적합한 패키지입니다. 투표 수 (소수 또는 원시 수)를 제공하며 튜닝 및 교차 검증을위한 기본 제공 기능을 제공하며 기능에 대한 자세한 정보를 제공 할 수도 있습니다 (100 개 중 어느 것을 알고 싶은 경우) 분석에서 가장 중요합니다).

이미 해당 패키지를 사용하고 있다면 자세히 살펴보고 싶지 않은 경우 확인하십시오.

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