관리 메뉴

물 만날 물고기

[KNIME] Node - "Nuemeric Binner" 연속형 변수를 범주화 하고 싶을 때 (구간화 Binning) 본문

KNIME

[KNIME] Node - "Nuemeric Binner" 연속형 변수를 범주화 하고 싶을 때 (구간화 Binning)

Lung Fish 2023. 2. 7. 14:43

🔍 예상 검색어

더보기

# KNIME 연속형 변수 범주화 하는 법

# KNIME 연속형 변수 구간화 하는 법

# KNIME 구간화 (Binning)

# KNIME 범주화 (Categorization)

# KNIME 이산화 (Discretization)

# KNIME Numeric Binner

# KNIME Auto-Binner

# KNIME Column Expressions

# KNIME Rule Engine


해당 포스팅은 KNIME 데이터 분석 솔루션을 사용하여 연속형 변수를 범주화하는 방법에 대해서 정리하였습니다.

 

▼ 문제

다음은 타이타닉 데이터셋의 'Age' 변수의 샘플입니다. <Before>에서 <After>와 같이 'Age' 연속형 변수를 범주형 변수로 변환해 보세요. (10대, 20대, 30대, 40대, 50대, 60대 - 6개 구간으로 범주화 해보세요)

 

▼ Numeric Binner 노드

  • <Numeric Binner> 노드는 연속형 변수를 구간을 나누어 범주화를 진행할 때 사용하는 노드입니다. 각 열에는 'bins'라는 구간의 수를 정의할 수 있고, 이러한 구간 각각에 대하여 범위와 구간이름을 설정할 수 있습니다.
 

Numeric Binner

For each column a number of intervals - known as bins - can be defined. Each of these bins is given a unique name (for this column), a defined range, and open …

hub.knime.com

Numeric Binner – KNIME Community Hub

 


▼ Workflow

해당 노드 사용방법은 지난 Missing Value 결측치 처리 워크플로우에 이어서 설명을 진행하도록 하겠습니다. 이전 포스팅이 궁금하신 분은 아래 링크를 참고하시기 바라며, 위에서 소개한 Numeric Binner 노드와 함께 같은 기능을 사용할 수 있는 Column Expressions 노드, Rule Engine 노드, 그리고 자동으로 구간을 설정하고 Binning을 해주는 Auto-Binner 노드까지 함께 설명드리도록 하겠습니다.

1. Numeric Binner 노드
2. Column Expression 노드
3. Rule Engine 노드
4. Auto-Binner 노드

 

[KNIME] Workflow - Missing Value(결측치) 확인 및 처리하기

🔍 예상 검색어 더보기 # KNIME 결측치 찾기 # KNIME missing value 찾기 # KNIME Nan 찾기 # KNIME ? 찾기 # KNIME 결측치 시각화 # KNIME 결측치 채우기 # KNIME 결측치 처리하기 # KNIME 결측치 보간하기 # KNIME Statisti

lungfish.tistory.com

[KNIME] Workflow - Missing Value(결측치) 확인 및 처리하기

※ 사용 노드 : <Numeric Binner>, <Column Expressions>, <Rule Engine>, <Auto-Binner>

 

1. 연속형 변수의 범주화의 장, 단점

먼저 데이터 분석을 진행하다가 아래와 같은 이유들로 인하여 연속형 변수를 범주화하는 것이 필요할 경우가 있습니다.

1. 해석 및 설명 관점 - 데이터를 이해하기 쉽고 설명하기 쉬움
2. 데이터 압축 - 데이터의 양을 줄일 수 있음
3. 분석 가능성 향상 - 빈도 계산이나 통계적 분석이 가능해짐
4. 패턴 탐색 - 값의 분포 패턴이나 관계를 파악하는 것이 용이함
5. 일반화 - 일반화를 통해 데이터의 오버피팅을 줄일 수 있음


다만 데이터를 범주화하는 과정에서 정보손실, 불균일한 구간 분할, 변수 간의 상관관계 무시 등 의 문제가 생길 수 있으므로 변수의 분포, 상관 관계 등을 고려하여 구간을 적절하게 선택해야 합니다.

2. Numeric Binner 노드

2.1 Numeric Binner노드를 연결하고 실행하여, 범주화가 필요한 변수를 선택하여 줍니다.


2.2 범주화가 필요한 변수를 선택하고 나면, 우측 상단에 'ADD' 버튼을 범주화할 구간의 개수만큼 클릭하여 생성해 줍니다.
생성하고 나서 우측 하단에 범주화할 구간의 이름을 입력하여 바꿀 수 있고, 우측에는 -무한대에서 +무한대까지 범주화할 구간에 숫자를 입력하여 구간을 나누어 줄 수 있습니다.


2.3 범주 구분을 완료하고, Append new Column을 선택하고(선택하지 않으면 기존 컬럼을 replace 합니다.) 컬럼명을 입력하면 아래와 같이 'Age' 변수를 범주화 한 Age_binned 컬럼이 새로 생긴 것을 확인할 수 있습니다.

 

3. Column Expressions 노드

3.1 Column Expressions 노드를 이용해도 위에서 사용한 Numeric Binner와 같은 결과를 만들 수 있습니다. 지난 포스팅들에서도 설명했었던 적이 있지만 Column Expressions 노드는 javascript 코드를 이용해 직접 조건식을 만들어서 원하는 결과를 출력할 수 있는데, 아래와 같이 범주화할 구간과 이름을 출력하도록 코드를 만들어서 실행할 수 있습니다.
(필요에 따라서 출력할 변수의 Type과 기존 컬럼의 교체유무 또는 Output Column의 이름을 입력할 수 있습니다.)


3.2 Column Expressions 노드에서 'Age' 컬럼을 범주화할 때 사용한 코드는 아래와 같습니다.

if (column("Age") >= 60) 
{"60대"} 
else if (column("Age") >= 50) 
{"50대"}
else if   (column("Age") >= 40) 
{"40대"}
else if  (column("Age") >= 30) 
{"30대"}
else if  (column("Age") >= 20) 
{"20대"}
else 
{"10대"}

 

4. Rule Engine 노드

4.1 Rule Engine 노드를 이용하는 방법도 있습니다. Rule engine노드도 KNIME 내에서 자유도가 높은 노드로 변수별 연산 또는 지금과 같이 범주화가 필요할 경우 사용할 수 있습니다. 사용방법은 좌측 테이블에서 변수를 선택하고, 하단 Expression 구간에 범주화된 값을 출력받을 수 있는 수식을 입력하면 됩니다.


4.2 Rule Engine 노드에서 사용한 script는 다음과 같습니다.

$Age$ >= 60 => "60대"
$Age$ >= 50 => "50대"
$Age$ >= 40 => "40대"
$Age$ >= 30 => "30대"
$Age$ >= 20 => "20대"
TRUE => "10대"

 

5. Auto-Binner 노드

 

Auto-Binner

This node allows to group numeric data in intervals - called bins. There are two naming options for the bins and two methods which define the number and the ra…

hub.knime.com

Auto-Binner – KNIME Community Hub


5.1 Auto-Binner 노드는 위에서 사용하였던 Numeric Binner처럼 범주화 기능을 가지고 있지만 그것과는 속성이 다른 노드라고 할 수 있습니다. Auto-Binner노드와 Numeric Binner 노드의 차이점은 아래와 같습니다.

  • Numeric Binner : 사용자가 범위와 구간개수를 지정함
  • Auto-Binne : 구간개수를 지정하면 범위 또는 빈도에 따라서 자동 분할됨


5.2 Binning Method에서 Number of bins를 통해 범주화할 개수를 입력하고, Equal을 통해 구간을 빈도수로 지정할 것인지 데이터 길이로 조절할 것인지 선택할 수 있습니다. 또 Bin Naming을 통해 컬럼을 통해서 구간 이름을 Bin1, Bin2...처럼 할 것인지 아니면 Borders나 Midpoints 형식으로 할 것인지 선택도 가능합니다.

6. Numeric Binner vs Auto-Binner 범주화 비교

다음과 같이 Numeric Binner로 범주화 했을때와 Auto-Binner로 범주화를 진행하고, Value Conuter노드를 이용해 구간별 개수를 확인하면 구간별로 분포에 차이가 있는 것을 확인할 수 있습니다.


때문에 범주화를 진행할 때 설명에 초점을 맞출 것인지 분석에 초점을 맞출 것인지 등을 고려해서 적절한 구간을 설정하는 것이 중요하다고 볼 수 있습니다.

Numeric Binner와 Auto-Binner의 범주화 분포 비교 - 좌측 Numeric Binner, 우측 Auto-Binner 사용

 

 



이상으로 연속형 변수의 범주화를 진행하기 위한 방법을 알아보았습니다. 앞서 범주화의 장, 단점을 설명드린 것처럼 범주화는 데이터를 해석 및 설명에 좋은 방법이 될 수 있지만, 잘못 사용하게 되면 그 반대가 될 수도 있습니다. 데이터 분석시 적절하게 선택하여 사용하시면 좋을 것 같다는 말씀 드리며, 포스팅 관련하여 궁금하신 부분은 댓글로 남겨주시면 감사하겠습니다.