통계학

Logistic, cross-entropy loss의 확률론적 의미

머신러닝을 공부하다보면 logistic을 참 많이 접하게 된다. 당장 로지스틱 회귀만 해도 그렇고, 딥러닝에서 자주 사용하는 saturating non-linearity 중 하나인 softmax function도 logistic function의 multi-class 버전이니 말이다.

Logistic(또는 softmax) function은 어떤 값들을 (0, 1) 사이의 값으로 squash하면서, 동시에 값들의 총 합이 1이 되도록 하는 성질이 있는데, 이 결과 logistic function의 함수값이 Kolmogorov의 확률의 정의에 부합하기 때문에 주로 값들을 확률화하는 함수로 쓰인다. 딥러닝에서 분류문제를 풀때 output layer의 activation function으로 자주 쓰이곤 하는 이유도 여기에 있다 (각 클래스의 ‘확률’ 값을 계산하기 위해).

그런데 하고많은, (0, 1)에 bounded되어있고 합이 1이 되는 함수들 중에서 굳이 logistic function을 사용하는 이유는 뭘까? 그건 바로 logistic function이 확률값에서부터 자연스럽게 유도되는, 내재적으로 확률의 성질을 가지는 함수이기 때문이다. 이 글은 logistic이 그냥 이유없이 확률처럼 생겨서 만들어지고 사용되는 함수가 아니라는 것을 증명해보는 지루한 글이다. Logistic function은 내재적으로 cross-entropy loss와 깊은 연관이 있는데, 이 로스를 줄이는 것이 왜 classification을 해결하는 과정이 되는지 역시 같은 맥락에서 함께 살펴볼 것이다.

 

Odds, Log odds, Logit, 그리고 Logistic

어떤 사건이 일어날 확률은 P(x) 외에도 다양한 방법으로 표현될 수 있다. Odds가 그 종류 중 하나다. 주로 질병통계학이나 도박과 같이 카테고리가 두 개(성공과 실패/발병과 비발병)인 분야에서 자주 사용하는 표현인데, 로지스틱 함수의 확률론적 의미는 바로 여기에서부터 시작한다.

발생 확률(또는 성공 확률)이 p인 어떤 사건 A의 Odds는 다음과 같이 나타낼 수 있다.

Odds(A) = \frac{p}{1-p}

즉, Odds는 성공 확률이 실패 확률에 비해 얼마나(몇 배나) 더 큰가?를 나타내는 척도라고 해석할 수 있다. Odds가 클수록 성공확률이 큰 것이다. Odds는 평범한(?) 확률값 p에 비해 성공확률값의 변화에 민감하다는 특징이 있다. 또한 질병통계학에서는 relative risk 등의 다른 표현에 비해 robust하기에 자주 사용한다.

Odds에 (자연)로그를 취한 것을 Log odds라고 한다.

\log{Odds(A)} = \log{\frac{p}{1-p}} = \log{p} - \log{(1-p)}

로그변환은 통계학에서 자주 사용하는 변환으로,

  • 함수의 증감 형태, convex/concave 형태를 유지시키고
  • 극점의 위치를 유지시키며
  • 곱(또는 나눗셈)으로 표현된 식을 선형조합의 꼴로 풀어쓸 수 있도록 해준다

는 장점이 있다. 즉, 계산은 용이하게 해주는데 함수의 특성은 그대로 유지하는 변환이라 할 수 있겠다. 로그변환의 이러한 성질에 의해 Log odds는 여전히 값이 클수록 성공확률이 큰 것을 의미하는 함수이다.

한 편, Logit function은 다음과 같은 꼴의 함수를 말한다. Logit function은 (0, 1)을 support로 가지며 (- \infty, + \infty) 값을 domain으로 가진다.

logit(x) = \log{\frac{x}{1-x}}

어디서 많이 본 꼴이다. 그렇다. Log odds는 성공확률 p에 대한 Logit function 함수값과 일치한다 (\log{Odds(A)} = logit(p)). 다시말해 Logit 함수는 log Odds의 성질을 가지는 함수이다.

Logistic function은 바로 이 Logit function의 역함수이다.

 

logistic(x) = \frac{1}{1+e^{-x}}

성공확률 p를 갖는 사건 A를 바탕으로 해석해보면 Logistic function은 성공확률 p 그 자체이다.

\frac{p}{1-p} = e^{\log{Odds(A)}},

p = e^{\log{Odds(A)}} -e^{\log{Odds(A)}}p,

(1+e^{\log{Odds(A)}})p = e^{\log{Odds(A)}},

\begin{array}{lcl}\therefore p &=& \frac{e^{\log{Odds(A)}}}{1+e^{\log{Odds(A)}}} \\ &=& \frac{1}{1+e^{-\log{Odds(A)}}} \end{array}

 

Binary classification과 Logistic function

두 개의 클래스(클래스 1, 2)를 분류하는 문제를 생각해보자. 우리가 분류에 사용할 데이터를 X,특정 샘플이 클래스 1, 2에 속한다고 판단하는 사건을 각각 Y_1, Y_2라고 하자.

Binary classification 문제는 데이터 X가 주어졌을 때 둘 중 어느 클래스에 속할지 그 확률 P(Y_i|X) (posterior probability)를 구하는 문제라고 할 수 있다. P(Y_1|X) >P(Y_2|X)일 때 우리는 Y_1이 옳은 클래스일 것이라고 예측을 하게 되고, P(Y_1|X) < P(Y_2|X)일 때 Y_2가 옳은 클래스일 것이라고 예측하게 된다.

Bayes’ rule에 의해서 posterior probability P(Y_i|X)는 likelihood P(X|Y_i)와 prior probability P(Y_i)의 곱에 비례한다. (분모인 prior predictive probability P(X)는 클래스에 관계 없이 X의 marginal probablity로 항상 같으므로 덜 중요하다)

P(Y_i|X) = \begin{cases}P(Y_1|X)=\frac{P(X|Y_1)P(Y_1)}{P(X)} =\frac{P(X|Y_1)P(Y_1)}{P(X|Y_1)P(Y_1) +P(X|Y_2)P(Y_2)}  \\ P(Y_2|X)=\frac{P(X|Y_2)P(Y_2)}{P(X)} =\frac{P(X|Y_2)P(Y_2)}{P(X|Y_1)P(Y_1) +P(X|Y_2)P(Y_2)} \end{cases}

따라서

P(Y_i|X) = \begin{cases}P(Y_1|X) \propto P(X|Y_1)P(Y_1)  \\ P(Y_2|X) \propto P(X|Y_2)P(Y_2) \end{cases}

여기서 a_i = \log{P(X|Y_i)P(Y_i)}를 정의하면 다음과 같이 각 클래스의 posterior probability를 표현할 수 있게 된다.

\begin{array}{lcl} P(Y_1|X) &=& \frac{e^{a_1}}{e^{a_1} + e^{a_2}} \\ &=& \frac{1}{1+e^{-(a_1-a_2)}} \end{array}

a = a_1 - a_2 = \log{ \frac{P(X|Y_1)P(Y_1)}{P(X|Y_2)P(Y_2)} }라고 하면 P(Y_1|X)a에 대한 로지스틱 함수값이 된다.

P(Y_1|X) =\frac{1}{1+e^{-a}} = logistic(a)

그런데 a는 위의 정의에 따라

\begin{array}{lcl} a &=& \log{ \frac{P(X|Y_1)P(Y_1)}{P(X|Y_2)P(Y_2)} } \\ &=& \log{ \frac{P(Y_1|X)}{P(Y_2|X)} } \\ &=& \log{ \frac{P(Y_1|X)}{1-P(Y_1|X)} } \\ &=& \log{Odds(Y_1|X)} \end{array}

즉, 데이터 X를 바탕으로 Y_1이 옳은 클래스라고 판단할 log odds이다.

위에서 사건 A의 logistic은 사건의 성공확률 p 그 자체라는 것을 보였으므로, 결론적으로 logistic(Y_1|X)는 사건 Y_1|X의 확률, 즉 내재적으로 P(Y_1|X) 그 자체이다 (바로 위의 증명과 완전히 일맥상통한다).

이때문에 우리는 확률분포에 대한 가정 없이도 (deterministic하게) logistic function을 각 클래스로 판단할 ‘확률값’으로 곧바로 사용할 수 있는 것이다.

Multi-class classification과 Softmax function

n 개의 클래스(클래스 1, 2, … n)를 분류하는 문제를 생각해보자. 우리가 분류에 사용할 데이터를 X,특정 샘플이 클래스 1, 2, … n에 속한다고 판단하는 사건을 각각 Y_1, Y_2, ..., Y_n라고 하자. Logistic function을 유도했을 때와 마찬가지로,

P(Y_i|X) = \begin{cases}P(Y_1|X)=\frac{P(X|Y_1)P(Y_1)}{P(X)} =\frac{P(X|Y_1)P(Y_1)}{\sum_{i=1}^{n} P(X|Y_i)P(Y_i)}  \\ P(Y_2|X)=\frac{P(X|Y_2)P(Y_2)}{P(X)} =\frac{P(X|Y_2)P(Y_2)}{\sum_{i=1}^{n} P(X|Y_i)P(Y_i)} \\ ... \\ P(Y_n|X)=\frac{P(X|Y_n)P(Y_n)}{P(X)} =\frac{P(X|Y_n)P(Y_n)}{\sum_{i=1}^{n} P(X|Y_i)P(Y_i)} \end{cases}

이고, a_i = \log{P(X|Y_i)P(Y_i)}를 정의하면 posterior probability는 다음과 같이 Softmax function의 꼴로 표현된다.

\begin{array}{lcl} P(Y_1|X) &=& \frac{e^{a_1}}{e^{a_1} + e^{a_2} + ... +e^{a_n}} \\ &=&\frac{e^{a_1}}{\sum_{i=1}^{n} e^{a_i}} \end{array}

이처럼 Logistic function을 multi-class 문제로 일반화시키면 Softmax function을 얻을 수 있다. 이때문에 Softmax function을 multi-class logistic function이라고 하기도 한다.

 

Cross-entropy loss와 MLE

i번째 관측치 벡터 (x_i)의 ground truth 클래스를 t_i, 분류기를 통해 판단한 클래스를 y_i라고 하면,

t_i|x_i, a {\sim}^{iid} Bernoulli(p_i),  where p_i = P(t_i=1|x_i) = P(Y_1|X) = y_i

라고 가정할 수 있다. 이 때 likelihood는 다음과 같이 적을 수 있다.

\begin{array}{lcl} L = \prod_{i=1}^{n} P(t_i|x_i, a) &=& \prod_{i=1}^{n} p_{i}^{t_i} (1-p_i)^{1-t_i} \\ &=& \prod_{i=1}^{n} y_{i}^{t_i} (1-y_i)^{1-t_i}  \end{array}

Maximum likelihood estimation(MLE)을 위해서 log likelihood \log{L}을 구하면

\log{L} = \sum_{i=1}^{n} \log{\{y_{i}^{t_i} (1-y_i)^{1-t_i}\}} = \sum_{i=1}^{n} \{ t_i \log{y_i} + (1-t_i) \log{(1-y_i)} \}

인데, 이 식에 negative(-)를 취하면 cross-entropy loss(CE)의 정의와 일치한다. 따라서

\hat{\theta}^{MLE} = argmax_{\theta}(\log{L}) = argmin_{\theta}(-\log{L}) =argmin_{\theta}(CE)

이므로, 위의 Bernoulli 분포 가정 하에서 cross-entropy loss를 minimize하는 것은 MLE와 동일한 과정이 된다. 이때문에 cross-entropy loss를 최소화하는 과정을 통해 올바른 클래스 t_i에 가까운 예측 확률값 y_i를 얻을 수 있게 된다.

 

참고

  • 이 글을 많이 참고했다. 이 글을 바탕으로 노테이션을 정리하고 수식 유도를 풀어 쓴 정도다.
  • Odds에 대해서는 이 글을 참고했다.
  • 이 글에서 영감(?)을 얻었다.

EFA로 내게 맞는 스마트폰 카메라 찾기

해를 거듭하면서 스마트폰 성능이 눈에 띄게 향상되고 있다. 특히나 아이폰에 탑재되는 A-시리즈 APU의 성능은 작년부터 PC를 위협해오더니 급기야 13인치 맥북 프로를 벤치마크 상에서 앞지르기에 이르렀다. 일정 가격 이상의 대부분의 스마트폰 성능이 상향 평준화 되어버린 지금, Kantar가 2014년 수행한 북미 시장에서의 설문조사를 보면 스마트폰 구매 선택은 성능 외적인 부분에서 주로 결정되는 것으로 보인다.

특히 카메라 성능은 고가의 스마트폰을 구입하는 데에 있어서 결정적인 역할을 하는 요인으로 생각된다. 2016년 이전에는 코빼기도 보이지 않던 DxOMark 카메라 벤치마크가 이제는 많은 리뷰에서 빠짐없이 등장하는 현상이 이를 뒷받침한다. 비록 DxOMark에서 다양한 성능 카테고리에 대해서 카메라를 테스트하기는 하지만, 벤치마크와 실제 사용자 경험은 차이가 있을 수 있다. 테스트 점수가 높다고해서 내게 만족스러운 카메라가 되는 것은 아니라는 의미이다.

어떤 카메라가 내게 맞는 카메라인지에 대해 대략의 답을 제공하기 위해 DxOMark 벤치마크 데이터에 대해 탐색적 요인 분석(exploratory factor analysis; EFA)을 해보았다.

분석을 시작하면서 답을 찾고자 한 질문들은 이렇다.

  1. 각 브랜드는 스마트폰 카메라를 제작할 때 어떤 성능요인(색감, 선명도, …)에 중점을 두는가
  2. 각 브랜드의 스마트폰 카메라는 시간에 따라 어떤 방향으로 발전해왔는가
  3. 어떤 스마트폰 브랜드끼리 서로 비슷한 사진을 찍어내는가

주로 애플과 삼성을 중점으로 분석을 진행했다. 이 외의 브랜드의 스마트폰 카메라 분석을 원한다면 다음 gist를 참조하시길. 분석과 코드를 정리해 두었다 [벤치마크 크롤러][노트북].

 

최근 데이터들의 3-factor EFA 결과

DxOMark는 2017년 9월에 새로운 테스트 프로토콜을 제시한 바 있다. 테스트 프로토콜에 따른 테스트 점수 변동이 있을 수 있으므로, 이전 프로토콜에서 만들어진 데이터(이 글에서는 “과거” 데이터라 호칭한다)와 새로운 프로토콜(“최근”)에서 만들어진 데이터를 따로 분석하기로 했다.

Varimax 방법으로 새 프로토콜에서 얻은 데이터들을 회전시킨 EFA 결과, 다음과 같은 factor loading을 얻을 수 있었다.

output_39_0

각 요인에 크게 연관되어 있는 manifest variable에 따라 요인을 해석해서 이름을 붙였다.
FA1: AF, texture, exposure&contrast 등에 강한 음의 상관관계가 있으므로 “Bad Focus”.
FA2: artifacts, noise 등에 강한 양의 상관관계가 있으므로 “Sharp, Clear”.
    FA3: flash, texture 등에 강한 양의 상관관계가 있으므로 “High Detail”.
즉, FA1 값이 클수록 포커스가 잘 안잡히는 카메라, FA2가 클 수록 선명하고 또렷한 카메라다.

현재 시점 (2017/12/29)에 DxOMark에 올라온 모든 최근 스마트폰 카메라의 점수를 요인 점수로 변환해서 그래프로 나타내 보았다.

output_43_0

같은 색 포인트는 같은 회사에서 제작된 스마트폰이다. 이 그래프에서 각 브랜드의 장단점을 파악할 수 있다. 예를들어 구글의 경우 Sharp, Clear 점수가 조금 떨어지지만 포커싱과 디테일이 매우 우수하다. 반면 애플은 포커싱이 비교적 안좋은 반면 Sharp, Clear과 디테일이 우수한 것을 볼 수 있다. 삼성과 구글의 지향점이 서로 비슷한 듯하다.

각 브랜드의 최근 카메라 제작 트렌드를 좀 더 자세히 들여다보기 위해 삼성과 애플 제품만 따로 나타내보았다.

output_42_0

애플 아이폰 모델이 최신형에 이르면서 포커싱보다는 Sharp, Clear과 디테일에 중점을 두고 발전하는 것을 확인할 수 있다. 삼성 또한 갤럭시 S6 엣지에서 갤럭시 노트 8에 이르면서 Sharp, Clear보다는 포커싱과 디테일에 중점을 두는 모양새를 볼 수 있다.

 

과거 데이터들의 3-factor EFA 결과

최근 데이터와 동일한 방법으로 분석을 진행했다. Varimax rotated factor loading은 아래와 같다.

output_51_0

최신 데이터와는 조금 다른 해석을 사용해서 요인에 이름을 붙였다.
FA1: AF, texture, noise 등에 강한 음의 상관관계가 있으므로 “Bad Focus”.
FA2: color, exposure&contrast 등에 강한 양의 상관관계가 있으므로 “Colorful”.
    FA3: noise, flash, exposure&contrast 등에 강한 양의 상관관계가 있으므로 “Clear”.
즉, FA1 값이 클수록 포커스가 잘 안잡히는 카메라, FA2가 클 수록 선명하고 또렷한 카메라다.

DxOMark에서 테스트한 과거 모든 스마트폰 카메라를 스캐터플롯으로 나타내어 보았다.

output_54_0

삼성과 애플 제품들만 모아보았다.

output_55_0

삼성 제품들과 애플 제품들이 서로 다른 클러스터로 구별된다.
삼성은 포커스와 색감, 선명성에서 개선을 이뤄낸 것이 보인다. 최신 기종에 이를수록 개선 폭은 작아지는 것이 확인된다.
애플은 반면에 과거 기종부터 우수한 색감을 보인다. 주로 선명성과, 특히 포커싱 개선에 노력을 들인 것으로 보인다.

 

나에게 맞는 스마트폰 카메라 찾기

Moment라는 스마트폰 카메라 전문 렌즈 제작 스타트업은 “항상 휴대하는 카메라가 가장 좋은 카메라”라고 한 바 있다. 스마트폰 카메라의 우수한 휴대성을 강조한 말이다. “이왕 항상 휴대하는 거, 수치상으로 가장 좋은 카메라 대신, 내가 지향하는 사진을 찍을 수 있게 하는 카메라를 선택하는게 어떨까?”라는 생각에서 시작해서 벤치마크 숫자만으로는 파악할 수 없는 잠재적인 요인들을 요인분석으로 파악해 보았다.

색감을 중요시하는 사람은 전통적으로 우수한 색감을 자랑해온 애플 아이폰, 또는 세대가 거듭함에 따라 비약적인 색감 개선을 이뤄낸 삼성 제품을 선택할 수 있을 것이다. 또, 디테일을 중요하게 생각하는 사람은 디테일(FA1) 1위 제품을 만들어낸 구글 제품을 선택할 수 있을 것이다.

단순 벤치마크보다는 누군가의 스마트폰 선택에 도움이 되는 정보이기를 바란다.

2017년 대선후보 지지층 군집분석

대선까지 얼마 남지 않은 지금이다. 근 몇 년간 이보다 많은 사람들이 적극적으로 관심을 가진 선거가 과연 있었을까 싶다. 이 때문인지 타 후보에 대한 비방, 지지층간의 갈등과 모함 역시 이전 선거와는 궤를 달리할 정도로 적극적(?)이어 보인다. 특히나 서로 다른 후보의 지지층이 서로를 비난하는 모습은 그 정도가 지나치기도 하여, 소위 말하는 ‘국론 분열’에 대한 우려까지 자아내기도 한다.

후보자의 지지율과 그 추세, 지역, 연령대별 지지율에 대한 정보는 여론조사를 통해서 쉽게 열람할 수 있지만, 각 후보를 지지하는 지지자/지지층이 어떤 성향을 가지고 있는 지에 대해서는 쉽게 파악하기 어렵다. 그저 직관적으로 ‘이 후보를 지지하니 이런이런 사람이겠지’라고 짐작할 뿐이다. 이에 객관적으로 후보의 지지층의 성향을 파악할 수 있다면 서로에 대한 어림짐작으로부터 비롯한 비난(‘OO후보 지지하는 인간은 고령층 적폐세력 옹호자더라!’, ‘OO후보 지지자는 수도권 젊은이 뻘갱이라더라!’ 등등의 원색적인 비난 등)이 줄어들지 않을까 싶어 지지층 군집(cluster) 분석을 기획해 보았다.

 

분석 결과 이전에 알린다

  1. 후보의 성향에 대한 분석이 아니다. 후보를 지지하는 사람들의 성향에 대한 분석이다. 이 둘에는 분명한 차이가 있다.
  2. 또한 이는 후보를 지지하는 사람들의 전반적인 성향에 대한 정보를 제공하는 것이지, 지지자 개개인이 반드시 이러한 성향을 가진다는 의미를 가지지는 않는다.
  3. 모든 데이터는 중앙선거여론조사심의위원회에 결과 등록된 여론조사로, 이는 네이버 제 19대 대선 페이지에서 가져왔다. 결국 각 데이터포인트는 설문에 대한 응답 백분율(%)이다.
  4. 크게 네 가지 종류의 변수를 사용했다. 보다시피 4/7~21에 있었던 여론조사를 바탕으로 만들어진 변수이다.
    1. 정책 성향 관련
      • 일자리 정책 의견 (04.16 조선일보, 칸타퍼블릭) – 민간이 주도해야 한다고 응답한 퍼센티지
      • 사드 배치 찬반 (04.16 조선일보, 칸타퍼블릭) – 반대한다고 응답한 퍼센티지
    2. 연령대 관련
      • 세대별 ‘호감이 간다’ 응답 비율 (04.07 한국갤럽)
    3. 지역 관련
      • 지역별 후보 지지율 (04.21 동아일보, 리서치앤리서치)

    4. 지지 후보 선택 기준
      • 지지후보 결정에 중요한 기준은? (04.18 서울신문, YTN, 엠브레인) – ‘능력과 정치 경험’이라고 응답한 퍼센티지와 ‘도덕성과 청렴성’이라고 응답한 퍼센티지
      • 유승민 후보, 심상정 후보에 대한 조사가 없어서 3자 클러스터링에만 사용되었다.
  5. 데이터포인트를 클러스터링하는 데에는 계층적 클러스터링, 그 중에서도 agglomerative 방식을 사용했다. 클러스터링 옵션을 더 자세히 설명하자면 이렇다:
    • 계층적 클러스터링을 위해서는 각각의 변수값(여기서는 연령대별 지지율 등등) 사이의 유사도를 계산하는 방법인 ‘metric’과 각 샘플(즉, 여기서는 각 대선후보의 지지층) 사이의 클러스터링 방식인 ‘linkage’을 설정해주어야 한다.
    • Metric으로는 코사인 유사도(cosine similarity)를 사용했다. 이는 응답 값의 차이 대신 응답 패턴의 유사성만을 보기 위해서이다. 코사인 유사도를 사용하면 지지율과 같이 패턴이 비슷해도 값에는 차이가 클 수 있는 데이터에서 패턴의 유사도를 계산할 수 있다.
      figure 출처
    • Linkage로는 Ward’s minimum variance method를 사용했다. 그냥 많이들 사용하는 방식이라고 해서 써봤다.
    • 이 외의 metric과 linkage는 도큐멘테이션을 참고하면 좋다.
    • 클러스터링 결과로 그려진 수형도(tree)에서 가지가 짧을수록 서로 유사한 샘플(지지층)이라고 해석할 수 있다.

 

5자 지지층 클러스터링 결과

output_26_0

5자 지지층 비교 – 정책 지향

일자리 정책과 사드 배치 찬반에 대한 의견에서 정책 지향에 따라 지지층의 성향이 극명하게 나뉘는 것을 볼 수 있다. 문재인, 심상정 후보의 지지층이 정책성향이 매우 유사하고, 안철수, 유승민, 홍준표 후보의 지지층 정책성향이 매우 유사하다.

output_28_0

5자 지지층 비교 – 연령대별 호감도

연령대별 호감도로부터 주요 지지층의 연령대를 엿볼 수 있다. 20~40대과 50대 이상의 호감도가 뚜렷하게 구별됨을 확인할 수 있으며, [문재인, 심상정] 후보, [안철수, 유승민] 후보의 지지층의 연령대가 비슷할 것이라 추측할 수 있겠다. 홍준표 후보 지지층이 다른 후보 4명에 비해 유독 튀어보인다.

output_30_0

5자 지지층 비교 – 지역별 지지율

지역별로는 좌와 우 진영이 확실하게 구별되는 듯 하다. (현재는 여야랄게 없지만) 야권과 범여권의 ‘텃밭’에 따라 지지층이 확연히 구별되어 보인다.

 

항상 언론상의 뜨거운 감자인 세 후보의 지지층 정보만으로 다시 클러스터링을 해보았다. 클러스터링 옵션은 위와 같다. 다만 지지후보 선택 기준 변수가 추가되었다.

3자 지지층 클러스터링 결과

output_33_0

3자 지지층 비교 – 정책 지향

굳이 셋 만을 비교한다면 안철수 후보를 지지하는 사람들의 정책 지향은 홍준표 후보 지지자의 것과 유사도가 높게 나타난다.

output_35_0

3자 지지층 비교 – 지지후보 선택 기준

지지후보 선택 기준에 있어서는 문재인 후보 지지층과 안철수 후보 지지층이 매우 유사하다.

output_37_0

3자 지지층 비교 – 연령대별 호감도

연령대별 분류에서도 문재인 후보 지지층과 안철수 후보 지지층이 유사하다. 안철수 후보 지지층은 50대 이상에서도 꽤 나타난다는 것이 차이라면 차이.

output_39_0

3자 지지층 비교 – 지역별 지지율

지역별 분류에서도 문재인 후보 지지층과 안철수 후보 지지층이 유사하다.

 

종합하자면 이렇다

  • 정책 지향성에 있어서는 [홍준표, 유승민, 안철수] 후보군, [문재인, 심상정] 후보군으로 나눌 수 있다. 조사 대상이 두 가지 사안 뿐이었다는 한계가 있으나 사드 배치(외교, 안보)와 일자리 정책(청년, 복지, 경제)이라는 핵심 정책에 대한 조사였으므로 지지층 성향을 파악하는 데에는 충분하지 않았나 싶다.
  • 연령별 분류에 있어서는 [문재인, 심상정] / [안철수, 유승민] / [홍준표] 후보군으로 나눌 수 있다.
  • 지역별 분류에서는 [문재인, 안철수] / [홍준표, 유승민] / [심상정] 후보군으로 나눌 수 있다.
  • 문재인 후보 지지층은 전통적인 민주당계 지지층의 모습을 보여주는 듯 하다. 지역이 그러하고 연령이 그러하며 정책지향성이 그러하다. 마찬가지로 홍준표 후보 지지층은 전통적인 한나라-새누리당계 지지층의 모습을 보여주는 듯 하다.
  • 안철수 후보 지지층은 지역, 연령에 있어서는 진보로 분류되는 그룹이나, 속한 그룹과 별개로 보수적인 가치를 지지하는 모습을 보여준다. 뭇 언론에서 칭하는 것 처럼 이를 ‘중도’라 말할 수도 있겠다.

분석에 사용한 데이터 및 분석 과정과 여론조사 데이터를 긁어모으는데 사용한 스크립트는 각각 여기여기서 볼 수 있다. 실시간으로 계속해서 쌓이는 데이터여서 현재는 당시 분석에 사용한 데이터의 위치가 바뀌었을 수도 있다.