Fascination
article thumbnail

Ch3. Introduction to Predictive Modeling: From Correlation to Supervised Segmentation

- 숙명여자대학교 소프트웨어학부 데이터사이언스개론 - 박동철 교수님


* Modeling: 새로운 데이터가 들어왔을 때 결과를 예측하기 위함

 

# Predictive Modeling

- 일반적인 과정

> data를 잘 묘사하는 model을 구축 → Bulid a model

> 새로운 data의 결과를 예측하기 위해 model을 적용시킴 → Apply the model

- 첫 번째로 classification을 고려할 수 있음

> training data를 기반으로 새로운 data가 속할 class를 식별

 

 

# Model

- 목적에 맞는 현실의 단순화 표현 → simplified representation

> 중요한 것과 중요하지 않은 것에 기초하여 단순화됨 → 목적에 맞지 않음 = 중요하지 않으므로 날려버림

> 관련 없는 정보는 추상화하고 관련 있는 정보는 보전함으로써 관련 없는 정보를 날려버림

 

 

# Types of Model: Predictive Model

- interest, 즉 target의 알려지지 않은 값을 추정하는 공식 ex) classification, regression

- The types of the formula

 

 

> Mathematical expression

ex) linear regression

 

 

 

> Logical statements (or rules)

ex) decision tree

 

 

 

# Type of Model: Descriptive Model

- 주요 목적은 근본적인 데이터에서 insight를 얻는 것

ex) clustering, profiling → Unsupervised

- 수행에서 중요한 것

> Predictive model: 예측 정확도

> Descriptive model: 알려지지 않은 insight를 가지고 지식과 이해도를 높이는 것

- 많은 model들은 두 가지 다 고려할 수 있음

 

 

# Terminology (용어)

- target attribute

> 관심 있는 속성

- instance (or example, row)

> 사실 또는 data point를 나타냄

> 속성의 집합에 의해 묘사됨 ex) feature vector

- Model

> 특정 값이 주어지면 target의 값을 반환하는 함수

- Label (or class label)

> training dataset 안에 있는 target 속성의 값 ex) yes 또는 no

 

 

# Model Induction

- 데이터로부터 model을 생성. 즉, 특정 사례에서 일반적인 규칙으로 일반화

- model은 통계적 감각 안에 있는 일반적인 규칙임 → 100% 발견되는 것은 아님

- 조건 (terms)

> Induction algorithm (or learner) → 유도 알고리즘 (학습자)

- data로부터 모델을 만드는 과정

> Training data (also called labeled data)

- model을 유도하는 데 사용되는 유도 알고리즘에 대한 input data

 


# Supervised Segmentation = classify

- 기본적인 idea

> 데이터를 target에 대한 다른 값을 가지는 하위 그룹으로 분할

- 하위 그룹 내에서, instance들은 target에 대해 비슷한 값을 가짐

> 변수의 값을 사용하여 분할을 끝내면, target의 값을 예측하기 위해 변수의 값을 사용할 수 있음

기준: gender → 다른 기준이 있을 수 O

 

 

# Selecting Information Attributes

- 정보를 제공하는 방식으로 data를 분할하기 위해, 중요한 정보를 가지고 있는 속성을 사용

 informative attribute

- Informative attribute

> target 변수에 대한 중요한 정보를 포함하고 있는 속성 / important information  객관화/수치화 가능

> target 변수를 예측하는 것을 도와줌

- ex) 아래 사람들을 yes 혹은 no로 분류하고 싶음

> 속성

- 머리 모양: 사각형 혹은 원

- 몸 형태: 직사각형 혹은 타원

- 몸 색상: 검은색 혹은 하얀색

> target 변수: yes or no

> 분할에 있어 가장 좋은 속성: 가능한 만들어진 subgroup내의 값들이 pure 해야

> pure

- target 입장에서 group이 균일할 때 → homogeneous

- target 변수에 대해 group의 모든 member가 같은 값을 가지면 그 group은 pure 함

- 적어도 한 member라도 다른 값을 가지면 그 group은 impure 함

 

 

 

# Selecting Attributes to Segment Data

- 목표: 분할의 불순도를 최대한 줄이는 속성을 찾는다 → reduce the impurity of segments

 

 

# Complications (문제)

1. 속성을 완벽하게 group으로 나눌 수 없음

어떻게 나누는 게 더 나을까?

2. 모든 속성이 2개 중 하나의 값을 가지는 것은 아님 → Not binary

- 많은 속성들이 3개 혹은 더 구별되는 값을 가짐. 이때 어떻게 비교해야 하는가?

3. 숫자적인(or 연속적인) 속성을 사용하는 data는 어떻게 나누어야 하는가?

 numerical attributes(continuous value)

 

 

# Splitting Criterion

- 각 속성이 데이터를 세그먼트로 얼마나 잘 분할하는지 평가하기 위해 공식을 만듦

> 그런 공식은 순도 척도에 기반을 둠 → based on a purity measure

- Information gain

> 기준을 나누는 가장 흔한 방법

> 순도를 측정하는 무질서도를 기반으로 함  based on entropy

 


# Entropy

- 무질서도의 척도

> segment가 target 입장에서 얼마나 불순한가?

- Entropy 방정식

> H(s): segment S의 entropy

> pi: S에서의 class i의 비율

> ex) S = {Yes, Yes, Yes, No, No}

p1(Yes) = 3/5, p2(No) = 2/5

H(S)= 3/5*log2(5/3) + 2/5*log2(5/2) = 0.97

 

 

# Intuitive Understanding of Entropy

- entropy에 대한 직관적인 이해

- entropy H(S)의 구성

> p(+)와 p(-)가 각각 S에서의 +와 -의 백분율이 되도록 함

- 관찰

> H(S)는 calss들이 균형을 이룰 때 극대화됨 p(+) = p(-) = 0.5

> H(S)는 모든 instance들이 + 또는 -일 때 최소화됨 p(+) = 0 or 1

 


# Information Gain

* information gain 값이 높은 attribute를 선택!

- attribute를 선택할 때 data는 몇몇 segment로 나눠진다

- Entropy: 해당 segment가 얼마만큼 무질서하냐에 대한 것 → 전체를 보지 못함

> 각 segment가 얼마나 불순한지에 대해서만 알려줌

- Information gain

> 속성이 생성하는 전체 분할에 대해 entropy를 얼마나 향상할 수 있을지를 측정

- entropy가 감소되면, 우리는 정보를 얻음

- entropy가 증가되면, 우리는 정보를 잃음

 

 

# Definition of Information Gain

- 방정식

> IG: parent가 children c1, c2로 나뉠 대의 information gain → 높을수록 좋음

> 각 child ci에 대한 entropy는 그 child가 속하는 instance의 비율로 측정됨

parent: 100, c1: 70, c2: 30

c1's weight: 7/10, c2's weight: 3/10

- ex1) balance attribute에 기반을 두고 data를 나눔

- ex2) Residence attribute에 기반을 두고 data를 나눔

=> ex1과 ex2를 통해 알 수 있는 점:

balance를 속성으로 했을 때가 residence를 속성으로 했을 때 보다

IG가 더 높으므로 balance 속성이 더 유익하다

 


# Numerical Variables

- 속성이 숫자인 경우 ex) 회귀 문제

> category가 있는 속성에 기반하여 데이터를 분할하는 것은 쉬움

ex) Residence → OWN, RENT, OTHER

> 속성이 숫자인 경우 우리는 어떻게 데이터를 분할해야 하는가?

- Basic idea (1)

> 하나 혹은 그 이상의 분기점을 선택해 숫자 값을 이산화 시킴 Discretize

> category가 있는 속성처럼 결과를 다룸

- Basic idea (2)

> 후보 분기점의 숫자를 선택함 → number of candidate split points

> 각 후보 분기점에 대해 information gain을 계산

여기서는 후보 분기점이 35K 일 때 가장 높은 information gain을 얻을 수 있었음

 


# Tree-Structured Segmentation

- 지금까지 우리는 데이터를 가장 잘 분할할 수 있는 정보 속성을 찾는 것에 대해 이야기함

- 다중 속성을 사용하여 데이터를 분할할 수 있는가?

- 우리는 'tree' 형태로 데이터를 분할할 수 있음

 

 

# Classification Tree (Decision Tree)

- 구조

> interior node: 속성의 test를 포함함 → referred to as decision node

> leaf (terminal) node: 분할과 그것의 분류를 나타냄

> branch: 속성의 구별된 값 (또는 값의 범위)를 나타냄

> path from the root to a leaf: 분할의 특성을 알려줌

- 기본적인 과정

ex) 예를 들어 우리가 그것의 분류가 주어진 것을 알지 못한다고 할 때

> 예시에서의 특정한 값에 기반을 한 branch를 선택하며,

root node (starting)에서 시작하고 interior node를 따라 내려옴

> terminal node에 도착하면 그것은 분류를 줄 것임

- 예시: 이 고객이 채무가 필요한 상황임. 이 고객은 돈을 잘 갚을 것인가?를 예측하는 상황

> 그 사람을 Employed = No, Balance = 115K, Age = 40이라고 분류함

> root node에서 시작해 빨간 길을 따라 움직임

> 도착한 leaf node는 class = Not Write-Off라고 지정하고 있음

> 따라서 우리는 이 사람이 채무 불이행을 하지 않을 것이라고 예측할 수 있음 → Not default

 

 

# Creating Classification Tree

- tree induction: data로부터 classification tree를 만드는 것

- divide-and-conquer 접근

> 전체 dataset을 분할하기 위해 가장 적합한 attribute를 찾음

 attribute는 information gain을 통해 얻을 수 있음

> 각 하위 그룹에 대해, 반복적으로  하위 그룹을 분할하기 위해 가장 적합한 속성을 찾음  recursively

 

 

# Classification Tree Induction

- 아래 dataset을 고려해보자

> 속성

- 머리 모양: 정사각형 or 원

- 몸 형태: 직사각형 or 타원

- 몸 색상: 검은색 or 하얀색

> target attribute: Yes or No

> 첫 번째, 전체 dataset을 몸 형태를 기반으로 분할함

- 몸 형태가 가장 큰 information gain을 만들기 때문

> 두 번째, 직사각형이 몸의 형태인 그룹을 몸 색상에 기반하여 분할함

- 몸의 색상이 body shape의 하위 그룹인 직사각형 모양에 대해 가장 큰 information gain을 만들기 때문

> 마지막으로, 타원 모양의 몸 형태를 가진 그룹을 머리 모양에 기반하여 분할함

- 머리 모양이 몸 형태의 하위 그룹인 타원 모양에 대해 가장 큰 information gain을 만들기 때문

> Final classification tree

- Summary of tree induction process

> 반복적으로 데이터를 쪼개 나감

> 각 단계에서 모든 속성을 test하고 가장 pure 한 하위

그룹을 만드는 속성을 선택하여 분할할 속성을 선택

 information gain↑, entropy ↓

- when do we stop?

> 모든 leaf node가 pure 함

> 더 이상 쪼갤 변수가 없음

→ 검사에 사용할 attribute가 더 이상 없음

> overfitting 때문에 더 일찍 과정을 멈출 수도 있음

→ overfitting: 성능을 낮춤

 

 

 

 

 

 

 

# Visualizing Segmentations

- tree는 시작적으로 눈에 잘 들어오지 않기 때문에 이를 시각화하는 과정이 필요

- visualizing segmentation classification tree가 instance의 영역을

어떻게 나누는지 시각화하는데 도움이 됨

- 시각화는 오직 2개 혹은 3개의 특징에 대해서만 가능

- 하지만 이것은 higher dimensional에 적용하기 위한 insight을 제공

 

 

# Trees as Sets of Rules

- classificaion tree 해석하기 쉽기 때문에 대중적임

> 매우 복잡한 수학적 공식이 아님

- 논리적 상태(logical statement)로 classification을 해석할 수 있음 → logical statement = rules

> root에서 leaf node까지 가는 길은 rule을 표현함

> 속성으로 구성된 각 rule AND로 연결된 길을 따라 test 함

 


# Probability Estimation (확률 추정)

- 가끔 분류보다 확률 추정을 원함

ex) 그는 채무 불이행을 하지 않음 → 그가 채무 불이행을 할 확률 = 40%, 반대의 경우 = 60%

> 더 정교한 decision-making을 할 때 사용 ex) 순위 매기기

> 같은 write-off에 classification 되어도 write-off의 확률이 51%여서 분류된 것과

90%여서 분류된 것은 느낌이 다름

- probability estimation tree

> class의 예측뿐만 아니라 각

leaf node는 class의 membership 확률의 추정치를 제공함

 

 

# Constructing Probability Estimate Tree

- classification tree를 만드는 것 대신 probability estimation tree를 쉽게 만들 수 있음

> 같은 tree induction idea를 사용함

- Frequency-based probability estimation (빈도 기반 확률 추정)

> class probability estimation을 계산하기 위해 각 leaf의

instance 개수를 사용

> leaf가 n개의 positve instance와 negative instance

m개를 가지면, 새로운 instance가 positive에 속할 확률은

아마 n/n+m일 것 임 → 빈도 기반 추정

 

 

 

# Overfitting of Probability Estimation Tree

- overfitting 문제

> instatance 수가 매우 적은 segment의 class membership 확률에 대해 지나치게 낙관적임

→ 오직 단일 instance만 가지는 leaf에서 100%의 확률이라고 할 수 있는가?

- Laplace correction

> 단순 빈도를 계산하는 것 대신 빈도 기반의 추정의 'smoothed' 버전을 사용함

→ frequency-based estimate = n/n+m

class c에 속하는 n, class c에 속하지 않는 m

분자의 +1과 분모의 +2는 점근선이 되게 하는 역할 → 점근선이 smoothed 된 버전을 의미

 

 

# Example of Laplace Correction

- leaf node의 확률

> p1: 2개의 positive와 negative는 없음

> p2: 20개의 positive와 negative는 없음

- 빈도 기반 추정: p1 = p2 = 1

- Laplace correction

> p1: 0.75 = 3/4 ((2+1)/(2+2))

> p2: 약 0.95 = 21/22 ((20+1)/(20+2))

> 같은 비율이더라도 instance의 개수가 증가할수록 확률이 증가

> p2를 p1보다 더 높게 추정

 

 

# Effect of Laplace Smoothing

- instance의 수가 증가할수록, Laplace 방정식이 빈도 기반 추정에 수렴됨

> 다른 class 비율 (2/3, 4/5, 1/1)

> 변하지 않는 선은 Laplace방정식의 점근선임

* Line: 변하지 않는 추정

* Dashed Line: Laplace 방정식이 적용됨

 


# Churn Prediction Problem

- 가지고 있는 데이터를 기반으로 이탈할 고객을 추측함

- 가지고 있는 데이터

> 20,000명의 historycal data set

> 각 고객은 아래 속성에 의해 묘사됨

- 첫 번째: 이 속성들은 각각 얼마나 좋은가?

> 이를 알아보기 위해 각 속성에 대해 information gain을 측정할 수 있음 → measure the information gain

- 고객 이탈 data로부터 학습된 classification tree

 

- House: 전체 instance 집합에 대한 가장 높은 information gain 특징

- INCOME: HOUSE subgroup(house>600469)에 대한 가장 높은 information gain 특징

- class decision에 대한 문턱 확률 = 0.5

→ prob >= 0.5 이면 class는 CHURN, 아니라면 STAY

- 언제 tree 구축을 멈춰야 하는지? (→5장에서 자세히 배움)

> 20,000개의 예시가 있다면 20,000개의 leaf를 가질 때까지 나눠야 하는가? → YES

>> 하지만 model이 복잡해지기 전에 멈춰야 함

> 이 문제는 모델의 일반성과 overfitting과 밀접한 관련이 있음

- tree의 정확성을 어떻게 측정할 수 있는지? (→5장에서 자세히 배움)

> 원래 dataset에 적용했을 때 그 정확성이 73%를 달성했다고 가정해보자

> 이것은 믿을 수 있는 수치인가? → 다른 dataset을 사용했을 때도 73% 성취율을 보일 것인가?

> 이것이 좋은 모델임을 의미하는가? → 이것은 73% 정확성을 가지는 사용하는데 가치 있는 모델인가?

 


# Summary

- Predictive modeling

> One of the main tasks of data science

> Build a model and use the model to estimate the value of a target for a new unseen example

- Finding and selecting informative attributes

> A useful data mining procedure in and of itself → 유용한 data mining 절차 그 자체

> Find those attributes that give us information about another attribute

> One basic measure is information gain, which is based on a purity measure called entropy

- Tree induction

> A common modeling technique based on selecting informative attributes

> Recursively finds informative attributes for subsets of the data

> The resulting tree-structured model partitions the space of all possible instance

into a set of segments with different predicted values for the target

결과 tree-structed model은 가능한 모든 instance의 공간을 target에 대해

서로 다른 예측 값을 가진 segment 집합으로 분할함

 

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!