classifire 평가
========================================================
========================================================
1. Cross Validation
========================================================
========================================================
1-1. Hold out method
--------------------------------------원리----------------------------------------------
-가장 간단하게 생각할 수 있는 방법은 hold out method라는 것임.
-> 전체 데이터를 적정 기준에 따라 2/3 정도는 training data, 1/3은 test data로 나누는 것임
----------------------------------------------------------------------------------------
*주의사항(or 문제)
1.
activity recognize를 예시로 생각해보면 앉기, 걷기 등의 데이터를 학습시킬때,
2/3를 트레이닝, 1/3을 테스트로 해야할텐데,
주로 training data에 워킹 데이터만 반영되고 test data에 시팅 데이터만 반영된다면 분류 성능이 굉장히 낮게 나옴.
-> 그러므로 training data와 test data 사이에 일정한 비중으로 똑같이 맞춰서 들어갈 수 있게 고려하여 설계해야함
=>straightification(정합)을 맞춰줘야함
2.
hold out method의 경우 한 번만 수행하면 객관적으로 판단한다고 보기 어렵기에 여러번 수행하게 됨.
그렇게 나온 성능의 결과를 평균내서 최종 classifier의 성능을 평가하게 되는데,
문제점은 어떤 데이터가 테스트에 여러번 사용될 수 있고, 어떤 데이터는 테스트에 적게 사용될 수 있는 등
테스트에 몇 번이 활용이 될지 정확히 제어하기 어려움.
========================================================
1-2. N-fold cross-validation
----------------------------------------------------------------------------------------
hold out 방법을 단점을 극복하여, 데이터를 공정하게 테스트에 한 번씩만 사용할 수는 없나?라는 의문에서 나온 방법
--------------------------------------원리----------------------------------------------
N-fold Cross-Validation (hold out 방법 개선)
처음의 데이터를 N개의 그룹으로 나눔 -> N개의 그룹 중 N-1개를 트레이닝 데이터로,
마지막 N번째 그룹 or 특정 N번의 특정 그룹 데이터는 테스트에 사용
ex)
전체 데이터 D를 3등분 -> D1 | D2 | D3로 나뉨
-> D1, D2를 트레이닝/ D3를 테스트 데이터로 사용
-> D1, D3를 트레이닝/ D2를 테스트 데이터로 사용
-> D2, D3를 트레이닝/ D1을 테스트 데이터로 사용하게 됨.
=> 모든 데이터가 1번씩만 테스트 됨 -> 가장 많이 사용
--------------------------------------의문----------------------------------------------
N을 몇으로 잡아야할까?
Rule of sum이 10, 즉 N을 10으로 잡아서 'Ten-fold cross-validation'이 클래시파이어의 성능을 반영하는데
가장 효율적이라고 알려짐. => 논문, 성능평가 등에서 'Ten-fold cross-validation'을 가장 자주 사용한다.
--------------------------------------주석----------------------------------------------
그리고 'Ten-fold cross-validation'도 straightification(정합)을 고려하여
여러 개의 클래스 데이터를 각 그룹에 골고루 반영되도록 하는 과정이 필요함.
그리고 'Ten-fold cross-validation' 또한 한 번이 아니라 여러번 반복해서 성능을 객관적으로 평가하도록
할 수 도 있음.
========================================================
1-3. Leave-One-Out Cross-validation
----------------------------------------------------------------------------------------
N-fold cross-validation의 특수한 형태
--------------------------------------원리----------------------------------------------
100개의 데이터가 있다고 가정하면, 99개를 트레이닝에 1개를 테스트에 사용
-> N개의 데이터가 있다면, N개의 그룹이 생성되고, N번의 라운드 과정을 반복해야함
--------------------------------------장점----------------------------------------------
트레이닝 데이터를 가장 크게 잡을 수 있다. (데이터를 가장 잘 활용 가능함)
--------------------------------------단점----------------------------------------------
그룹을 굉장이 많이 나누고, 여러 번 반복해야함. (연산 소모가 큼)
========================================================
========================================================
2. Bootstrap Method
----------------------------------------------------------------------------------------
그룹을 사전에 나누지 않고, 원하는 만큼의 트레이닝 데이터를 랜덤하게 데이터 중에 뽑아서 사용 (데이터 트레이닝 셋의 칸을 채움)
나머지는 테스트 데이터에 사용 => 하나의 데이터가 트레이닝에 여러 번 사용되는 가능성이 있음.
-> 어떤 데이터가 중복되어 Training Set에 들어가면 Test set은 더욱 커지게 됨 <=> 중복이 적으면 Test set은 더욱 작아짐
이것을 확률로 알아보니 Training Data에 속할 확률은 63.2, Test Data에 속할 확률은 36.8 정도임.
--------------------------------------특징----------------------------------------------
N-fold cross-validation가 90%의 데이터를 학습에 사용하는 것에 비해 63.2%로 더 적은 데이터를 학습하기 때문에 비교적 성능이 낮게 나옴.
더 많은 데이터를 학습시킬수록 classifier는 더욱 정교해지며, 정확도가 올라감
=> 이를 보정하는 과정을 거침
-> Rule of sum에서 트레이닝 데이터는 테스트에 사용하지 않는다고 했는데,
Bootstrap은 테스트 데이터에 대한 성능평가를 63%를 반영하고,
트레이닝 데이터에 대해 테스트한 결과를 36% 정도만 반영하는 방법을 이용하여
성능이 낮게 나오는 문제를 보상해줌.
*흔히 사용하진 않는다.
========================================================
결론
========================================================
Rule of Sum에 대해
데이터가 충분히 많고, 충분히 크다. => hold out method (2/3, 1/3로 나누기)
데이터가 중간 정도이다. => cross-validation
// N-fold cross-validation의 경우, 90%의 데이터를 학습시키기 때문에 적은 양의 데이터로도 충분히 모델을 잘 빌드할 수 있음
데이터가 너무 작다 => Leave-One-Out Cross-validation or Bootstrap Method
//주로 Leave-One-Out Cross-validation을 사용한다. 왜냐하면, 100개의 데이터 중 99개를 학습에 사용할 수 있음.
================================================================================================================
================================================================================================================
================================================================================================================
Classfier의 성능 평가
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이렇게 데이터를 나눴으면 이제 무엇을 재야할까??
-> 재야하는 매트릭을이 지금까지 잘 발달해왔고 정의도 잘 되어있으므로, 그것들을 잘 이해하고 활용하면 됨
================================================================================================================
1. Confusion Matric
================================================================================================================
ex)
모델의 성능을 보여주는 매트릭 중 흔히 사용되는 'Confusion Matrix'를 예시로 설명하자면
앉기, 서기, 걷기를 구분하는 클래시파이어를 만들었다면,
우리는 데이터가 있고, 그 데이터에 대해 Ground truth를 알고 있음. => 이 데이터가 앉기,걷기,서기 중 어디에 해당하는지 알고 있음.
이를 바탕으로 'Known Class ground truth'와 'Predict Class classifier'가 예측한 결과가 얼마나 잘 들어맞는지를 보여주는 것이 'Confusion Matrix'임.
=> 32개의 시팅 데이터 중 Sitting[25], Standing[5], Walking[2] 이런 식으로 알려주게 됨.
-------------------------------------------------------------------------------------------------------
Confusion Matrix |
-------------------------------------------------------------------------------------------------------
| | Predict Class |
-------------------------------------------------------------------------------------------------------
| | sitting(A) | Standing(B) | Walking(C) |
------------------------------------------------------------------------------------------------------ |
| Sitting(A) | 25 | 5 | 2 |
Known class |--------------------------------------------------------------------------------- |
(class label in data) | Standing(B) | 3 | 32 | 4 |
|--------------------------------------------------------------------------------- |
| Walking(C) | 1 | 0 | 15 |
-------------------------------------------------------------------------------------------------------
ex2)
-----------------------------------------------
Estimated class | A는 시팅, B는 논시팅 시팅 -> 시팅으로 옳게 예상 : TP 실제 행동과 일치 (시팅->시팅)
----------------------------------------------- 논시팅 -> 논시팅을 옳게 예상 : TN 실제 행동과 일치 (논시팅=논시팅, 같음)
| A | B | TP : True Positive | TN : True Negative 시팅 -> 논시팅으로 잘못 예상 : FN 실제 행동과 불일치 (시팅->논시팅, 다름)
----------------------------------------------- FP : False Positive | FN : Flase Negativex 논시팅 -> 시팅으로 잘못 예상 : FP 실제 행동과 불일치 (논시팅-> 시팅, 다름)
Actual | A | TP | TN | P : Positive
Class | B | FP | FN | N : Negative
----------------------------------------------- P+N = 전체 케이스 (Positive와 Negative의 합)
Metrics의 정의
Accuracy = (TP+TN) / (P+N) # 전체 케이스 중 몇 개를 올바르게 맞췄는가?
// (P+N) = (TP+TN+FP+FN)
Error = (FP+FN) / (P+N) # 전체 케이스 중 몇 개를 잘못 맞췄는가?
Precision = TP / (TP+FP) # 내 Classfier가 Positive라고 예측한 결과 중
-몇 개가 실제 상황과 일치하는가
=> ex) Sitting이라고 예측한 것중 실제 Sitting일 가능성을 알려줌
Recall = TP / P # 실제로 Positive한 케이스 중 몇 개를 Classfier가 탐지해냈는가 (실제 Positive 중 몇 개를 찾아낼 수 있는가)
=> ex) 실제 Sitting 중 내 Classfier가 몇 개를 찾아낼 수 있는가?
TP Rate(sensitivity) = TP / P # Recall과 같음
FP Rate(specificity) = FP / N # Precision과 같음
*****************************************************************************************
'Accuracy'라는 텀의 사용을 조심해야하는 이유
*****************************************************************************************
ex) 우울증을 탐지하는 Classfier를 만들었다고 가정
대부분의 사람들의 대부분의 케이스에서 우울함을 느끼지 않음.
실제로 우울하다고 느끼는 사람의 비율을 5%라고 가정했을때, 95%는 우울함을 느끼지 않고 5%만 우울함을 느낌
-> 이것을 Classfier에 학습했을때, 이 데이터는 우울함을 느끼지 않는 사람의 데이터라고 출력을 주는 것과 동일함
-> 이 Classfier의 성능은 전체 100개의 데이터 중 모든 사람을 다 우울하지 않다고 판단했기 때문에 95% 정확함. 즉, 정확도 95%가 나옴.
=> 결론
- 탐지하고자 하는 주요한 요소는 전혀 탐지하지 못하면서도 정확도는 95%가 나오게 됨.
-> 데이터가 skewness(비대칭)로 편중되어 있는 현상으로 이런 일이 발생하게 됨.
-> 이러한 이유로 조심해서 사용해야함. ★Accuray가 높다고 다 좋은 Classfier인지 확인할 필요가 있다.
================================================================================================================
================================================================================================================
2. F Meseure
================================================================================================================
Precision과 Recall은 많이 사용하는 방법이지만, 이것을 묶어서 한 개의 Matric으로 알고 싶을때 사용
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2
F = -------------------------
(1/Precision + 1/Recall)
================================================================================================================
================================================================================================================
3.1 ROC (Recieve-Operating Characteristic)
================================================================================================================
True Positive Rate와 False Positive Rate를 한 눈에 보여줌
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Classfier A, B, C가 있을때,
A : TPr = 0.4 | FPr = 0.3
B : TPr = 0.7 | FPr = 0.5
C : TPr = 0.6 | FPr = 0.2
이런식으로 알려준다.
TPr ↑ , FPr ↓ //True Positive rate가 높으면서, False Positive rate가 낮은게 좋은 클래스파이어라는 것을 쉽게 알 수 있음.
// 실제 Positive 한 것은 Positive라고, Negative한 것은 Negative하다고 말하는게 좋은 것이다.
흔히 Binary Classfier를 만들면 TPr과 FPr 사이 Trade off할 수 있는 '넙'들이 존재함.
그 넙을 조정해 가면서 TPr과 FPr의 비중을 보여주는 그래프를 그림.
이 그래프가 위로 향하면 향할 수록 더 좋은 클래스파이어다. 라고 얘기할 수 있음.
=> Binary Classfier에선 그런 비중을 보여주는 그래프를 따로 ROC Curve를 그림.
즉, Curve를 보여주고 전체 그래프를 보여줘야 함.
=> 2개(Curve, 전체 그래프) 를 보여줘야하는 단점이 있음.
================================================================================================================
3.2 ROC AUC (ROC Area Under the Curve)
================================================================================================================
ROC를 하나의 값으로 나타낼 수 없냐라는 의문에 만들어짐
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ROC 밑의 영역을 하나의 수치로 표현하기도 함.
이상적인 Clasffier에 가까워질수록 '1'에 근접하게 됨.
================================================================================================================
================================================================================================================
=> 6-1강 까지는 데이터를 어떤 식으로 Training Data와 Test Data로 분류를 하는지 알아보고,
어떻게 해야 Classifier의 성능을 잘 평가할 수 있을지 알아봄.
이제 나올 6-2강에서는 어떤 매트릭을 이용해야 Classfier의 Performans를 잘 평가할지를 알아보겠음.
================================================================================================================
================================================================================================================
6-2강 (Application usability
================================================================================================================
================================================================================================================
Evaluation Techniques
1. Cognitive Walkthrough
2. Heuristic Evaluation
-> Lost-cost usability evaluation method
- Doesn't use actual users
- Use "experts" (usually people in same compay)
-> Analyze usability with heuristics
- Written rules describing good/bad usability
- Heuristic can vary
Performing Heuristic Evaluation
1. Briefing
2. Evaluation Period
3. Debriefing
3. User Test:Laboratory Studies
- Laboratory Studies
- Field Studies
-> Advantages
-> Disadvantages
-> Appropriate
전자노트에 정리한 것들 복붙해서 올리는 건데.. 붙여넣기 직후에 있던 이미지가 등록버튼 누르면 안 올라가고 혹은 형식이 안 맞아서 순서가 이상해진다거나 캡처해서 올리면 너무 길어서 이미지가 깨지고 여러모로 까다롭네요..