유사도(Similarity)와 거리(Distance)


유사도는 객체를 특징벡토로 표현하는 것으로 시작합니다. 특징을 정의하는 공간에서 두 객체가 가까울수록 두 객체는 더 비슷하도고 할 수 있습니다. 거리가 가까우면 유사하고 거리가 멀면 유사하지 않습니다. 즉 0에 가까울 수록 유사하다 할 수 있고 1에 가까울수록 유사하지 않다고 할 수 있습니다.


유클리드 거리


유클리드 거리는 두 가지 객체의 특징을 2차원 공간에서 (x,y)로 A, B라는 점으로 표현하고 각각의 좌표를 직각 삼각형으로 연결하고 사선의 변을 연결한 A와 B의 거리를 유클리드 거리라고 합니다. 단, 유클리드 거리는 2차원에 국한되지 않고, 3개의 특징을 가진 객체라면 (x,y,z)로 표현할 수 있습니다. 쉽게 말하자면, 어릴 때 부터 배워온 그 거리 개념으로 x, y축으로 나타내는 그 공간을 유클리드 공간이라고 생각하시면 됩니다.


최근접 이웃 추론(Nearest Neighbor)


최근접이웃이란 가장 비슷한 객체를 말합니다. 최근접 이웃 추론은 연관규칙분석의 하나로 연관성이 높은 객체들로 구성된 규칙집합을 생성합니다. 주로 추천 시스템에 사용되고 "장바구니 분석"이라고도 불립니다. 

유클리드 거리


타겟 변수를 예측하려는 데이터를 받으면 훈련세트에 있는 모든 데이터를 조사해 예측하려는 데이터와 가장 비슷한 데이터를 몇 개 찾아냅니다. 그 다음 타겟 값을 알고 있는 최근접 이웃에 기반한 새로운 데이터의 타겟값을 예측하면 되는 것입니다.


그렇다면 최근접 이웃 추론을 하기 위해서는 얼마나 많은 이웃이 필요할까요?


두 계층의 문제의 경우 다수결로 투표할 때 동점이 되지 않도록 홀수를 사용합니다. 최근접 이웃의 알고리즘은 종종 3-NN, K-NN형태의 약자로 표현합니다. 이때 K는 이웃의 개수를 의미하며, K가 커질 수록 이웃과 잘 어울릴 확률이 높아집니다. 하지만 K가 너무 커지게 되면 과적합화를 피할 수 없게 되므로 k를 1부터 늘여나가면서 가장 성능이 좋은 K를 찾아야 합니다.

가중치 적용투표, 유사도반영투표

이웃 표본개수를 확정했더라도 표본과 이웃의 거리가 다른 점 또한 간과할 수는 없습니다. 최근접 이웃의 레이블에 거리에 대한 가중치를 반영한 것이 가중치 적용투표, 유사도반영투표라고 합니다.


기하해석, 과적합, 복접도 제어

최근접 이웃기법을 시각화한 것으로 객체공간을 체계적으로 조사하여 각 점으로 분류하고 분류가 바뀌는 경계점을 만들어가면서 계산할 수 있습니다. 다르게 분류된 객체 사이에 점선을 그으며 들쭉날쭉한 도형이 생성되는데 일반적으로 모든 최근접 이웃 분류자의 경계선은 불규칙적인 반면, 객체 공간 훈련에 사용된 데이터에 딱 맞는 경계선이 만들어집니다. 하나의 섬처럼 표현된 객체는 일종의 노이즈나 외곽객체라고 볼 수 있습니다.


k-NN분류자에서 k는 복잡도를 나타내는 지표이며, k=1일 경우 매우 복잡한 모델을 얻게 됩니다.


최근접 이웃방법의 문제점


1. 모델 명료성

모델명료성에는 결정에 대한 정당성과 전체 모델의 명료성 두 가지 측면이 있습니다. 최근접 모델은 데이터로부터 어떤 지식을 마이닝해서 알아냈는지, 깊이 있게 설명하는 일은 어렵습니다. 따라서, 최근접 이웃모델에 담겨진 지식은 일반적으로 이해하기 어려우므로 명료성과 정당성이 중요한 경우에 최근접 이웃 모델은 맞지 않는 경우가 많습니다.


2. 차원 및 영역지식

고객 DB에는 여러가지 정보가 저장되어 있습니다. 예를 들어 신용카드에 가입할 지 안할지 여부와 관련이 있을 수 있지만 관련이 없는 정보도 다수 포함하고 있습니다. 이 문제는 차원이 높아서 발생하는 고차원문제라고 하며 차원수의 저주(Curse of Dimensionality)라고 합니다. 간단히 말해 거리를 계산할 때 모든 속성을 포함시키면 관련 없는 속성들이 객체에 너무 많은 영향을 주 객체 유사도 측정에 혼란을 일으키게 되는 것을 말하며, 해결방법으로는 특징을 신중하게 결정해 데이터 마이닝 모델에 포함할지를 결정하는 특징선택(Feature Selection)과 속성마다 서로 다른 가중치를 부여해 거리함수를 조절하는 방법이 있습니다.


3. 계산효율성

객체와 가장 가까운 이웃을 찾기 위해 DB를 검색함으로 대부분의 계산은 예측 및 분류 단계에서 발생하는 데 이 때 계산량이 엄청나게 많아 처리 부담이 발생하게 됩니다. 따라서 수십미리초 안에 계산해야하는 온라인 타겟광고 등에는 최근접 이웃기법을 사용하기 어렵습니다.


유사도 및 이웃에 관한 주요 세부사항


이질적인 속성


지금까지 유클리드 거리를 이용해 거리 계산만 하였으라 속성이 추가된 사례가 있습니다. 예를 들면 나이와 화폐가치를 들 수 있는데 속성간의 단위를 차별화 하지 않으면 소득의 10원과 나이의 10살을 동일하게 처리하게 됩니다. 최근접 이웃에 기반한 시스템은 데이터 전반부에서 변수 값의 규모나 단위를 조정하거나, 고정된 개수의 항목에 배분하는 전처리 작업이 수반되어야 합니다.


다양한 거리 함수


유클리드 거리(Euclidean Distance)(L2-Norm)

앞서 말했듯이 가장 널리 사용되는 거리 측정법입니다.


맨하탄거리(Edit Distance)(L1-Norm)

격자형으로 된 맨하탄 시내 같은 곳에서 두 점 사이에 이동하는 거리 측정법으로 '가로이동거리+세로이동거리=전체이동거리' 입니다.

빨간색 거리 = 파란색 거리


자카드거리(Manhattan Distance)

객체 집합간의 거리를 표현하는 것이며 두 집합이 얼마나 유사한 지 알 수 있기때문에 양쪽 객체 모두에게 있는 특징은 중요하지만 한쪽에만 있는 특징은 중요하지 않은 경우에 사용합니다.


코사인거리(Cosine Distance)

두문서의 유사도를 분류할 때 사용되는 거리로 텍스트를 분류할 때 어떤 문서가 다른 문서보다 훨씬 길다는 점을 무시하고 단지 내용에만 집중하고자 하는 경우 사용합니다.



편집거리(Edit Distance), 레벤쉬타인 거리(Leveinshtein Distance)

문자열 간의 거리 측정할 때 사용되며 글자를 변환하고 치환하는 편집연산을 활용해 한 문자열을 다른 무자열로 변환하기 위한 편집횟수를 계산하고 혼합하여 전체적인 유사도를 구합니다. 때문에 두 문자열이 얼마나 비슷한 지 확일할 때 사용되며 편집하는 데 걸리는 편집 횟수를 측정하여 편집거리를 구할 수 있습니다.



2017/06/03 - [Cyong's 마케팅/Data Science] - [Data Science] Ch.5 과적합화

2017/05/28 - [Cyong's 마케팅/Data Science] - [Data Science] Ch.4 데이터에 대한 모델 적합화(수학 함수를 이용한 회귀분석과 로지스틱 회귀분석)

2017/05/27 - [Cyong's 마케팅/Data Science] - [Data Science] Ch.3 데이터에 대한 모델 적합화(수학 함수를 통한 분류)

2017/05/24 - [Cyong's 마케팅/Data Science] - [Data Science] Ch2. 트리구조모델

2017/03/25 - [Cyong's 마케팅/Data Science] - [Data Science] Ch1. 예측모델링_정보전달하는 속성 찾아내기



일반화


모델이나 모델링 프로세스의 특성윽로서 모델 제작에 사용되지 않은 모든 데이터에도 모델을 적용할 수 있는 성질을 뜻합니다.


과적합화


어떤 데이터 세트를 관찰해봄으로써 그 데이터 안에 존재하는 패털을 발견하게 되는 것으로 모델 복잡도와 과적합화 문제는 근본적으로 동전의 양면과 같은 관계입니다. 과적합화 문제는 알아내기도 쉽지 않을 뿐더러 안다하더라도 과적합화 되지 않는 데이터 마이닝 절차를 사용할 수 있는 것도 아닙니다. 과적합화를 한번에 해결할 수 있는 방법이나 절차가 없기 때문입니다.


과적합화 검사


적합도 그래프

모델 복잡도에 따른 모델의 정확도를 보여주는 그래프입니다.

예비 데이터(Holdout) : 타겟 변수값을 예측할 실제 데이터는 아니지만, 실험실에서 모델의 일반화 성능을 측정하기 위해 떼어 놓는 데이트를 의미합니다. 일반적으로 모델이 복잡해지에 따라 과적합화 문제가 커집니다.


트리 유도에서의 과적합화

데이터가 적어질수록 추론 오류가 발생하기 쉬워지며, 예비 데이터에 대한 성능도 떨어지게 됩니다.

스위트 스팟(Sweetspot) : 과적합화가 일어나는 시점으로 스윗 스팟을 넘어가면 정확도가 내려가게 됩니다. 스위트 스팟을 결정하는 것은 경험에 기반한 방법에 의존할 수 밖에 없습니다. 경제학에서 말하는 균형점(Equilibrium) 같은 거라고 생각하시면 편하지 않을까 생각됩니다.


수학 함수에서의 과적합화

변수(속성)를 추가하면 수학 함수는 더 복잡해지고, 데이터 세트에는 있는 속성을 모두 사용하면 모델링 절차는 훈련 세트에 잘 맞을 가능성이 훨씬 커집니다. 다만 속성을 추가할 수록 목적함수는 복잡해져 과적합화 되기 쉽기 때문에 주의해야 합니다.


왜 과적합화가 문제가 될까?


과적합화가 문제가 되는 이유는 모델이 복잡해지면서 해로운 가짜 연관성까지 학습하게 되기 때문입니다. 가짜 연관성은 훈련 세트에만 존재하는 특이한 성질일 뿐이며, 모집단 전체의 특성은 아닙니다. 때문에 가짜 연관성을 잘못 일반화하게 되면 과적합화 문제가 발생되고 모델의 성능이 떨어뜨리게 됩니다. 문제는 앞서 말씀드린대로, 과적합화 문제는 알아내기도 쉽지 않고, 과적합화를 피할 수 있는 절대적인 방법도 없다는 것입니다.

과적합화 문제는 분류 트리에만 국한되지 않으며 훈련데이터가 비정상적으로 편향되어 있어 발생하는 것도 아닙니다.


예비 데이터의 평가와 교차 검증


예비 세트가 어느정도 일반화 성능을 추정할 수 있게 도와주기는 하지만 이 실험 역시 단 한세트에 대한 추정일 뿐입니다. 즉, 단 한번 실험해 얻은 결과에 대한 정확도에 대한 확신을 가지기 어렵기 때문에 교차검증을 실시해야 합니다.


교차검증 : 일반화 성능을 딱 한번 추정하는 대신 평균이나 편차, 분산과 같은 추정된 성능에 대한 통계 데이터를 갖게 되면 데이터 세트에 따라 성능이 어떻게 바뀔지 예측할 수 있습니다. 교차검증은 제한된 데이터 세트를 더욱 잘 활용할 수 있게 만들어 줍니다. 표본을 체계적으로 바꿔가면서 '모든' 데이터에 대해 추정치를 계산해나가면 됩니다.


학습곡선


훈련 데이터야에 따른 일반화 성능을 보여주는 그래프

나머지 조건이 동일하다면 어느 정도까지는 더 많은 훈련 데이터를 사용할수록 모델링의 일반화 성능은 대체로 향상됩니다. 데이터 증가에 의한 장점이 어느 정도 한계에 달하면서 학습곡선은 완만해집니다. 학습곡선에 의하면 데이터 세트가 작을 때는 트리 유도가 과적합화 되기 쉬우며 로지스틱 회귀분석 모델의 성능이 더 좋은 것을 알 수 있습니다. 하지만 데이터 세트가 커지게 되면 트리 유도의 유통성이 도움이 됩니다.


학습곡선과 적합도 그래프간의 차이점은 학습곡선의 X축은 사용한 훈련데이터 크기를 나타내며, 시험 데이터에 대한 일반화 성능만 보여줍니다. 적합도 그래프의 X축은 모델의 복잡도로서, 훈련 데이터에 대한 성능뿐만 아니라 일반화 성능도 나타냅니다.


과적합화 회피와 복잡도 제어

균일화 : 균일화는 모델 복잡도를 통제하는 범용적인 방법입니다. 과적합화를 피하려면 데이터에서 유도된 모델의 복잡도를 제어해야 합니다.

균일화 방법

1) 너무 복잡해지기 전에 트리의 성장을 멈추게 해야 합니다. 가장 간단한 방법은 단말 노드에 들어가는 객체의 수의 최소 한도를 정하는 것입니다. 이 때, 객체수는 가설 검증을 통해 결정합니다. 가설 검증에 따라 정보량이 우연히 증가한 것이 아니라면 더 분할하고 트리를 계속 키우면 됩니다.

* 가설검증 : 어떤 통계 데이터에서의 차이가 단지 우연히 생긴 것인지 아닌지 평가하는 방법입니다.

2) 트리를 최대한 키운 후에 가지치기(프루닝,pruning)을 해서 복잡도(데이터의 크기)를 줄입니다. 일반적으로 프루닝은 단말 노드들과 가지를 하나의 단말 노드로 바꿀 때 정확도가 떨어지는 추정하기 위한 것입니다. 만약 정확도가 떨어지지 않는다면 프루닝을 하는 것이 좋습니다.

3) 내포된 교차 검증 : 내포된 교차 검증과 일반적인 교차 검증과의 차이점은 각 폴드 안에서 C값을 찾아내기 위해 더 작은 규모의 교차 검증을 먼저 한다는 것 뿐 방법적인 측면에서 큰 차이점은 없습니다.

4) 순차 전진 선택 기법 

5) 순차 후진 제거 기법

6) 파라미터 최적화에서 과적합화 피하기 : 트리와는 달리 로지스틱 회귀분석과 같은 방정식은 포함시킬 속성을 자동으로 선택하면 선택하지 않으므로 '올바른' 속성 집합을 직집 선택해 복잡도를 제어해야 합니다. 목적함수에 복잡도에 대한 벌점을 추가하여 균일화를 통해 복잡도를 제어할 수 있습니다. 람다(λ)는 벌점에 부여할 지 결정하는 가중치, 훈련 데이터에 내포된 교차 검증을 통해 결정합니다. 람다를 이용해 전체 훈련 데이터에 대한 균일화된 모델을 만들 수 있습니다. 데이터 마이닝 절차에 사용할 파라미터 값을 최적화하는 이와 같은 방법을 통틀어 격자 검색이라고 합니다.



2017/05/28 - [Cyong's 마케팅/Data Science] - [Data Science] Ch.4 데이터에 대한 모델 적합화(수학 함수를 이용한 회귀분석과 로지스틱 회귀분석)

2017/05/27 - [Cyong's 마케팅/Data Science] - [Data Science] Ch.3 데이터에 대한 모델 적합화(수학 함수를 통한 분류)

2017/05/24 - [Cyong's 마케팅/Data Science] - [Data Science] Ch2. 트리구조모델

2017/03/25 - [Cyong's 마케팅/Data Science] - [Data Science] Ch1. 예측모델링_정보전달하는 속성 찾아내기


트리 구조 모델을 이용한 감독 세분화


속성 선택이 매우 중요하긴 하지만 속성을 선택하는 것이 전부는 아닙니다. 만약 정보량을 증가시키는 속성이 하나가 아니라 여러 개 존재한다면 이 속성들을 어떻게 결합해야 할 지 판단하기 쉽지 않습니다. 이럴 때는 중요한 속성을 골라내기 위해 개발한 방법을 활용한 다변량 감독 세분화 방법인 트리구조화 방법을 이용합니다.

출처:Data Science for Business


트리는 내부노드(Internal node)와 단말노드(Teminal node)로 나눠지며, 내부노드에서 가지가 뻗어 나옵니다. 트리구조는 모든 데이터가 트리에서 단 하나의 경로를 따라 결국 단 하나의 단말노드에 도착하도록 데이터를 분할합니다. 달리 말하면, 단말노드는 하나의 세그먼트(segment)이고, 여기에 도착하는 경우의 값은 세그먼트의 특성을 나타냅니다. 그리고 분류에 대해 설명하고 있으므로 각 단말 노드는 세분화한 그룹을 담고 있으며, 이런 트리를 분류트리 또는 결정트리라고 부릅니다.


데이터에서 분류트리를 만드는 방법


트리유도는 분할정복법을 이용합니다. 우선 전체 데이터 세트에서 속성을 기준으로 가장 순수한 하위그룹으로 분할하는 변수를 찾습니다. 그리고 이를 재귀적으로 반복하여 트리를 유도할 수 있습니다.


확률 추정


트리의 단말 노드에 있는 모든 객체에 동일한 계층확률을 부여해도 된다면 단말노드에 있는 객체의 수를 이용해 계층 확률 추정치를 계산할 수 있습니다. 예를 들어 단말노드에 n개의 긍정적인 객체와 m개의 부정적인 객체가 있다면 새로 세그먼트로 분류된 객체가 이 계층에 속할 확률은 입니다. 이렇게 확률을 계산하는 방법을 빈도기반 계층확률추정이라고 합니다. 그러나 객체 수가 적을 때는 난관적인 결과(과적합화(overfitting))를 초래할 수도 있습니다. 이럴 경우에는 단순히 빈도를 계산하는 대신 빈도를 완충시킬 수 있는 라플라스 교정법을 사용해서 아래와 같은 식으로 바꿔줍니다.

(n은 단말노드, c는 계층에 속하는 객체의 수, m은 c객체에 속하지 않는 객체의 수)


트리유도로 고객이탈 문제 해결하기


분류트리를 만들기 전 '고객이탈을 예측하는 데 변수들의 중요성'을 알기 위해 각 속성의 정보증가량(IG)을 측정합니다.

(IG에 대한 설명 참고 - 2017/03/25 - [Cyong's 마케팅/Data Science] - [Data Science] Ch1. 예측모델링_정보전달하는 속성 찾아내기)

그리고 IG의 순위로 정렬한 속성데이터를 차례로 노드로 트리를 만듭니다. 하지만 루트노드를 제외한 모든 노드 변수는 전체 객체 집합이 아니라 상위노드에 의해 분류된 객체만을 평가하기 때문에 내부노드의 정보증가량 순위와 전체집합의 정보증가량은 다를 수 있습니다.(대게 같지 않습니다.)

모델, 유도, 예측


모델이란 목적을 달성하기 위해 실세계를 명확하, 단순화하여 일정한 규칙으로 표현 한 것입니다. 즉, 확률함수로서 특징을 입력받아 타겟 변수값을 추정하는 것입니다. 쉽게 설명하지면 경제학에서의 '수요공급곡선'은 수요와 공급에 대한 관계를 단순하게 표현하기 위해 만들어진 모델입니다. 


모델링이란 속성 또는 특징와 같은 일련의 변수와 타겟 변수라고 불리는 사전에 정의한 변수간의 관계를 보여주는 모델을 만드는 행위를 말합니다. 


예측이란 발생할 일이나 모르는 값을 추정하는 것인데 , 예측 모델(어떤 값을 예측하기 위해 일정한 규칙으로 표현한 공식), 예측 모델링을 통해 예측을 합니다.


감독 세분화 (Supervised Approach)


감독방법으로 데이터에서 패턴을 만드는 방법에 대해 생각해보면 타겟변수를 기준으로 전체 데이터를 유사한 값을 가진 세그먼트로 분할하는 방법이 있다. 타겟값은 모르지만 알려진 변숫값으로 분할 한다면 이 세그먼트는 타겟 변숫값을 예측하는데 사용될 수 있다. 그리고 두드러진 세그먼트를 자동으로 뽑아내기 위해서는 정보를 전달하는 속성을 알아보고 이 기법을 반복 적용해 어떻게 감독 세분화하는지를 알아야 한다.


정보를 전달하는 속성의 선택


2진 분류인 타겟 변수값(yes 또는 no)을 생각해봅시다. 사람들 중 대손상각 여부와 여러 속성을 데이터로 하면 어느 세그먼트에 속한 그룹원이 다른 세그먼트 그룹원보다 상각률이 높은지 낮은지 예측할 수 있습니다.


그러나 기술적으로 복잡한 문제가 많습니다.


a. 그룹을 완전히 분리하는 속성은 거의 없다.

b. 3개 이상의 값을 가진 속성도 많다.

c. 수치값을 가지는 속성들도 많다.


이러한 문제를 해결하기 위해 순도에 기반한 여러 공식들이 존재합니다.


가장 널리 사용되는 분할 기준은 정보증가량(IG)이라고 부릅니다.


정보증가량(Information Gain, IG)와 엔트로피(entropy)


정보증가량은 엔트로피라고 불리는 순도에 기반합니다. 엔트로피는 어떤 집합에 적용해 무질서의 정도를 측정하는 것입니다. 뒤죽박죽 섞인 정보일수록 엔트로피가 높습니다.


정보의 엔트로피를 구하는 공식은 아래와 같습니다.

                         

위 식에서 각 는 i 번째 속성의 확률을 의미합니다.

즉, 인 경우 100%의 확률로 모든 원소가 i번째 속성을 가지는 것을 의미하고 인 경우에는 i번째 속성을 가진 원소가 하나도 존재하지 않는 것을 의미합니다.

엔트로피는 0일 경우 무질서 정도가 최소이고 1일 경우 무질서 정도가 최대라 할 수 있다.


분할, 분류를 통해 엔트로피가 많이 줄어들 수록 좋은 분할이라고 말할 수 있을 겁니다. 어떤 속성에 따라 분류하면 전체그룹의 엔트로피가 개선되는지 추정할 수 있도록 나타내주는 수치가 IG입니다.


정보증가량를 구하는 공식은 아래와 같습니다.


위 식에서 는 분할 전 집합이고 는 분할 후 i번째 집합을 의미합니다.


정보증가량으로 판단할 때에는 분할 후 집합이 완전히 순수할 필요는 없으며, 분할한 후의 집합의 개수에 상관없이 적용할 수 있습니다. 또한 분할 후 집합의 크기를 고려해 가중치를 조절할 수도 있습니다.


하지만 기술적으로 너무 다양한 값을 가질 수 있는 속성에 대해서는 문제가 발생할 수 도 있습니다. 같은 속성을 기준으로 세분화하면 IG는 상당히 늘어나지만 예측이 난해해지는 과적합화(Over-fitting)가 발생할 수 도 있습니다.


타겟변수가 수치형일 경우에는 수치형값의 불순도를 측정하는 방법인 분산을 이용합니다. 즉, 수치형 타겟값을 세분화하려면 가중치 평균의 분산이 가장 많이 줄어드는 값을 선택하면 됩니다.


IG을 증가시키는 속성선택


구체적인 데이터 마이닝을 위해선 속성과 타겟변수를 가진 객체가 담겨있는 데이터세트를 분석해 타겟변수를 추정하는데 필요한 정보를 가장 많이 전달하는 속성을 결정해야 합니다. 그리고 과적합화를 피하기 위해 데이터 세트에서 타겟변수를 예측할 때에는 데이터마이닝 해야 할 속성이 너무 많은 것은 아닌지 전혀 쓸모 없는 것이 있는 것은 아닌지 의심해봐야 합니다.

+ Recent posts