필터 지우기
필터 지우기

How to use ROC FUNCTION in MATLAB

조회 수: 3 (최근 30일)
balandong
balandong 2017년 8월 12일
댓글: balandong 2017년 8월 13일
Dear Matlab user, I have difficulties in applying the ROC FUNCTION. Let have the discussion by having a simple example.
Assume, we have the true condition and predicted condition represent by the vector actual and predicted, respectively.
actual = [1;1;1;1;1;1;1;0;0;0]; % targets
predicted = [1;1;1;1;1;0;0;1;0;0]; % outputs.
Manual calculate the True positive rate (FPR) and false positive rate (FPR) yield 5/7 and 1/3, respectively. The figure below show the confusion matrix and the calculation
However, by using the ROC FUNCTION, MATLAB give 1x10 and 1x10 instead of a single value for each of the TPR and FPR (i.e., 5/7 & 1/3).
[tpr,fpr,th] = roc(actual,predicted);
In this case, I thing I have misunderstood the usage of ROC function. I really appreciate if someone can show what and how to use the ROC function, correctly
Thanks in advance.

채택된 답변

Star Strider
Star Strider 2017년 8월 12일
They apparently need to be row vectors. (I found the documentation a bit confusing, but then I do not use these functions frequently.)
[tpr,fpr,th] = roc(actual',predicted')
and using format rat, produces:
tpr =
0 5/7
fpr =
0 1/3
th =
1 0
  댓글 수: 7
Star Strider
Star Strider 2017년 8월 12일
I am having a very difficult time reconciling the information you are giving the roc function with the documentation for it. The ‘actual’ and ‘predicted’ matrices need to be the same size. This may be the reason you are having problems with it.
Please run the ‘iris data’ demo code in the roc dicumentation to see what the function expects.
balandong
balandong 2017년 8월 13일
Hi SS, Thanks for the effort and time taken to understand about the ROC function.
1) In your comment where you wrote " matrices need to be the same size", you are implying about something like
actualDouble = repmat (actual, 2);
However, executing the full code as below, still produce single value of TPR and FPR
actual = [1;1;1;1;1;1;1;0;0;0]; % targets
actualDouble = repmat (actual, 2);
P1=[1 1 1 1 1 0 0 1 0 0];
P2=[1 0 1 0 1 0 0 1 1 0];
predicted (:,1:2) = [P1' P2']; % outputs
[tpr,fpr,th] = roc(actual', predicted');
2) ‘iris data’
I had run and go through the output variable one by one. However, it is very hard to understand what exactly the output are. Compared with the example provided above where
actual = [1;1;1;1;1;1;1;0;0;0]; % targets
predicted = [1;1;1;1;1;0;0;1;0;0]; % outputs.
the value generated from the iris-data is not easily comprehend. For example
irisTargets = [1,1,1 ; ...
0,0,0 ; ...
0,0,0];
irisOutputs = [0.999,0.999,0.999; ... % value generated from the Neural Net training.
0.0002,0.0007,0.0002; ...
2.93e-07,1.010e-06,3.97e-07];
Yet, I think doing as below should agree with the iris-data example and thus answering your comment "T he ‘actual’ and ‘predicted’ matrices need to be the same size. "
actualDouble = repmat (actual, 2);
I will do some homework and update the finding here.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Detection에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by