... Show
저널정보
저자정보
이용수 내서재 0 내서재에 추가 초록·키워드경시적자료의 분석으로 선형성장모형을 고려한다. 시간효과를 고려하는 모형과 임의효과를 추가하는 모형 그리고 가변수가 추가된 모형을 설정한다. 본 연구는 정규분포로 가정한 다양한 자료를생성하고, 다양한 선형성장모형에 대하여 binormal ROC 곡선과 AUC 통계량을 여러 시점에서 구하여 비교 분석하였다. 공분산의 크기가 증가할수록 그리고 시간이 경과할수록 ROC 곡선은 다른형태로 나타나며 AUC 값은 서서히 증가한다. 반대로 공분산이 작아질수록 시간이 경과함에 따라AUC의 증가폭이 커진다. 임의효과모형에서 공분산이 양인 경우에 시간이 경과할수록 임의효과모형의 분산이 증가하며 AUC의 증가량은 시간효과모형의 AUC의 증가량보다 작다. 그리고 시간효과모형의 AUC의 증가량보다 임의효과모형의 증가량이 더 크다는 것을 탐색하였다. Consider the linear growth models for longitudinal data analysis. Several kind of linear growth models are selected such as time-effect and random-effect models as well as a dummy variable included model. In this work, simulation data are generated with normality assumption, and both binormal ROC curve and AUC are obtained and compared for various linear growth models. It is found that ROC curves have different shapes and AUC increase slowly, as values of the covariance increase and the time passes for random-effect models. On the other hand, AUC increases very fast as values of covariance decrease. When the covariance has positive value, we explored that the variances of random-effect models increase and the increment of AUC is smaller than that of AUC for time-effect models. And the increment of AUC for time-effect models is larger than the increment for random-effect models. 목차등록된 정보가 없습니다. 참고문헌 (14)함께 읽어보면 좋을 논문논문 유사도에 따라 DBpia 가 추천하는 논문입니다. 함께 보면 좋을 연관 논문을 확인해보세요!
이 논문의 저자 정보홍종선 소속기관 성균관대학교 주요연구분야 자연과학 > 수학/통계학 TOP 5% 예술체육학 > 체육 논문수 51 이용수 2,873 양대순 소속기관 한국데이터정보과학회 주요연구분야 자연과학 > 수학/통계학 논문수 1 이용수 76 이 논문과 함께 이용한 논문최근 본 자료전체보기댓글(0)0 UCI(KEPA) : I410-ECN-0101-2018-041-001377180 perfcurve분류기 출력값에 대한 ROC(수신자 조작 특성) 곡선 또는 기타 성능 곡선 구문설명예제
예를 들어, 음성 클래스 목록을 제공하거나, 예제모두 축소 로지스틱 회귀 분류에 대한 ROC 곡선 플로팅하기표본 데이터를 불러옵니다. 처음 두 특징만 예측 변수로 사용합니다. 종 versicolor 및 virginica에 대응되는 측정값만 사용하여 이진 분류 문제를 정의합니다. 이진 응답 변수를 정의합니다. resp = (1:100)'>50; % Versicolor = 0, virginica = 1 로지스틱 회귀 모델을 피팅합니다. mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit'); ROC 곡선을 계산합니다. 로지스틱 회귀 모델의 확률 추정값을 점수로 사용합니다. scores = mdl.Fitted.Probability;
[X,Y,T,AUC] = perfcurve(species(51:end,:),scores,'virginica');
곡선 아래 면적을 표시합니다. 곡선 아래 면적은 0.7918입니다. 최대 AUC 값은 1이고, 이는 완벽한 분류기에 해당합니다. AUC 값이 클수록 더 나은 분류기 성능을 나타냅니다. ROC 곡선을 플로팅합니다. plot(X,Y) xlabel('False positive rate') ylabel('True positive rate') title('ROC for Classification by Logistic Regression')
rocObj = rocmetrics(species(51:end,:),scores,'virginica');
plot(rocObj)
ROC 곡선을 사용하여 분류 방법 비교하기표본 데이터를 불러옵니다.
응답 변수의 형식을 다시 지정하여 로지스틱 회귀를 피팅합니다. 예측 변수 3~예측 변수 34를 사용합니다. resp = strcmp(Y,'b'); % resp = 1, if Y = 'b', or 0 if Y = 'g' pred = X(:,3:34); 레이다 반환값에 대한 사후 확률을 나쁜 레이다 반환값으로 추정하도록 로지스틱 회귀 모델을 피팅합니다. mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit'); score_log = mdl.Fitted.Probability; % Probability estimates 점수에 대한 확률을 사용하여 표준 ROC 곡선을 계산합니다. [Xlog,Ylog,Tlog,AUClog] = perfcurve(resp,score_log,'true'); 동일한 표본 데이터에 대해 SVM 분류기를 훈련시킵니다. 데이터를 표준화합니다. mdlSVM = fitcsvm(pred,resp,'Standardize',true); 사후 확률(점수)을 계산합니다. mdlSVM = fitPosterior(mdlSVM); [~,score_svm] = resubPredict(mdlSVM);
SVM 모델에서 얻은 점수를 사용하여 표준 ROC 곡선을 계산합니다. [Xsvm,Ysvm,Tsvm,AUCsvm] = perfcurve(resp,score_svm(:,mdlSVM.ClassNames),'true'); 동일한 표본 데이터에 대해 나이브 베이즈 분류기를 피팅합니다. mdlNB = fitcnb(pred,resp); 사후 확률(점수)을 계산합니다. [~,score_nb] = resubPredict(mdlNB); 나이브 베이즈 분류에서 얻은 점수를 사용하여 표준 ROC 곡선을 계산합니다. [Xnb,Ynb,Tnb,AUCnb] = perfcurve(resp,score_nb(:,mdlNB.ClassNames),'true'); 동일한 그래프에 ROC 곡선을 플로팅합니다. plot(Xlog,Ylog) hold on plot(Xsvm,Ysvm) plot(Xnb,Ynb) legend('Logistic Regression','Support Vector Machines','Naive Bayes','Location','Best') xlabel('False positive rate'); ylabel('True positive rate'); title('ROC Curves for Logistic Regression, SVM, and Naive Bayes Classification') hold off SVM은 분계점이 높을수록 더 나은 ROC 값을 생성하지만, 로지스틱 회귀가 일반적으로 좋은 레이다 반환값에서 나쁜 레이다 반환값을 구분하는 데 더 적합합니다. 나이브 베이즈에 대한 ROC 곡선은 전반적으로 다른 두 ROC 곡선보다 낮으며, 이는 다른 두 분류기 방법보다 표본내 성능이 낮다는 것을 나타냅니다. 세 가지 분류기에 대한 곡선 아래 면적을 비교합니다. 로지스틱 회귀가 분류에 대해 가장 높은 AUC 측정값을 가지며, 나이브 베이즈가 가장 낮은 값을 가집니다. 이 결과는 로지스틱 회귀가 이 표본 데이터에 대해 더 나은 표본내 평균 성능을 제공한다는 것을 나타냅니다. 사용자 지정 커널 함수에 대한 모수 값 결정하기이 예제에서는 ROC 곡선을 사용하여 분류기의 사용자 지정 커널 함수에 대해 더 적합한 모수 값을 결정하는 방법을 보여줍니다. 단위원 내부 임의의 점으로 구성된 집합을 생성합니다. rng(1); % For reproducibility n = 100; % Number of points per quadrant r1 = sqrt(rand(2*n,1)); % Random radii t1 = [pi/2*rand(n,1); (pi/2*rand(n,1)+pi)]; % Random angles for Q1 and Q3 X1 = [r1.*cos(t1) r1.*sin(t1)]; % Polar-to-Cartesian conversion r2 = sqrt(rand(2*n,1)); t2 = [pi/2*rand(n,1)+pi/2; (pi/2*rand(n,1)-pi/2)]; % Random angles for Q2 and Q4 X2 = [r2.*cos(t2) r2.*sin(t2)]; 예측 변수를 정의합니다. 제1사분면과 제3사분면의 점은 양성 클래스에 속하는 것으로 레이블을 지정하고 제2사분면과 제4사분면의 점은 음성 클래스에 속하는 것으로 레이블을 지정합니다. pred = [X1; X2];
resp = ones(4*n,1);
resp(2*n + 1:end) = -1; % Labels
특징 공간의 두 행렬을 입력값으로 받아 시그모이드 커널을 사용하여 이들 입력값을 그람 행렬(Gram Matrix)로 변환하는 함수 function G = mysigmoid(U,V) % Sigmoid kernel function with slope gamma and intercept c gamma = 1; c = -1; G = tanh(gamma*U*V' + c); end 시그모이드 커널 함수를 사용하여 SVM 분류기를 훈련시킵니다. 데이터를 표준화하는 것이 좋습니다. SVMModel1 = fitcsvm(pred,resp,'KernelFunction','mysigmoid',... 'Standardize',true); SVMModel1 = fitPosterior(SVMModel1); [~,scores1] = resubPredict(SVMModel1);
function G = mysigmoid2(U,V) % Sigmoid kernel function with slope gamma and intercept c gamma = 0.5; c = -1; G = tanh(gamma*U*V' + c); end SVMModel2 = fitcsvm(pred,resp,'KernelFunction','mysigmoid2',... 'Standardize',true); SVMModel2 = fitPosterior(SVMModel2); [~,scores2] = resubPredict(SVMModel2); 두 모델 모두에 대한 ROC 곡선과 곡선 아래 면적(AUC)을 계산합니다. [x1,y1,~,auc1] = perfcurve(resp,scores1(:,2),1); [x2,y2,~,auc2] = perfcurve(resp,scores2(:,2),1); ROC 곡선을 플로팅합니다. plot(x1,y1) hold on plot(x2,y2) hold off legend('gamma = 1','gamma = 0.5','Location','SE'); xlabel('False positive rate'); ylabel('True positive rate'); title('ROC for classification by SVM'); 감마 모수가 0.5로 설정된 커널 함수가 더 나은 표본내 결과를 제공합니다. AUC 측정값을 비교합니다. auc1 = 0.9518 auc2 = 0.9985 감마가 0.5로 설정된 곡선 아래 면적은 감마가 1로 설정된 곡선 아래 면적보다 큽니다. 이는 또한 감마 모수 값이 0.5인 경우 더 나은 결과를 생성함을 확인합니다. 이러한 두 감마 모수 값을 갖는 분류기 성능을 시각적으로 비교한 것을 보려면 사용자 지정 커널을 사용하여 SVM 분류기 훈련시키기 항목을 참조하십시오.
분류 트리에 대한 ROC 곡선 플로팅하기표본 데이터를 불러옵니다. 열 벡터 꽃받침 길이와 너비를 예측 변수로 사용하여 분류 트리를 훈련시킵니다. 클래스 이름을 지정하는 것이 좋습니다. Model = fitctree(meas(:,1:2),species, ... 'ClassNames',{'setosa','versicolor','virginica'}); 트리 [~,score] = resubPredict(Model); 점수는 하나의 관측값(데이터 행렬의 한 행)이 하나의 클래스에 속할 사후 확률입니다. 실제 클래스 레이블 이는 다중클래스 문제이므로 diffscore1 = score(:,2) - max(score(:,1),score(:,3));
[X,Y,T,~,OPTROCPT,suby,subnames] = perfcurve(species,diffscore1,'versicolor');
OPTROCPT = 1×2
0.1000 0.8000
suby = 12×2
0 0
0.1800 0.1800
0.4800 0.4800
0.5800 0.5800
0.6200 0.6200
0.8000 0.8000
0.8800 0.8800
0.9200 0.9200
0.9600 0.9600
0.9800 0.9800
⋮
subnames = 1x2 cell
{'setosa'} {'virginica'}
ROC 곡선을 플로팅하고 ROC 곡선에 최적 조작점을 플로팅합니다. plot(X,Y) hold on plot(OPTROCPT(1),OPTROCPT(2),'ro') xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve for Classification by Classification Trees') hold off 최적 조작점에 대응되는 분계점을 구합니다. T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))
즉, diffscore2 = score(:,2) - score(:,3); [X,Y,~,~,OPTROCPT] = perfcurve(species,diffscore2,'versicolor', ... 'negClass','virginica'); OPTROCPT OPTROCPT = 1×2
0.1800 0.8200
figure, plot(X,Y) hold on plot(OPTROCPT(1),OPTROCPT(2),'ro') xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve for Classification by Classification Trees') hold off 또는
rocObj = rocmetrics(species,score,Model.ClassNames);
ROC 곡선에 대한 점별(Pointwise) 신뢰구간 계산하기표본 데이터를 불러옵니다. 열 벡터 처음 두 특징만 예측 변수로 사용합니다. versicolor 종과 virginica 종에 대응되는 측정값만 사용하여 이진 문제를 정의합니다. 이진 응답 변수를 정의합니다. resp = (1:100)'>50; % Versicolor = 0, virginica = 1 로지스틱 회귀 모델을 피팅합니다. mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit'); 세로 평균화(VA)와 부트스트랩을 사용한 표본추출을 사용하여 참양성률(TPR)에 대한 점별 신뢰구간을 계산합니다. [X,Y,T] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000,'XVals',[0:0.05:1]);
점별 신뢰구간을 플로팅합니다. errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwVA','Location','Best') 항상 거짓양성률(FPR, 이 예제에서는 [X1,Y1,T1] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000);
신뢰한계를 플로팅합니다. figure() errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwTA','Location','Best') 고정할 분계점 값을 지정하고 ROC 곡선을 계산합니다. 그런 다음 곡선을 플로팅합니다. [X1,Y1,T1] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000,'TVals',0:0.05:1); figure() errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwTA','Location','Best') 입력 인수모두 축소 labels — 실제 클래스 레이블 숫자형 벡터 | 논리형 벡터 | 문자형 행렬 | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | categorical형 배열실제 클래스 레이블로, 숫자형 벡터, 논리형 벡터, 문자형 행렬, string형 배열, 문자형 벡터로 구성된 셀형 배열 또는 categorical형 배열로 지정됩니다. 자세한 내용은 그룹화 변수 항목을 참조하십시오. 예: 예: 데이터형: scores — 분류기에서 반환되는 점수 부동소수점으로 구성된 벡터일부 표본 데이터에 대해 분류기에서 반환되는 점수로, 부동소수점으로 구성된 벡터로 지정됩니다. 데이터형: posclass — 양성 클래스 레이블 숫자형 스칼라 | 논리형 스칼라 | 문자형 벡터 | string형 스칼라 | 문자형 벡터를 포함하는 셀 | categorical형 스칼라양성 클래스 레이블로, 숫자형 스칼라, 논리형 스칼라, 문자형 벡터, string형 스칼라, 문자형 벡터를 포함하는 셀 또는 categorical형 스칼라로 지정됩니다. 양성 클래스는 입력 레이블의 일원이어야 합니다. 지정할 수 있는
예를 들어, 암 진단 문제에서 악성 종양이 양성 클래스이면 데이터형: 이름-값 인수선택적 인수 쌍을 R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 예:
NegClass — 음성 클래스 목록 'all' (디폴트 값) | 숫자형 배열 | categorical형 배열 | string형 배열 | 문자형 벡터로 구성된 셀형 배열음성 클래스 목록으로,
예:
데이터형: XCrit — X 계산 기준 'fpr' (디폴트 값) | 'fnr' | 'tnr' | 'ppv' | 'ecost' | ...
주의 이러한 기준 중 일부는 두 개의 특수 분계점 예: YCrit — Y 계산 기준 'tpr' (디폴트 값) | X의 경우와 동일한 기준 옵션
예: XVals — X 기준에 대한 값 'all' (디폴트 값) | 숫자형 배열
참고
예: 데이터형: TVals — 양성 클래스 점수에 대한 분계점 'all' (디폴트 값) | 숫자형 배열양성 클래스 점수에 대한 분계점으로,
참고
예: 데이터형: UseNearest — 데이터에서 가장 가까운 값을 사용할지에 대한 표시자 'on' (디폴트 값) | 'off'지정된
예: ProcessNaN — NaN 점수를 처리하는 데 사용할 perfcurve 방법 'ignore' (디폴트 값) | 'addtofalse'
예: Prior — 양성 클래스와 음성 클래스에 대한 사전 확률 'empirical' (디폴트 값) | 'uniform' | 두 요소를 가진 배열양성 클래스와 음성 클래스에 대한 사전 확률로,
예: 데이터형: Cost — 오분류 비용 [0 1;1 0] (디폴트 값) | 2×2 행렬오분류 비용으로,
예: 데이터형: Alpha — 유의수준 0.05 (디폴트 값) | 범위 0~1에 속하는 스칼라 값신뢰한계에 대한 유의수준으로, 예: 데이터형: Weights — 관측값 가중치 음이 아닌 스칼라 값으로 구성된 벡터 | 음이 아닌 스칼라 값으로 구성된 벡터로 구성된 셀형 배열관측값 가중치로,
교차 검증을 사용하여
부트스트랩을 사용하여 신뢰한계를 계산하는 경우 디폴트 값은 1로 구성된 벡터 또는 각 요소가 1로 구성된 벡터인 셀형 배열입니다. 데이터형: NBoot — 부트스트랩 복제 개수 0 (디폴트 값) | 양의 정수신뢰한계 계산에 사용할 부트스트랩 복제 개수로,
예: 데이터형: BootType — bootci에 대한 신뢰구간 유형 'bca' (디폴트 값) | 'norm | 'per' | 'cper' | 'stud'신뢰구간을 계산하는 데 사용할
예: BootArg — bootci에 대한 선택적 입력 인수 [ ] (디폴트 값) | {'Nbootstd',nbootstd}신뢰한계를 계산할 스튜던트화 부트스트랩 신뢰구간( 예: 데이터형: Options — 신뢰구간의 계산을 제어하는 옵션 [] (디폴트 값) | statset에서 반환되는 구조체형 배열신뢰구간의 계산을 제어하는 옵션으로, 다음 표에는 사용 가능한 옵션이 요약되어 있습니다.
예:
데이터형: 출력 인수모두 축소 X — 성능 곡선의 x 좌표 벡터, fpr (디폴트 값) | m×3 행렬성능 곡선의 x 좌표로, 벡터 또는 m×3 행렬로 반환됩니다. 기본적으로,
Y — 성능 곡선의 y 좌표 벡터, tpr (디폴트 값) | m×3 행렬성능 곡선의 y 좌표로, 벡터 또는 m×3 행렬로 반환됩니다. 기본적으로,
T — 분류기 점수에 대한 분계점 벡터 | m×3 행렬
각 분계점에 대해 점수 배열에서 구한 m개의 다른 분계점에 대해 AUC — 곡선 아래 면적 스칼라 값 | 3×1 벡터
완벽한 분류기(perfect classifier)의 경우, AUC = 1입니다. 관측값을 클래스로 임의로 할당하는 분류기의 경우, AUC = 0.5입니다.
OPTROCPT — ROC 곡선의 최적 조작점 1×2 배열ROC 곡선의 최적 조작점으로, ROC의 최적 조작점에 대한 거짓양성률(FPR) 값과 참양성률(TPR) 값을 갖는 1×2 배열로 반환됩니다.
그런 다음 SUBY — 음성 서브클래스의 값 배열음성 서브클래스의 값으로, 배열로 반환됩니다.
SUBYNAMES — 음성 클래스 이름 셀형 배열음성 클래스 이름으로, 셀형 배열로 반환됩니다.
알고리즘모두 축소 점별 신뢰한계
신뢰한계를 계산할 때
대체 기능
참고 문헌[1] Fawcett, T. “ROC Graphs: Notes and Practical Considerations for Researchers”, Machine Learning 31, no. 1 (2004): 1–38. [2] Zweig, M., and G. Campbell. “Receiver-Operating Characteristic (ROC) Plots: A Fundamental Evaluation Tool in Clinical Medicine.” Clinical Chemistry 39, no. 4 (1993): 561–577 . [3] Davis, J., and M. Goadrich. “The Relationship Between Precision-Recall and ROC Curves.” Proceedings of ICML ’06, 2006, pp. 233–240. [4] Moskowitz, C. S., and M. S. Pepe. “Quantifying and Comparing the Predictive Accuracy of Continuous Prognostic Factors for Binary Outcomes.” Biostatistics 5, no. 1 (2004): 113–27. [5] Huang, Y., M. S. Pepe, and Z. Feng. “Evaluating the Predictiveness of a Continuous Marker.” U. Washington Biostatistics Paper Series, 2006, 250–61. [6] Briggs, W. M., and R. Zaretzki. “The Skill Plot: A Graphical Technique for Evaluating Continuous Diagnostic Tests.” Biometrics 64, no. 1 (2008): 250–256. [7] Bettinger, R. “Cost-Sensitive Classifier Selection Using the ROC Convex Hull Method.” SAS Institute, 2003. 확장 기능자동 병렬 지원 Parallel Computing Toolbox™를 사용해 자동 병렬 계산을 실행하여 코드 실행 속도를 높일 수 있습니다.병렬로 실행하려면 이 함수에 대한 호출에 예: 병렬 연산에 대한 자세한 내용은 자동 병렬 연산을 지원하는 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오. 버전 내역R2009a에 개발됨 모두 확장 R2022a: 디폴트 Cost 값이 변경됨R2022a부터는
|