[일반]
🕰️ 2021.10.20 07:59
classfier
조회 수 101 추천 수 0 댓글 1

단축키

Prev이전 문서

Next다음 문서

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
 

전자노트에 정리한 것들 복붙해서 올리는 건데.. 붙여넣기 직후에 있던 이미지가 등록버튼 누르면 안 올라가고 혹은 형식이 안 맞아서 순서가 이상해진다거나 캡처해서 올리면 너무 길어서 이미지가 깨지고 여러모로 까다롭네요..


List of Articles
번호 분류 제목 글쓴이 조회 수 날짜
공지 (필독) 공지 모음 / 코인(포인트) 얻는 방법 및 입문서 417 게시판관리 7309 2022.12.24
공지 커뮤니티를 홍보하고 포인트를 적립해보세요 73 update 게시판관리 3177 2023.09.20
852 자료 컴퓨터보안 위크북 연습문제 정리 3 newfile 예린지 20 2025.06.06
851 일반 가입했습니다 1 new dasadsdas 5 2025.06.06
850 일반 졸업하고 싶어요 new 컴커미 24 2025.06.06
849 질문 데이터 베이스 운영체제? 미라클i 31 2025.06.05
848 일반 가입했어요. 1 온화 4 2025.06.05
847 일반 가입 인사! 4 레알마드리드 12 2025.06.05
846 일반 알고리즘 p.63 6번 문제 해설 file asdsa 24 2025.06.05
845 일반 디지털 논리회로 워크북 질문 asdsa 20 2025.06.04
844 자료 HTML5웹프로그래밍 교재 연습문제 풀이 정리(오류 수정본 재업로드) 5 updatefile 예린지 38 2025.06.04
843 일반 문제를 풀고자 2 update leeway 26 2025.06.04
842 일반 가입 인사! 2 update 월태화용 10 2025.06.04
841 자료 HTML5 기존 기출 문제를 토대로 작성한 예상 문제 1 file 예린지 36 2025.06.04
840 일반 이번주부터 시험기간이네요 모두 화이팅입니다. 3 공부하면원 15 2025.06.04
839 질문 컴퓨터 그래픽스 어떤 식으로 문제나오는지 아시는분 계시나요? 이넘들봐라 11 2025.06.04
838 일반 디지털논리회로 다들 기말 준비 잘하고 계시나요? 2 update 꾸기꾸기 37 2025.06.04
837 그외 안녕히세요 2 딩가딩가딩 14 2025.06.04
836 일반 안녕하세요!! 3 update 머니코드 9 2025.06.04
835 일반 안녕하세요~ 2 쵸코루 11 2025.06.04
834 일반 와... 이런 사이트를 이제야 발견하다니 ㅠㅠ 4 대학썌앵 49 2025.06.04
833 일반 [공유] 컴퓨터의 이해 기말대비 요약본 9 updatefile 대학썌앵 84 2025.06.04
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 43 Next
/ 43