수업 출처) 숙명여자대학교 소프트웨어학부 수업 "데이터사이언스개론", 박동철 교수님

 

1. Overfitting

- 데이터 사이언스에서 가장 중요한 근본 개념 중 하나이다.

- 모델을 만들 때 너무 flexible하게 만들면 모델이 특정한 데이터셋(훈련 데이터셋)에 너무 적합해진다.

 

- 모델이 훈련 데이터셋을 넘어선 일반적인 데이터셋에는 잘 적용되지 않는 경우이다.

- 모델은 새로운 데이터 개체도 잘 예측해야 한다.

 

2. 근본적인 부작용

- 더 복잡한 모델을 사용하면 정확도는 높아지겠지만, outfitting의 가능성 또한 높아진다.

- 한번에 overfitting을 제거할 방법은 없다.

- 가장 좋은 전략은 overfitting을 인지하고, 원칙적인 방법으로 복잡도를 조절하는 것이다.

 

- fitting graph : 복잡도 함수로써 모델의 정확도를 보여주는 그래프이다.

 

- 보통 모델을 만들 때 훈련 데이터에서 일정 부분을 holdout data로 빼놓고 훈련 데이터로 모델을 만든 다음 정답을 알고 있는 테스트 데이터로 정확도를 평가한다.

- 조금 더 general한 정확도를 측정할 수 있다.

- 위의 그림에서 오른쪽이 fitting graph이다.

 

3. overfitting 인지

- 모델이 충분히 복잡하지 않을 때 : 훈련데이터와 테스트 데이터 모두에서 정확도가 낮다. → underfitting

- 모델이 너무 복잡해질 때 : 훈련데이터에서는 정확도가 높아진다. 하지만, 테스트 데이터에서는 정확도가 낮아진다. → overfitting

 

- (ex) : customer churn table model.

    - 극단적인 예시는 fitting graph가 독특할 것이다.

    - 행의 개수가 많을수록 복잡도가 커질 수 있다.

 

    - learning에 'churn' data만 넣고, 여기에 없는 데이터는 'stay' data로 인식하도록 했다.

 

    - 모델이 증가하면서 훈련 데이터의 에러는 감소하지만, 테스트 데이터의 에러는 어느 특정 값에서 시작해서 변하지 않는다.

    - 이유 : 학습을 할 때 churn data만 put했다. 그러면 테스트 데이터는 그 안에 포함되어 있지 않기 때문에 모두 'stay' data로 인식한다. 하지만 그 중에 churn data가 있을 것이다. 따라서 (holdout 'churn' data) / (holdout data) 의 값이 holdout data의 base error rate (=b) 가 된다.

 

 

4. overfitting in tree induction

- 극단적인 classification tree : 모든 leaf node들이 pure할 때까지 데이터를 나눈 tree

    - 정확도는 100% 일 것이다.

    - overfitting 되었을 확률도 ^^..

 

- tree 모델의 복잡도는 노드의 개수에 비례한다.

    - tree 노드 개수에 제한이 없다면 어느 정확도에도 맞출 수 있을 것이다.

    - 따라서, tree가 자람에 따라 overfit 되는 경향이 있다.

 

- fitting graph for tree induction

    - ex) tree가 모집단의 특징이 아니라 훈련 데이터의 디테일한 부분을 고려하기 시작했을 때..

    - holdout data의 정확도가 떨어지는 순간 (= overfit이 시작되는 순간) 을 "sweet spot" 이라고 한다.

    - 그러므로 위의 경우 노드가 100개 정도 되는 순간부터 overfitting이 된다고 볼 수 있다.

    - 따라서 우리는 tree의 크기를 이 사이즈 (100) 로 제한해야 한다.

 

    - 하지만, 이론적으로 sweet spot을 정확하게 찾을 방법은 없다.

    - 따라서 이 부분은 데이터 과학자의 경험에 의해 결정해야 한다.

 

5. overfitting in mathematical functions

- 수학적 함수를 복잡하게 만드는 한 가지 방법은 변수나 항의 수를 늘리는 것이다.

 

 

- 더 많은 속성들을 사용하면서 모델은 훈련 데이터에 더 적합해질 수 있다. ( + overfitting 위험성)

- 즉, 변수나 항을 늘릴수록 훈련 데이터셋에서의 정확도는 증가한다.

 

- overfitting을 피하기 위해서는 오직 정보를 얻을 수 있는 유용한 속성들만 사용하고, 

- holdout technique을 활용해서 overfitting을 확인할 수 있다.

 

6. Holdout Evaluation

- 모델을 만들 때 holdout data를 빼놓고 형성한다.

- holdout data를 가지고 모델의 정확도를 평가한다.

- 목표는 모델의 일반화 성능을 추정하는것이다. 

- 답을 알고 있고, 훈련할 때 사용하지 않았기 때문에 정확도를 평가할 수 있다.

 

- 문제 

    - 이 테스트로부터 얻은 성능의 추정값은 단지 한번의 테스트를 통한 추정값이다.

    - 한 번의 추정만으로 모델 정확도에 확신을 얻는 방법은 운이 좋게 테스트 데이터를 한번에 잘 고르는 방법이 있겠다.

 

7. Cross-Validation (CV)

- holdout evaluation 의 더욱 정교화된 방법이다.

- holdout 평가를 여러번 진행한 뒤 그것의 통계값을 이용하는 방법이다.

 

- 추정된 성능에 대해 몇가지 통계값을 얻을 수 있다.

    - mean 평균 : 평균적으로 어느 정도의 성능이 예상되는가

    - variance 분산 : 데이터셋마다 성능이 얼마나 다른가

 

- k-fold cross-validation : 데이터셋을 k번으로 나누어서 나눈만큼 평가를 반복하는 방법이다.

 

- (ex) predict which customers are going to churn

    1) information gain

 

    2) classification tree

 

    3) 언제 tree building을 멈추는가?

        - 그렇게 복잡해지기 전에 멈춰야 한다.

        - 이 문제는 model generality와 overfittingr과 밀접한 관련이 있다.

 

    4) tree를 원래 데이터셋에 적용했을 때 정확도가 73%이다.

        - 이 값을 믿을 수 있는가?  다른 데이터셋에 적용해도 73%가 나올까?

        - 정확도가 73%인 것이 이 모델이 좋다는 의미인가? 좋지 않다는 의미인가?

 

8. Learning Curves

- 일반적으로, 모델의 일반화 성능은 어떠한 지점까지는 훈련 데이터 수를 증가시킴으로써 가능하다.

- learning curve : tree와 logistic regression에서 훈련 데이터 크기에 따른 일반화 성능을 나타낸 그래프이다.

 

 

- observations

    - decision tree가 logistic regression에 비해 더 유연하다.

    - 크기가 작은 데이터셋에 대해서는 logistic regression이 더 낫다. 

    - 크기가 큰 데이터셋에 대해서는 tree가 더 nonlienar 관계를 잘 표현한다.

 

- learning curve vs. fitting graphs

    - learning curve : 훈련 데이터의 일반화 성능을 보여준다. (x축 : training data 양)

    - fitting graph : 훈련 데이터 성능과 holdout 데이터 성능 2가지 모두 보여준다.  

 

9. Overfitting Avoidance and Complexity Control

- Regularization : 가장 대표적인 overfitting avoid 방법, 모델의 복잡도를 줄이는 방법이다.

 

9-1. for tree induction

- main problem

    - leaf node들이 순수해질 때까지 tree를 키우는 것

    - 이로 인해 크고 복잡한 데이터가 데이터에 맞지 않을 수 있다.

 

- 3 regularization

    - 더 복잡해지기 전에 멈추기

    - 충분히 tree 크기가 커질 때가지 키운 다음에, '가지치기' 해나가면서 다시 사이즈 줄이기

    - 서로 다른 크기를 가진 tree를 여러 개 만든 다음, 최선의 모델 선택하기

 

1) limit tree size

- 분할된 leaf node에 들어갈 개체의 최소 개수를 정해둔다. 

- 즉, 최소 개수 이하의 수가 되면 더이상 분할하지 않는다.

 

 

- 이 경우, 최소 개수를 20개로 정했기 때문에 각 그룹의 개체 수가 20개 이하가 되었을 때 growing을 멈췄다.

 

2) Prune An Overly Large Tree

- node와 branch들을 잘라내고, 그자리를 leaf node로 바꾸는 방법이다.

- 대체했을 때 정확도가 낮아지지 않을 때까지 진행한다.

- 성능이 떨어지지 않을 때까지 하위 그룹에서 반복되며 진행될 수 있다.

 

 

3) Build Many Trees And Pick The Best

- tree를 많이 만들어놓고, 그 중 가장 정확도가 높은 tree를 택하는 방법이다. 

 

9-2. for linear models

- 항이 많을수록 복잡하다.

 

1) Sequential forward selection (SFS)

- 순차적으로 항을 한 개씩 골라서 성능을 테스트한다. 그 중 가장 정확도가 높은 xᵢ를 선택하여 f(x) 에 넣는다.

- 그 다음, 처음으로 추가한 항을 포함하여 또 한 개의 항을 골라서 성능을 테스트한다. 그 중에서 가장 성능이 좋은 xᵢ를 선택하여 f(x) 에 넣는다.

- 이 과정을 계속 반복한다.

- 항을 추가하는 것이 테스트 데이터에서의 정확도를 더이상 높이지 않을 때까지 반복한다.

 

2) Sequential backward elimination (SBE)

- 위의 과정을 반대로 진행하는 것이다.

- 전체 f(x)에서 항을 한 개씩 선택하여 제거한 후 성능을 테스트한다.

- 제거했을 때 가장 성능이 좋은 xᵢ를 선택하여 제거한 후, 그 다음 또 항을 한 개 골라서 제거하고 성능을 테스트한다.

- 이 과정을 계속 반복한다.

- 마찬가지로 항을 제거하는 것이 더이상 정확도를 높이지 않을 때까지 반복한다.

 

10. Nested Cross-Validation

- 중첩된 CV

- 모델의 복잡도를 가장 크게 좌우하는 파라미터가 무엇인지 모를 때 사용한다.

- (ex) decision tree → number of nodes, linear model → number of features ···

 

- 즉, 복잡도 파라미터의 최적값을 찾기 위해 사용한다.

- (ex) What is the best number of nodes in a decision tree?

 

- 중첩된 loop 를 이용한다. (outer & inner loop)

    - outer loop :  만들어진 모델의 일반적인 성능 측정한다. (k-fold CV)

    - inner loop : best complexity parameter 찾아낸다.

 

    - inner loop → outer loop

 

- 단점 : inner loop 개수가 많을수록 실행 시간이 매우 길어진다.

 

 

 

 

 

 

 

 

 

 

수업 출처) 숙명여자대학교 소프트웨어학부 수업 "데이터사이언스개론", 박동철 교수님

 

1. Predictive Modeling 예측 모델

 

- 일반적인 절차

    - training data를 가장 잘 표현하는 모델 설정

    - 새로운 데이터에 모델 적용하여 결과 예측

 

- 아마 처음으로 classification을 생각할 것이다.

    - 새로운 데이터가 어느 클래스에 속할지 training dataset을 기반으로 확인한다.

    - (ex) 이 고객이 회사를 금방 떠날 것 같은가? → YES / NO

 

2. Model

 

- 현실을 목적에 맞는 것만 남도록 간략하게 표현한 것이다. 

- 중요한 것과 중요하지 않은 것을 기반으로 간략화한다.

- 부적절한 정보는 날리고 관련이 있는 데이터들만 남긴다.

- (ex) 지도, 청사진 

 

2-1. Predictive Model

- 타겟에 대해 모르는 값을 추정하는 공식이다. 

- 예측의 정확도로 성능을 평가한다.

- 수학적인 표현(ex: linear regression)과 논리적인 표현(ex: decision tree)이 있다.

 

2-2. Descriptive Model

- 데이터에 내재되어 있는 인사이트를 얻는 것이 주 목적인 모델이다. 

- 즉, 예측"값"을 얻는 것이 목적이 아니다.

- 예시로는 clustering, profiling 등이 있다.

- 도출된 지능과 이해가능성으로 성능을 평가한다.

 

- 많은 모델들이 두가지 목적을 모두 제공할 수 있다. 

 

3. Model Induction 모델 유도

 

- 데이터로부터 모델 유도

    - 특정한 사례를 일반적인 규칙으로 일반화하는 것이다.

 

- 모델은 통계학적 의미에서 일반적인 규칙이다.

    - 항상 100% 맞진 않는다.

 

- Induction algorithm 유도 알고리즘 (leaner) : 데이터로부터 모델을 형성하기 위한 절차이다. 

- Training data 훈련 데이터 (labeled data) : 모델을 유도하기 위해 유도 알고리즘에 대입하는 데이터이다. 이미 라벨 값을 알고있다.

 

4. Supervised Segmentation 지도 분할

4-1. Basic idea

- 타겟에 대해 서로 다른 값들을 갖는 하위 그룹으로 분할하는 방법이다.

- 즉, 그룹끼리는 타겟에 대해 같은 (비슷한) value를 가진다.

- 분할에 사용된 변수 (값, attribute) 를 예측의 타겟 속성으로 사용할 수 있다.

 

 - 데이터를 가장 잘 분류할 수 있는 속성을 선택하는 것이 중요하다.

 

4-2. Selecting Information Attributes

- 효과적으로 데이터를 분류하기 위해서는 유용한 속성을 사용해야 한다.

- 유용한 속성은 해당 변수에 대해 중요한 값을 갖는 속성이다.

- 즉, 타겟의 값을 예측하는 것을 도와줄 수 있는 속성이다.

 

- (Ex)

- 사람들을 'yes' 와 'no'로 분류하고자 한다.

- 속성

    - 머리 : 정사각형 / 원

    - 몸 : 직사각형 / 타원

    - 몸 색 : 검정 / 하양

 

- target variable : 체납 여부 - yes / no

 

- 어떤 속성이 사람들을 yes와 no로 가장 잘 분류할 수 있을까?

- 우리는 그룹을 가능한 pure하게 분류하고자 한다.

 

- pure 

    - 그룹이 타겟 값에 대해 동일한 값을 갖는 상태를 말한다.  

    - 하나의 멤버라도 다른 값을 가지면 그 그룹은 impure하다고 말한다.

 

- 문제

    - 속성이 완벽하게 그룹으로 분리되는 경우는 거의 없다. 

 

        - 머리 모양과 몸 색을 각각 그룹을 분리한 결과이다. 어떤 속성이 더 그룹을 잘 분리한 것일까?

 

    - 모든 속성이 위의 예제처럼 2가지로 나누어지는것은 아니다. 더 많은 경우에는 어떻게 분리할 수 있을까?

    - (연속적인) 숫자 값을 가지는 속성은 어떻게 분류하는 것이 좋을까? (ex: 나이)

 

- 분류 기준

    - 속성이 데이터를 얼마나 잘 분류하는지를 평가하는 공식을 만들 수 있다.

    - 그 공식은 '순도'에 기반할 수 있다. 

 

- Information Gain

    - 가장 대표적인 분류 기준이다.

    - 순도를 측정하는 "엔트로피"에 기반한다.

 

- Entropy 무질서도

    - 무질서도를 측정하는 기준이다. 타겟의 관점에서 분류가 얼마나 impure하게 되었는지 측정한다.

    - H(S) = Σ p𝑖 log₂ (1/p𝑖)

        - p𝑖 : S에서 𝑖를 가질 확률 (Σ p𝑖 = 1)

        

    - (Ex) 

    - attribute S = {yes, yes, yes, no, no} → p₁(yes) = 3/5, p₂(yes) = 2.5

    - H(S) = 3/5 log₂(5/3) + 2/5 log₂(5/2) = 0.97 → very impure

 

plot of entropy H(S)

 

4-3. Information Gain

- 엔트로피는 각각의 분할이 얼마나 impure한지만 측정한다.

- 즉, 한 개의 속성만 고려한다.

 

- information gain은 속성이 만드는 전체 분할에 대한 엔트로피 증감 정도를 측정한다.

    - 엔트로피가 감소하면 유용한 정보이고, 엔트로피가 증가하면 정보를 얻을 수 없는 속성으로 분할한 것이다.

 

- IG = H(parent) - [ Σ p(c𝑖) ·H(c𝑖) ]

    - 각 child (분류된 그룹)에 대한 엔트로피는 각각의 그룹에 속하는 인스턴스의 비율에 가중된다.

- Information Gain 값이 클수록 유용한 속성이다. 

 

4-4. Numerical Variables

- 회귀 문제와 같이 속성 값이 "숫자형"인 경우는 카테코리값을 가진 속성보다 분류하기 어렵다.

 

1) Discretize 이산화

    - 한 개 이상의 분할점을 선택해서 숫자 값을 이산화하는 방법이다.

    - 그 후 카테고리형 속성과 같이 다룰 수 있다. 

 

2) 여러 개의 후보 분할점을 고르는 방법

    - 각각의 후보 분할점에 대해 IG 를 계산한 후 가장 IG 값이 큰 경우를 선택하는 방법이다. 

 

 

5. Classificaiton Tree Segmentation

-  여러 개의 속성을 사용해서 데이터를 분류하는 방법이다. → 트리 모양

 

- structure

    - interior node : 분류의 기준이 되는 속성 이름이다.

    - leaf node : 분류된 class(결과?)를 말한다.

    - branch : 속성의 구분되는 값을 말한다. (분류 기준, 범위)

    - path from the root to a leaf : 분류의 특징을 설명하는 길이다.

 

 

- procedure

    - 분류 값을 모르는 예시들이 있다.

    - root node에서부터 예시들의 특정 속성 값들로 branches를 선택하면서 interior nodes를 타고 내려온다.

    - terminal node (leaf node)에 도달하면 그것은 분류가 된 것이다.

 

- (ex)

    - balance = 115K, employed = no, age = 40 인 사람을 분류해보자.

    - root node인 employed 부터 no, ≥50K, <45 path를 따라서 내려온다.

    - 결과적으로 class = Not Write-off 로 특정된 leaf node에 도착한다.

    - 따라서 우리는 그 사람이 체납하지 않을 것이라고 예측할 수 있다.

 

- divide-and-conquer approach 

    - 전체 데이터셋을 나누기 가장 좋은 속성을 찾는다.

    - 각 서브 그룹에 대해서 재귀적으로 가장 좋은 속성들을 찾아나간다. 

 

- (ex) 위의 사람모형 예시

    - 일련의 과정에서 IG 값의 크기에 따라 큰 순서대로 몸 모양 - 몸 색 - 머리 모양 순으로 그룹을 분류한다.

 

그 결과 위와 같은 classification tree를 얻을 수 있다.

 

- 요약해보면, 데이터를 재귀적으로 나누는 과정이다.

- 각 과정에서 모든 속성을 테스트하고 그룹을 가장 순수하게 나누는 (IG값이 큰) 속성을 선택한다.

 

- 멈추는 단계는 모든 leaf node가 pure할 때, 변수를 끝까지 나눴을 때 등이 있지만, 이렇게까지 나누면 모델이 overfitting될 것이다. 

 

6. Visualizing Segmentation

- classification tree 결과를 공간 상에 시각화할 때 사용한다.

- 하지만, 시각화는 두세개의 특징으로만 가능하다.

- 그럼에도 고차원 공간까지 적용할 수 있는 인사이트를 얻을 수 있다.

 

7. 규칙

- classification tree는 구현하기 쉽기 때문에 자주 사용되며, 수학적 공식이 그렇게 복잡하지 않다. 

- 논리적 문장으로 classification tree를 구현할 수 있다.

    - 각각의 path가 statement가 된다.

    - 각 sement는 path와 "AND"로 구성된다.

 

 

8. 확률 추정

- 단순한 분류보다 확률 추정을 할 때

- (ex) he will not write-off → the probability of him writing-off = 40%

- ranking과 같이 더욱 정교한 의사결정을 해야할 때 사용할 수 있다.

 

- Frequency-based propbability estimation

    - 확률을 추정하기 위해 각 leaf 에서의 개체 수를 사용한다.

    - leaf에서 그에 해당하는 개체 (positive) 가 n개, 해당하지 않는 개체 (negative) 가 m개라면, 새로운 개체가 그에 해당할 확률은 n/(n+m)이 된다.

 

8-1. overfitting problem

- 개체 수가 아주 적은 분류 그룹의 확률은 굉장히 높아질 수 있다. 

    - (ex) 개체 수가 1개인 그룹은 무조건 100%가 나올텐데, 그것이 좋은 분류라고 할 수 있을까? - 다른 그룹의 개체 수가 나머지 99개인 경우?

 

8-2. Laplace correction 라플라스 보정

- 단순히 빈도를 계산하는 대신, 빈도수 기반 추정치의 smoothed된 버전을 사용하는 것이다.

 

- (ex) p₁ : 2 postitive, no negative, p₂ : 20 positive, no negative

    - frequency-base : p₁ = p₂ = 1

    - laplace correction : p = 0.75, p₂ ≈ 0.95

 

- 개체 수가 증가할수록 라플라스 방정식은 빈도수 기반 측정값에 수렴한다.

+ Recent posts