공지사항


학교공지방


출석체크하기
컴퓨터과학과
컴퓨터과학과 입학생, 재학생, 교수, 조교, 예비입학생분들을 위한 게시판입니다.
일반글

classfier

조회 수 19 추천 수 0 댓글 1

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
 

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

  • ?
    hyor 2021.11.03 19:46

    비회원은 작성 1년 이내의 댓글을읽을 수 없습니다.

    로그인 후에 바로 열람 가능합니다

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
Hot글 3학년 3-2 컴퓨터구조 기출문제 풀이 5년치(2010~2014) 33 file 서예지(국문과) 2021.09.09 121
공지 공부자료를 공유해주시면 다음 후배들에게 큰 도움이 됩니다. 10 file 방송대커뮤니티 2021.11.07 72
공지 포인트 코인을 얻는방법 (파일 다운로드 방법) 315 updatefile 방송대커뮤니티 2021.01.06 2044
251 3학년 2020년도 기출문제 구할 수 있을까요? 4 도련님 2021.12.03 43
250 3학년 3-2 컴파일러구성 (기말시험, 대체시험, 하계계절시험 기출문제) 2015~2019 26 updatefile 제로스 2021.11.29 43
249 3학년 3-2 컴퓨터구조 (기말시험, 대체시험, 하계계절시험 기출문제) 2015~2019 15 file 제로스 2021.11.29 40
248 2학년 2-2 선형대수 기말시험, 대체시험, 하계계절시험 기출문제 2015~2019 file 제로스 2021.11.29 13
247 2학년 2-2 자료구조 기말시험, 대체시험, 하계계절시험 기출문제 2015~2019 8 file 제로스 2021.11.29 33
246 2학년 2-2 프로그래밍언어론 기말시험, 대체시험, 하계계절시험 기출문제 2015~2019 7 file 제로스 2021.11.29 23
245 일반글 <C++프로그래밍> 교과목 기말대비 김남희 튜터님 온라인 특강 안내 제로스 2021.11.28 22
244 2학년 선형대수, 자료구조, 프로그래밍언어론(15~19 기말,대체 기출시험모음) 16 file 서예지(국문과) 2021.11.08 52
243 1학년 [컴과1] C++프로그래밍, 멀티미디어시스템, 컴퓨터과학개론(15~19 기말,대체 기출시험모음) 17 file 서예지(국문과) 2021.11.08 53
242 3학년 [컴과3] JSP프로그래밍, UNIX시스템, 데이터베이스설계 및 구현 (15~19 기말,대체 기출시험모음) 47 updatefile 서예지(국문과) 2021.11.08 82
241 3학년 [컴과3] 컴파일러구성, 컴퓨터구조 (15~19 기말,대체 기출시험모음) 14 updatefile 서예지(국문과) 2021.11.08 37
240 4학년 [컴과4] HTML5, 시뮬레이션, 인공지능(15~19 기말,대체 기출시험모음) 13 updatefile 서예지(국문과) 2021.11.08 27
239 4학년 [컴과4] 컴퓨터그래픽스, 컴퓨터보안 15~19 기말,대체 기출시험모음 1 file 서예지(국문과) 2021.11.08 8
238 4학년 [컴과4] 모바일앱프로그래밍, 소프트웨어공학, 정보통신망(15~19 기말,대체 기출시험모음) file 서예지(국문과) 2021.11.08 12
237 3학년 HTML 웹프로그래밍, 데이터베이스시스템, 디지털논리회로 (15~19기말, 대체 기출시험 자료모음) 3 file 서예지(국문과) 2021.11.08 14
236 3학년 [컴과3] (알고리즘, 운영체제 기말시험) 기출문제모음 기말,대체,계절시험 2 file 서예지(국문과) 2021.11.08 24
235 1학년 C프로그래밍, 유비쿼터스컴퓨팅개론 file 서예지(국문과) 2021.11.08 16
234 1학년 [컴과1] 인터넷과 정보사회 1 file 서예지(국문과) 2021.11.08 11
233 2학년 [컴과2] Java 프로그래밍, Visual C++ 프로그래밍, 이산수학 8 file 서예지(국문과) 2021.11.08 25
232 3학년 그래픽커뮤니케이션 기말대비입니다. 1 file 서예지(국문과) 2021.11.08 6
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13