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

 

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

- 다른 속성들을 통해서 타겟 속성의 값의 모형을 찾는 것이다.

 

-  Nonparametric modeling

    - 모델 모양이 정해져 있지 않은 모델이다

    - 모델의 구조는 데이터로부터 결정된다.

    - (ex) classificaiton 'tree' - 가지의 수, 모양 등은 데이터를 통해서 알 수 있다.

 

- Parametric modeling 

    - 모델이 정해져 있다.

    - 모델의 구조는 데이터 분석가에 의해 지정된다.

    - (ex) linear classify - y = ax + b의 모양으로, 모양은 정해져 있으며 데이터로부터 파라미터인 a, b만 찾아낸다.

 

2. Nonparametric modeling 

- 분석가가 모델의 구조를 지정하지 않는다. 데이터로부터 학습된다.

 

3. Parametric modeling (= parameter learning)

- 특정 파라미터 값이 지정되지 않은채로 모델의 구조가 정의된다.

- (ex) Y = aX + b -> a, b : parameter

 

- 주어진 훈련 데이터셋을 통해서 최상의 파라미터 값을 찾는다.

- (ex) linear regression

 

- 모델의 형식은 배경 지식이나 다른 데이터 마이닝 기술들을 통해서 결정한다.

 

- 목적은 모델 파라미터의 '최적'값을 찾아내는 것이다.

- 이때 어떤 모델이 가장 데이터를 잘 표현하는지 결정하는 것이 중요하다.

 

3-1. Classification Trees

- space는 결정 범위에 의해 여러 개의 클래스로 나눠진다.

 

- 새로운 개체가 들어왔을 때, 개체의 타겟 값은 분류된 타겟 값을 통해 결정된다.

 

- 다른 방식으로도 공간을 분류할 수 있다.

 

3-2. Linear classifier

- linear combination을 이용해서 속성을 분류한 것이다.

- linear combination은 속성 값에 가중치를 부여하여 더한 것이다. 

- (ex) 1 x Age = Balance x -1.5 + 60

- 선을 기준으로 윗 부분 :  Age > balance x -1.5 + 60, 아랫 부분 : Age < Balance x -1.5 + 60

 

3-3. classification tree vs. linear classifier

- 목표는 같다. : 타겟 속성에 대해 값을 기준으로 데이터를 분류하기 위한 모델이다.

 

- 차이점 : 구조

 

- classificaiton tree

    - 각 속성 별로 class를 분류해서 값을 집어넣는 방식이다.

 

- linear classifier

    - 여러 속성들을 가중치를 파라미터로 하여 더해서 관계성을 찾는 방식이다.

 

4. Linear Classifier

- general linear classifier 

    - f(x) = w₀ + w₁x₁ + ··· + wₙxₙ

 

- shpe of decision boundary

    - n = 2 → line

    - n = 3 → plane

    - n = 4 → hyperplane

 

- goal

    - 훈련 데이터를 통해서 가장 적절한 가중치 값을 찾는 것이다. 

    - 훈련 데이터를 잘 분류하고, 새로운 데이터도 가능한 적절하게 예측할 수 있도록

 

    - 가중치 w𝑖 가 클수록 x𝑖가 타겟을 분류하는 데 중요한 역할을 한다는 것이다. 

    - w𝑖가 0에 가까우면 x𝑖는 보통 무시되어도 괜찮다.

 

- 가중치 선택하는 일반적인 방법

    - 목표에 맞는 objective function을 정의한다.

    - objective function을 극대화 (최소화) 하는 최적의 가중치 값을 찾는다.

 

- 다음 모델들은 같은 linear 구조이지만, 다른 objective function을 사용한다. 

    - support vector machine (SVM) : classification

    - linear regression : regression

    - logistic regression : classification

 

    - 동일한 linear classifier f(x) = w₀ + w₁x₁ + ··· + wₙxₙ 를 사용한다.

 

    - (ex) svm vs. logistic regression : 둘 다 분류 모델이지만, 다른 경계를 형성한다. 

 

4-1. Support Vector Machine

- linear calssifier 모델이다. 

- 속성들의 선형 조합에 기반하여 개체를 분류한다.

 

- "margin을 최대화하는 선이 최적의 linear classifier이다"

    - margin : 각 그룹의 값들 중 가장 바깥 쪽에 있는 값을 그은 두 dash line 사이의 거리

    - margin이 가장 큰 두 선의 중간에 있는 선이 svm의 linear classifier이다.

    - 즉, 최적의 선은 두 클래스에서 모두 멀리 떨어진 선이다.

 

- misclassificaiton

    - 물론 아래와 같이 한 줄로 데이터들을 완벽하게 분리할 수 없는 경우도 많다. 

 

- original function : margine size 최대로 하는 선

- new objective function : 잘못 분류된 훈련 데이터 개체에 패널티를 부여하는 것이다.

 

 

- 패널티는 margin 경계로부터의 거리에 비례해서 부여된다.

- 이러한 방식을 'hinge loss function' 이라고 한다.

 

4-2. Linear Regression

- 데이터를 가장 잘 표현하는 linear 함수를 찾는 모델이다.

- 타겟 속성의 값을 "예측" 할 때 사용된다.

 

 

- 다른 objective function을 사용하는 많은 선형 회귀 방법들이 있다.

 

- 일반적인 절차

    - 훈련 데이터에서 각 점들에 대한 오차를 계산한다. 

    - 오차 : 선과 점 사이의 거리

    - 오차의 절댓값들을 더한다.

    - 오차의 절대합을 최소화하는 가중치를 구한다.

 

4-2-1. 최소제곱법

- 가장 일반적인 표준 선형 회귀 절차이다.

- objective function : 오차의 제곱합을 최소로 하는 가중치 w₀, w₁, ··· , wₙ 찾기

- 오차의 절댓값을 더하면 선을 다르게 해도 차이가 그리 크지 않고, 수학적 계산도 어렵기 때문에 제곱합을 사용한다.

 

- 장점

    - 더 높은 검정력으로 지수가 높아질수록 이상치의 오차가 극대화될 것이다.

    - 이차 함수는 수학적으로 다루기 쉽다. 미분해서 도함수가 0이 되는 값이 최소값이 된다.

- 단점

    - 이상치가 선을 결정하는 데 너무 큰 영향을 미친다.

 

4-3. Logistic Regression 

- linear regression 과 비슷하다. 

    - 둘 다 지도학습 알고리즘이다.

    - 둘 다 라벨링된 데이터셋을 예측하기 위한 알고리즘이다. (class 값이 정해진)

    - 하지만, linear regression은 회귀 모델이고, logistic regression은 이름은 regression이지만 분류 모델이다.

 

- 타겟이 될 "이항" 결과 (범주형 종속 변수) 와 서로 종속되어 있는 많은 속성들이 있을 때 사용한다.

- Y = aX + bZ 일 때, Y 가 타겟이고, X와 Z가 독립인 다른 속성들이다. a와 b가 파라미터이다. 

- Y는 X와 Z의 영향을 받는다.

 

- 실생활의 이항 결과들은 이러한 것들이 있다.

- game (win / loss), sales( buying / not buying), loan( default / non default ), marketing( response / no response )

 

- 새로운 개체가 관심있는 클래스에 속할 확률을 추정할 때 linear model f(x)을 이용한다.

- (ex) f(x) = 0.85 → x가 그 특정 클래스에 속할 확률이 85%이다.

 

- 하지만! 이 f(x) 함수를 logistic regression에 바로 적용할 수 없다.

- f(x) 는 범위가 (-∞, ∞) 지만, logistic regression 의 범위는 확률로 [-1, 1] 이어야 하기 때문이다.

 

그래서 오른쪽과 같이 S-Curve 형태가 나오도록 함수를 조절하여 사용한다.

 

4-3-1. logistic function p(x)

 

standard logistic function

- 다음 방정식을 따르는 s-shaped curve (sigmoid curve) 형태의 p(x) 함수를 적용한다.

- 확률값을 추정하여 return 한다.

- linear function f(x) 를 변형한 형태로, linear 함수를 사용하는 것은 맞다.

 

- ln(p/(1-p)) = w₀ + w₁x₁ + ··· + wₙxₙ = f(x)

 

- Odds 승산

    - 사건이 발생하지 않을 확률에 대한 사건이 발생할 확률이다.

    - p / (1-p)

    - (ex) probability = 0.5 → odds = 1, p = 0.9 → odds = 9

 

- log odds → ln(p / (1-p)) = f(x)

 

4-3-2. objective function

- likelihood model 최대화

probability

- Σ g(x, w) 값을 최대화 하는 w𝑖 를 구하는 것이다.

 

- g(x, w)는 x의 특징에 기반한 x의 실제 클래스를 통해 모델의 추정 확률을 반환한다.

- 이제 라벨링된 데이터셋의 모든 개체들에 대한 g(x, w) 값을 모두 더한다.

- 그리고 다른 파라미터를 가진 모델에 대해서 또 진행한다.

- 그러면 logistic regression에 대한 다양한 가중치 집합이 생성된다.

- 가장 합이 큰 모델이 데이터에 대해 가장 높은 확률을 갖는 모델이다. (가장 가능성이 큰 모델)

- 가능성이 가장 큰 모델은 평균적으로 가능한 예제들에 대해 가장 높은 확률을 반환하고, 적절하지 않은 모델에 대해서 가장 낮은 확률을 반환한다.

 

- 적용

    - 위와 같이 p(x) 확률값에 따라 개체들을 분류할 수 있다.

 

4-4. Linear regression vs. Logistic regression

Linear regression Logistic regression
연속적이고 종속적인 변수를 예측할 때 사용한다.
Regression 회귀 문제
카테고리형 (범주형) 종속 변수를 예측할 때 사용한다.
Classification 분류 문제
가격, 나이와 같은 연속적인 값을 예측한다. yes or no, 0 or 1과 같은 범주형 값을 예측한다.
output을 쉽게 예측할 수 있는 가장 fit 한 line을 찾는다. 예제들을 쉽게 분류할 수 있는 S-Cruve line을 찾는다.
정확도 측정에 "최소제곱법"이 사용된다. 정확도 측정에 "최대 가능도 방법"을 사용한다.
독립적인 변수와 종속적인 변수 사이에 반드시 선형 관계가 존재해야 한다. 꼭 선형 관계가 존재할 필요는 없다.

 

4-5. Classification trees vs. Linear classifiers

Classification tree Linear classifier
축에 수직인 결정 경계 (decision boundaries)를 사용한다. 결정 경계의 방향이 정해져있지 않다.
여러 영역으로 분류한다. 공간을 2개로 나눈다.

 

4-6. 어떤 모델이 더 좋은가..?

-  어떤 결정 경계가 가장 좋은 선택일지 아마 미리 볼 수 없을 것이다.

- 하지만 이해력의 차이가 있다.

    - logistic regression은 통계학을 잘 모르는 사람드은 이해하기 쉽지 않다.

    - decision tree는 대부분의 사람들이 이해하기 쉽다.

 

- 많은 경우 이해관계자들에게 모델을 만족시켜야 한다.

- 그렇기 때문에 성능과 이해도를 잘 조절하여 모델을 선택해야 한다.

 

5. Linear Regression 예제

- Wisconsin Breast Cancer Dataset : 유방암 진단 데이터

- 각 예는 세포 핵 이미지를 나타낸다. 

- 376개의 양성 데이터와 212개의 음성 데이터가 있다.

 

- attributes : 세포핵의 특성을 묘사한 디지털화된 이미지를 계산한다. 

    - radius, texture, perimeter, area 등의 각각의 속성에 대해서 평균, 표준편차, 최대값을 계산한다.

 

- linear equation

 

- test 결과 정확도가 98.8%이다. (6 mistakes / 588 images)

- 같은 데이터셋으로 classification tree 모델을 만들면 정확도가 99.1% 이다.

 

 

- Q1 : 정확도가 98.8%이면 좋은 결과인가 아닌가?

    - 그정도 값은 데이터 마이닝에서 많이 볼 수 있는 정확도 수치이다.

    - 그러나 실생활 문제에 대한 분류 모델 평가는 보다 복잡하고 어렵다.

 

- Q2 : classificaiton tree가 정확도가 더 높으니까 좋은 모델인가?

    - 차이는 오직 하나의 추가적인 오차로부터 발생했다.

    - 게다가, 평가된 정확도는 훈련 데이터셋으로 활용한 동일한 데이터로 평가한 것이기 때문에 높은 것이 당연하다.

 

6. Linear Classifier for Ranking Instances

- 많은 경우 단순히 개체가 클래스에 속하는지 아닌지만 예측하고 싶지 않을 수 있다.

- 한 클래스나 다른 클래스에 속할 가능성으로 순위를 매길 수있다.

- (ex) will the customer respond to this ad? → Which customers are mostly likely to respond to this ad?

 

- 이 질문을 linear classifier 을 활용해서 해결할 수 있다.

 

- 결정 경계로부터 가까우면 해당 클래스에 명확히 속하지 않는 개체이다. ( |f(x)| ≈ 0 )

- 결정 경계로부터 멀리 떨어질수록 해당 클래스에 속할 확률이 크다. ( |f(x)| >> 0 )

- 따라서 결정 경계로부터 멀리 떨어진 개체일수록 rank를 높게 매긴다. 

 

 

7. Nonlinear model

- 머신러닝의 경우 대부분의 모델이 nonlinear한 형태로 나타난다.

- f(x) = w₀ + w₁x₁ + ··· + wᵢxᵢ² + wⱼxⱼ³ + wₖxᵢxⱼ + ···

 

- nonlinear term : 곱, 나눗셈, 지수, 로그 등이 포함되어 선형으로 나타나지 않는다.

- support vector machine과 logistic regression 의 nonlinear model이다.

 

- Artificial neural network 인공 신경망

    - 복잡한 nonlinear function을 학습시킬 때 사용한다.

    - 많은 nonlinear function을 연결한다.

 

 

- nonlinear model로 flexibility를 너무 높이면, 그 모델은 훈련 데이터에 너무 적합하게 형성된다. → overfitting

- overfitting → 훈련 데이터에만 fit하고, 정작 예측해야 할 새로운 데이터에 적용하면 성능이 급격히 낮아진다.

- 따라서 우리는 훈련 데이터를 넘어서 새로운 데이터에도 잘 작동할 모델을 형성해야 한다.

+ Recent posts