[강의노트]_KDT_day6_260113

분류 알고리즘, 알고리즘 케이스 실습

by 아르떼

분류 알고리즘 개요

분류 목적 머신러닝 활용 영역

1) 스팸 메일 분류

2) 기업 부도 / 정상 예측

3) 고객 이탈 / 유지 예측

4) 고객 신용등급 판별

5) 특정 질병 발생 여부 예측

6) 특정 마케팅 이벤트에 대한 고객 반응 여부 예측

7) 고객의 구매 여부 예측


분류 목적 머신러닝 알고리즘 종류

K-최근접 이웃 (K-Nearest Neighbor)

특정 데이터 좌표점과 다른 나머지 데이터 좌표점들간의 거리에 기반을 두어 가장 가까운 K개점들의 목적변수(혹은 반응변수) 값들의 다수결로 분류하는 기법 - 게으른 학습(Lazy Learning)


나이브 베이즈(Naive Bayes)

베이즈 정리에 근거하여, 목적변수(혹은 반응변수)가 발생할 조건부확률을 사전확률과 우도 함수의 곱으로 표현하여 어떤 분류항목에 속할지 확률이 높게 계산되는 쪽으로 분류하는 기법. 이때 모든 관측값은 서로 다른 관측값과 통계적으로 독립적으로 발생한다고 가정 (별다른 확신 없이 가정하므로 Naive 모형이라고 부름) - 확률모형(베이즈 정리 기반 조건부확률)


로지스틱 회귀(Logistic Regression)

설정변수 값이 주어졌을 떄, 목표변수 값이 특정 부류에 속할 확률이 로지스틱 함수 형태를 따른다고 가정하여 최대 우도 추정방법으로 목표변수의 확률을 추정하는 기법 - 확률 모형(최대우도 추정법)


의사결정트리(Decision Tree)

목표변수와 가장 연관성이 높은 변수의 순서대로 불순도나 엔트로피 등이 낮아지는 방향으로 나무 형태로 가지를 분할하면서 분류 규칙을 만들어내는 기법 - 분할 정복기법(Divide & Conquer)


인공 신경망 분석(Artificial Neural Network)

인간의 뇌의 뉴런 작용 형태에서 모티브를 얻은 기법으로서, 입력 노드와 은닉 노드, 출력 노드를 구성하여 복잡한 분류나 수치예측 문제를 해결할 수 있도록 하는 분석 기법 - 블랙박스 기법


서포트 벡터 머신(Suppot Vector Machine)

특정 데이터들을 분류하는 데 있어, 서로 다른 분류에 속한 데이터간의 간격(마진)이 최대화가 되는 평면을 찾아 이를 기준으로 분류하는 기법 - 선형 및 비선형(커널트릭)


랜덤 포레스트(Random Forest)

주어진 데이터로부터 여러 개의 다양한 의사결정트리를 만들어 각 의사결정트리의 예측결과를 투표형식으로 집계하여 최종 분류 결과를 결정하는 앙상블 형태의 기법 - 앙상블 모형




K-최근접 이웃 (K-Nearest Neighbor)

K-최근접 이웃 기법은 목표 변수의 범주를 알지 못하는 데이터 세트의 분류를 위해 해당 데이터와 가장 근접한 다수의 주변 데이터의 범주를 다수결을 통해 지정하는 방식으로 분류 예측을 하는 기법이다. 이러한 K-최근접 이웃 기법에서는 해당 데이터 점과 주변 데이터 세트 간의 '유사성'을 어떻게 측정할 것인가와 최종적으로 목표변수의 범주를 분류할 때 주변 데이터 세트 몇 개를 기준으로 판단할 것인가에 대한 기준이 필요하다.


유사성(거리) 측정 방법

일반적으로 두 점간의 유클리디안 제곱 거리의 역수를 취하거나 피어슨 상관계수를 이용하여 유사성을 계산한다. 점들이 이산형 변수일 경우 자카드 계수(Jaccard coefficient)를 사용한다.


K-최근접 이웃 기법의 장점

알고리즘 이해가 쉽고 직관적.

사전 모형 설정 및 모수 추정이 필요없다.

데이터 세트의 확률분포 등에 대한 가정이 필요없다.

빠른 훈련(학습) 시간


K-최근접 이웃 기법의 단점

모형이 없으므로, 변수들간의 관계 등 가설검증이나 구조 등에 대한 분석을 통해 통찰력을 얻기 어렵다.

(특정한 가설이나 모형없이 주어진 데이터를 통해 범주의 분류결과만 판단)

K에 대한 명확한 기준 없으며 시행착오적 접근 필요

느린 분류(예측) 소요시간

많은 메모리 소요(대용량 데이터일 때 불리함)




나이브 베이즈(Naive Bayes) 기법

나이브 베이즈 기법은 목표변수의 범주를 학습시키기 위해 통계학에서 베이즈 정리를 사용한다. 즉, 나이브 베이즈 기법은 베이즈 확률 추정에 기반을 둔 확률모형이다.


1) 나이브 베이즈(Naive Bayes)는 뭐 하는 방법?

분류(스팸/정상, 합격/불합격 등) 문제에서 어떤 단서(단어, 특징)을 봤을 때 "이게 A클래스일 확률"을 계산해서 확률이 더 크 클래스로 분류하는 방법이다.

즉, 확률로 분류하는 방법이고, 그 계산의 핵심이 베이즈 정리입니다.


2) 베이즈 정리 한 줄 요약

"단서(B)를 보고 나서, 원인/정답(A)일 확률을 업데이트하는 공식"


P(A|B) = P(A∩B) / P(B) = P(B|A)P(A) / P(B)


3) 각 기호를 '말'로 바꾸면

A: 내가 알고 싶은 정답(예: 스팸이다)

B: 내가 관측한 단서(예: '반짝할인' 단어가 있다)


어떤 이메일이 스팸인지 아닌지 아직 확인하기 전에는, 그냥 경허으로 "오늘 받은 이메일 중 스팸이 있을 확률은 대략 10%정도일 것 같다"라고 생각할 수 있다.

이처럼 아무 단서(증거)를 보지 않고 미리 잡는 확률을 사전확률이라고 합니다.


나이브 베이즈 알고리즘의 장단점

장점

구조가 단순하고 학습/예측이 매우 빠름

고차원 희소 데이터(특히 텍스트)에 강함 #고차원 데이터란 컬럼이 많은 데이터, 희소 데이터는 그 컬럼에 0이 많은 데이터

데이터가 적어도 베이스라인으로 안정적

어떤 단어/피처가 영향을 줬는지 설명이 비교적 쉬움


단점

피처 독립 가정이 강해, 상관이 크면 성능 한계

수치형은 분포 가정(가우시안 등)에 민감

출력 확률이 정확한 확률로 보정되지 않을 수 있음 (캘리브레이션 필요)

0빈도 문제(학습에 없던 값)-> 스무딩 필수

불균형 데이터에서 다수 클래스 편향 주의(사전확률 / 가중치 조정 필요)




로지스틱 회귀분석

1) 로지스틱 회귀는 무엇을 예측하나?

일반 선형회귀는 숫자(연속값)을 예측합니다.

하지만 로지스틱 회귀는 0/1 같은 범주(클래스)를 맞히는 분류에서 쓰고, 직접 "0또는 1"을 뱉는 게 아니라, "1일 확률" P(Y=1)을 예측합니다.

예) 이메일이 스팸일 확률, 환자가 질병일 확률, 불량품일 확률


2) 왜 '확률'을 바로 선형식으로 못 쓰나?

확률 P는 반드시 0~1 사이여야 하기 때문에, 로지스틱 회귀는 "선형식 결과"를 바로 확률로 쓰지 않고, 중간 단계로 오즈(odds)를 사용합니다.


3) 오즈(odds)

오즈은 "될 확률 : 안 될 확률"의 비율 odds = P / 1 - P

오즈의 범위는 0 ~ 양의 무한대입니다.


4) 로그(log)를 취함

오즈는 0 ~ 양의 무한대 범위

여기에 로그를 취하면 범위가 음의 무한대 ~ 양의 무한대로 바뀜

이 값을(로그 오즈) 로짓(logit)이라고 부른다.


5) 로지스틱 회귀의 핵심 식은?


log(P / 1 - P) = b0 + b1X


6) 결국 확률은?

위 식을 역변환해서 풀면 확률 P는 S자 곡선(시그모이드) 형태로 0~1 사이에 딱 들어오게 된다.

그래서 로지스틱 함수(시그모이드)를 사용.


S자 곡선이 말하는 것

z가 아주 작으면 -> 확률은 0에 가까움

z가 0이면 -> 확률은 0.5(반반)

z가 아주 크면 -> 확률은 1에 가까움

-> 점수가 커질수록 "1일 가능성"이 커지는 구조


로지스틱 회귀분석의 장단점

장점

확률 모형이라 P(Y=1) 같은 클래스 확률을 직접 추정 가능

계수의 해석이 가능해 변수의 영향 방향/크기(오즈비)와 유의성 검정 등 통계적 해석에 유리하다.

학습이 빠르고 구현이 안정적 적절한 정규화(L1/L2)를 쓰면 과적합을 잘 제어

희소 고차원 데이터(예: 텍스트 원-핫/TF-IDF)에서도 베이스라인으로 성능이 좋은 편


단점

기본 형태는 선형 결정경계, 복잡한 비선형 패턴은 특성공학/커널/트리-신경망 없이 잘 잡기 어렵다.

특성 스케일(표준화/정규화), 다중공선성 등에 민감해 전처리/변수 선택이 중요

데이터가 불균형하거나 오분류 비용이 다를 때는, 단순 정확도보다 임계값 조정-가중치-적절한 지표(F1, PR등) 설계 필요

확률을 출력하지만, 상황에 따라 확률 보정(calibration)이 필요할 수 있다.




의사결정트리 기법

의사결정트리(Decision Tree)는 어떤 값을 기준으로 "예/아니오"처럼 질문을 계속 던지면서 데이터를 나눠 가는 분류-예측 방법입니다.


"나이가 30세 이상인가?"

예 -> 다음 질문으로

아니오 -> 다른 질문으로

이처럼 if-then 규칙이 이어지는 구조라서, 한 데이터를 트리 위에서 따라가면 "이 데이터는 어떤 조건을 거쳐서 최종적으로 어떤 분류가 되었는지"를 쉽게 확인할 수 있습니다.


예를 들어 대출 실행 여부를 판단하는 루트에서, 맨 위에 있는 '나이' 노드가 루트(뿌리) 노드라면, "대출 여부를 나누는 데 가장 먼저 가장 중요하게 보는 기준이 나이였다"는 뜻입니다.


1)불순도(impurity)란?

불순도는 한 노드 안에서 서로 다른 분류가 얼마나 섞여있느지 나타내는 값

한 노드에 한 가지 분류만 있으면 -> 불순도 낮음 (아주 깨끗함)

여러 분류가 섞여 있을수록 -> 불순도 높음

분리 후 각 노드의 불순도가 많이 줄어들수록, 잘 분리된 것이다라고 판단.


2)의사결정트리의 분리 기준

의사결정트리는 여러 후보 질문 중에서 불순도를 가장 크게 줄여주는 질문을 선택해 노드를 분리

이때 주로 사용하는 불순도 기준은

지니 불순도(Gini impurity) 엔트로피(Entropy)


3) 불순도의 직관적인 의미

어떤 분류 i가 노드 안에서 차지하는 비율을 Pi라고 하면,

Pi = 0 (해당 분류가 아예 없을 때)

Pi = 1 (해당 분류만 있을 때)

이 두 경우 모두 불순도는 0 즉, 완전히 한쪽으로 치우친 상태


반대로, Pi = 0.5처럼 여러 분류가 비슷한 비율로 섞여 있을 때 불순도는 가장 커진다.

그래프를 그려보면

불순도는 U자형(또는 포물선 형태)이며 가운데(동수로 섞인 상태)에서 최대, 양 끝(한 분류만 존재)에서 최소가 됩니다.


의사결정트리의 장단점

장점

분류 문제와 회귀 문제(수치 예측) 모두에 활용 가능하다.

결측치가 있어도 비교적 처리에 유연하며, 전처리 부담이 크지 않다.

중요 변수를 자동으로 선택하므로 변수 중요도 파악 및 추가 분석에 유용하다.

선형성 정규성 등분산성 등의 가정이 필요 없는 비모수적 모델이다.

if-then 규칙 형태로 결과를 설명할 수 있어 해석이 직관적이며, 비전문가도 이해하기 쉽다.

분류 결과에 대해 명확한 규칙 기반 설명이 필요할 때 매우 유용하다.


단점

연속형 변수를 구간 분할하여 사용하므로, 분기 경계 근처에서 예측 오차가 발생할 수 있다.

데이터가 조금만 변해도 트리 구조가 크게 달라질 수 있어 불안정하다.

과적합이 쉽게 발생하며, 이를 방지하기 위해 깊이제한-가지치기(pruning)이 필요하다.

복잡한 비선형 패턴은 표현 가능하지만, 트리가 커질수록 일반화 성능이 떨어질 수 있다.

트리가 지나치게 커지면 해석 가능성이 오히려 감소한다.




인공 신경망 분석

인공 신경망(Artificial Neural Network, ANN)은 사람의 뇌가 정보를 처리하는 방식에서 아이디어를 얻어 만든 모델. 입력값이 들어오면 여러 인공 뉴런이 이를 단계적으로 계산하고 그 결과가 출력값으로 나타나도록 만드는 모델

여러 노드가 층(layer) 구조로 연결되어 복잡한 패턴과 관계를 학습할 수 있습니다.


활성 함수(activation fuction)

활성 함수의 역할

활성 함수는 가중합 결과를 최종 출력값으로 바꿔주는 규칙

함수의 선택에 따라 신경망의 성격과 학습 능력이 달라집니다. 전통적으로 시그모이드 함수가 가장 많이 사용


망 구성 및 훈련알고리즘

시그모이드 함수(로지스틱 함수)를 활성 함수로 사용하는 단층 퍼셉트론 신경망은 구조와 계산 방식이 로지스틱 회귀모형과 거의 동일하다고 볼 수 있습니다.

즉, 입력값을 가중합한 뒤 시그모이드 함수를 적용해 0~1 사이의 확률값을 출력하는 방식입니다. 이러한 단층 퍼셉트론은 구조가 단순하고 원리도 이해기 쉽다는 장점이 있지만, XOR문제와 같은 비선형 문제는 해결할 수 없다는 한계를 가지고 있습니다.


해결 방법: 은닉층을 추가한 다층 신경망

단층 퍼셉트론에 은닉층(hidden layer)을 하나 이상 추가해 다층 신경망(Multi-layer Network) 구조로 만들면 상황이 달라집니다.

은닉층이 추가되면, 입력값을 한 번 더 변형하고 비선형 조합을 학습할 수 있게 되어 XOR처러 선형으로 분리할 수 없는 문제도 해결 가능하다는 것이 이론적으로 증명되었습니다.


인공 신경망의 장단점

장점

선형 모델로는 해결할 수 없는 복잡한 비선형 문제 강력한 성능

분류 회귀 모두 적용 가능

강한 통계적 가정을 요구하지 않아 유연한 모델링

충분한 데이터와 적절한 구조가 주어질 경우 매우 높은 예측 정확도

특정 추출을 자동으로 수행, 복잡한 패턴 학습에 유리


단점

모델 해석이 어렵고, 은닉층과 노드가 무엇을 의미하는지 직관적으로 설명하기 힘든 블랙박스 모델

나이브 베이즈, 로지스틱 회귀 등 단순 모델에 비해 학습 추론에 많은 계산 자원이 필요

과적합이 발생하기 쉬워 정규화, 드롭아웃, 조기 종료 등으 기법 필요

학습 과정에서 지역 최적해(local optimum)에 수렴할 가능성 존재

은닉층 수, 노드 수, 학습률 등 하이퍼파라미터 설정에 따라 성능 변동이 크다.




서포트 벡터 머신(Support Vector Machine)

서로 다른 분류에 속한 데이터 간에 간격(마진)이 최대가 되는 선(또는 초평면)을 찾아서 이를 기준으로 데이터를 분류하는 모델이다.


서포트 벡터 머신 기법의 장단점

장점

분류 회귀 문제 모두 활용 가능

마진에 최대화하는 방식으로 학습하므로 노이즈에 비교적 강하고 과적합에 강인하다.

분류 경계가 복잡한 비선형 문제에서도 커널 함수(kernal)를 통해 높은 성능을 낼 수 있다.

고차원 데이터에서도 비교적 안정적인 성능을 보이는 것으로 알려져 있다.


단점

최적 성능을 얻기 위해 커널 함수 선택 및 매개변수(c, y 등)에 대한 반복적인 튜닝이 필요

입력 데이터의 양이 많거나 변수 수가 큰 경우 학습 시간이 오래 걸릴 수 있다.

이론적 배경과 수학적 개념이 비교적 복잡하여 알고리즘 이해와 구현 난이도가 높은 편

결정 경계는 명확하지만, 왜 그런 결과가 나왔는지에 대한 해석과 설명은 쉽지 않다.




랜덤 포레스트(Random Forest)

랜덤 포레스트는 여러 개의 의사결정트리를 함께 사용해 예측 성능을 높이는 방법

이처럼 여러 모델의 결과를 결합해 더 좋은 예측을 만드는 방식을 앙상블(Ensemble) 학습이라고 한다.

앙상블 학습은 하나의 모델에 의존하는 것보다 예측 정확도와 일반화 성능이 더 높아지느 경우가 많다는 특징


랜덤 포레스트의 학습 방식

훈련 데이터에서 일부 데이터를 무작위로 복원 추출

추출된 데이터로 하나의 의사결정트리를 학습

이 과정을 반복해 수십~수백 개의 서로 다른 의사결정트리를 만든다.

각 트리는 서로 조금씩 다른 데이터와 조건으로 만들어지기 때문에 같은 문제라도 다양한 관점의 판단 결과를 내게 된다.

랜덤 포레스트는 단일 의사결정트리에서 발생하기 쉬운 과적합 문제를 줄이고, 데이터의 작은 변화에도 결과가 크게 흔들리지 않아 안정적이고 신뢰도 높은 예측을 제공


랜덤 포레스트의 장단점

장점

단일 트리보다 예측 정확도와 일반화 성능 우수

부트스트랩 샘플링과 무작위 변수 선택을 통해 과적합이 크게 완화

분류와 회귀 문제 모두 적용 가능

데이터 분포, 선형성, 정규성 등의 통계적 가정이 거의 필요 없는 비모수적 모델

변수 중요도를 제공하여 중요 변수 파악과 해석에 도움을 준다.

결측치나 노이즈가 존재하는 데이터에서도 비교적 안정적인 성능


단점

다수의 트리를 학습하므로 단일 의사결정트리에 비해 계산 비용과 메모리 사용량이 크다

트리 개수가 많아질수록 모델 구조 전체에 대한 직관적 해석이 어려워진다. (개별 트리는 해석 가능하지만 전체 모델은 블랙박스 성격)

매우 큰 데이터넷이나 고차원 데이터에서는 학습 및 예측 시간이 길어질 수 있다.

트리 수, 최대 깊이, 변수 선택 개수 등 하이퍼파라미터 설정에 따라 성능 차이가 발생한다.

극도로 복잡한 패턴에서는 딥러닝 계열 모델보다 성능이 제한적일 수 있다.




그래디언트 부스팅(Gradient Boosting)

한 번에 잘 맞추는 모델을 만드는 방식이 아니라, "이전 모델이 틀린 부분을 다음 모델이 하나씩 보완해 가며 점점 더 좋은 예측 모델을 만들어가는 방식"


랜덤 포레스트가 "여러 트리를 동시에 만들고 평균/투표" 한다면, 그래디언트 부스팅은 "트리를 하나씩 순서대로 만들며 오차를 줄인다"는 점이 다릅니다.


그래디언트 부스팅 장단점

장점

이전 모델의 오류를 계속 보완하므로 매우 높은 예측 성능

분류와 회귀 문제 모두 적용 가능

복잡한 비선형 패턴을 학습 가능

랜덤 포레스트보다 편향(bias)을 더 잘 줄일 수 있는 경우가 많다.

하이퍼파라미터를 잘 조정하면 최상급 성능의 모델을 만들 수 있다.


단점

모델을 순차적으로 학습하므로 학습 시간이 오래 걸릴 수 있다.

과적합에 민감하여 학습률, 트리 깊이 조절에 필수적

하이퍼파라미터(학습률, 트리 수, 깊이 등)가 많아 튜닝 난이도가 높다.

구조가 복잡해 모델 해석이 쉽지 않은 블랙박스 모델

데이터에 노이즈가 많을 경우 오히려 성능이 저하




모델 성능 측정 방법

교차 검증 (Cross Validation)

- 데이터를 여러 번 나누어 학습과 평가를 반복함으로써 모델 성능을 안정적으로 평가하는 방법

혼동 행렬 (Confusion Matrix)

- 실제값과 예측값을 비교해 모델의 예측 결과를 유형별로 정리한 표

정밀도 (Precision)

- 모델이 양성이라고 예측한 것 중 실제로 맞은 비율

재현율 (Recall)

- 실제 양성 데이터 중에서 모델이 올바르게 찾아낸 비율

F1 점수 (F1 Score)

- 정밀도와 재현율을 하나의 지표로 종합한 조화 평균

정밀도-재현율 트레이드 오프

- 정밀도와 재현율이 서로 반대 방향으로 변화하는 관계

ROC 곡선 (ROC Curve)

- 분류 기준값 변화에 따라 모델의 분류 성능을 시각적으로 표현한 곡선


혼동행렬(Confusion Matrix)


Precision(정밀도) 모델이 P라고 분류한 것 중에 실제 P인 것의 비율

Precision(정밀도) = TP / TP + FP

Recall(재현율) 실제 P인 것 중에서 모델이 P라고 예측한 것의 비율

Recall(재현율) = TP / TP + FN

Accuracy 전체 중 실제 P를 P라고, 실제 N을 N이라고 예측한 것의 비율

Accuracy(정확도) = TP + FN / TP + FN + FP + TN

F1 score Precision과 Recall의 조화평균

F1 score = 2 * Precision * Recall / Precision + Recall


AUC (Area Under ROC Curve)

ROC curve의 밑면적으로 1에 가까울수록 그래프가 좌상단에 근접하게 되므로 좋은 모델


KDT_day6_260113_알고리즘 케이스 실습

https://colab.research.google.com/drive/1fYl56KdtftHK8v8a8vi1OacXRh_P2Yj5?usp=sharing


Breast Canser Wisconsin (Diagnostic) Dataset

유방 종양의 세포 핵(nucleus) 특성을 기반으로 종양이 양성(Benign)인지 악성(Malignant)인지를 분류하기 위한 대표적인 이진 분류(Binary Classification) 데이터셋이다. 머신러닝 분류 알고리즘의 성능 비교, 전처리-특성 선택-모델 해석 실습에 매우 적합하며 교육용 데이터셋으로 널리 활용된다.

작가의 이전글[북리뷰] 4. 미치오 카쿠,<인류의 미래>