고급통계모형/다차원척도mds

박영선과 권오성 한겨레 MDS 분석 기사

학위논문통계 2019. 7. 27. 17:54



박영선이가 뉴스공장에 나와서 하는 이야기를 들어 봤는데요. 얘가 참 믿을 만한 얘는 아닌데 정치적 순발력은 기가 막히네요.

 

지금 한일 사태에서 웬만한 얘들이면 멘붕와서 헤매고 있을텐데 오히러 자신의 정치적 입지를 더 강화시키는 기회로 삼고 있네요.

 

뭐 일만 잘하면 되죠. 문재인이가 박영선이는 잘 뽑은 것 같습니다. 저도 처음에는 안 좋아했죠. 그러나 능력을 본 적이 없으니 박영선이를 비토할 근거가 없으니 가만있었던 것이고요. 그런데 지금 하는 것 보면 상당히 잘 뽑은 것 같습니다.

 

박영선이가 데이터가 4차 산업시대의 쌀이라고 하는데 뭐 그런 정도까지는 아니고요.

 

구체적으로 빅데이터를 가지고 분석한 예가 한겨레에 실려있네요. 권오성 기자가 동성애라는 말이 들어간 신문기사를 가지고 토픽 분석이라고 한 것이 있습니다. 이걸 제가 구체적으로 어떻게 하는지 보여 드리겠습니다. 아. 이 친구가 한 것을 제가 또 해본다는 것이 아니고 밑에 실제로 어떻게 돌아 가는지 설명을 해 드리겠다는 것이죠.

 

일단 권오성이라는 친구를 욕하는 것은 아니고요. 이 정도 분석을 제대로 하려면 통계학 석사는 해야 합니다. 그것도 상당히 잘 하는 수준으로. 이쪽 전공이 아닌 것 같은데 이런 노력 하는 것 자체가 상당히 잘 봐 줄 수 있습니다.

 

이 친구가 분석한 결과를 그림으로 보여 주겠습니다.

    






뭘 한지 잘 모르겠죠.



 

그럼 동성애 말고 문재인이라는 말이 들어간 기사를 다 골라서 이런 분석을 한번 한다고 생각해보죠. 그럼 문재인이라는 말이 들어간 기사에는 또 어떤 말들이 들어가 있을까요? 당연히 김정은, 트럼프, 핵, 순방, 회담, 최저 임금, 자영업자, 카풀, 택시, 청년, 고용, 부동산, 아파트, 광풍, 인사, 청문회, 이런 단어들이 많이 들어가 있겠죠. 하여간 수 많은 단어들이 나올 겁니다. 이런 것이 약 천개가 있다고 하죠.

 

물론 미투 관련된 단어도 많이 들어갈 것 같지만 이건 언론 기사에는 문재인하고 관련되어서는 거의 없을 겁니다. 만일 연구 텍스트를 언론 기사가 아닌 인터넷 게시판이나 SNS으로 하면 이젠 문재인과 더불어 문재앙, 미투, 메갈, 워마드, 일베, 이런 단어들이 많이 나올 겁니다.

 

그럼 앞에서 찾은 만 개의 단어들을 보면 우리가 몇 개 핵심적인 큰 줄기를 알 수 있을 겁니다.

 

즉, 북한개방, 외교정책, 카풀공방, 최저임금제 공방, 부동산 문제, 인사 정책 뭐 이런 것들이겠죠.

 

그래서 보이지는 않지만 이런 핵심적인 줄기를 이쪽 분석에서는 토픽이라고 합니다. 잠재변수라고 하기도 하고 통계학에서는 요인, 또는 주성분이라고 합니다.

 

 

이렇게 뽑은 토픽이 어떻게 상호관련이 있는지 대부분 이차원에서 그래프로 그려주는 것이 다차원스케일링 분석이라 합니다.

 

그런데 이 권오성이라는 친구는 일단 뽑은 토픽에 대해서 제대로 해석을 못하고 있죠. 25개 정도 토픽을 뽑았는데 앞의 가장 중요한 몇 개도 제대로 해석을 못한 것이죠. 그런데 나머지 20개를 어떻게 해석합니다.

 

이건 요인분석이나 주성분 분석을 통해 하는데요, 기본적으로는 고유값이 1 이상인 경우만 뽑는데 이런 경우는 가능하면 요인 수는 많이 잡으면 안됩니다. 그리고 동성애 관련된 토픽 분석 자체 주체를 잘 못 뽑은 것입니다. 이게 앞에서 이야기한 잠재요인을 해석하기기 쉽지 않거든요.

 

그러나 제가 앞에서 문재인 예를 든 것은 쉽게 잠재요인을 뽑을 수가 있습니다. 실제 데이터를 돌리지 않아도 어느 정도 예상이 가능하다는 것이죠.

 

그리고 다차원스케링 분석도 x, y 축 해석이 가능해야 제대로 된 분석입니다. 그런데 x, y 축 해석이 불가능하죠. 잠재요인 25개가 (x,y) 그래프 상에서 위치한 것을 보고 x, y 축을 해석을 해야 하는데 잠재요인 25개 자체가 해석이 안되잖아요.

 

하여간 이런 분석을 하려면 몇 단계 과정이 있습니다.

 

1) 이런 데이터를 쉽게 뽑을 수가 있어야 합니다. 이걸 박영선이가 지금 핵심적으로 하겠다는 이야기입니다. 권오성 기사에서는 한국 언론 재단에서 이 기사 데이터를 보유하고 있다고 하네요. 또 이걸 분석이 가능하려면 pdf 파일이 아니라 text 파일 형태로 있어야 합니다.

 

즉 동성애라는 단어가 들어간 text 기사 파일을 전부 수집합니다.

 

2) 모은 십만개 text 기사 파일을 가지고 text process를 해야 합니다. 즉 명사만 쭉 뽑아냅니다. 한글은 형용사, 동사 이런 것은 뽑기가 힘듭니다. 영어는 동사만 시제만 있지만 한글은 형용사, 동사 이런 것들이 변화무쌍하기 때문에 힘듭니다.

 

이 작업은 이론적으로는 별 어렵지는 않습니다. 오히려 계산기 프로그램보다 훨씬 쉽다고 생각하시면 됩니다.

 

이 친구 기사에 있는 설명은 오히려 계산기 프로그램에 해당합니다. 그냥 텍스트 프로세싱하는 프로그램은 훨씬 간단합니다. 예를 들어 이런 것입니다. 계산기 명령어에서

 

(35+4)*(17-34)

 

이렇게 쳤다고 하죠. 그럼 엔터하면 계산기 프로그램이 돌아서 바로 우리가 원하는 답이 나옵니다.

 

그럼 실제 계산기 프로그램에서는 어떻게 작동할까요.

 

먼저 35는 프로그램에서는 “3”이라는 자판기에 있는 문자, “5”라는 자판기에 있는 문자로 인식합니다. 숫자로 인식하는 것이 아니고요. 흔히애스키라고 하죠.

 

그럼 프로그램에서 “3”이라는 문자를 숫자 3으로 바꾸고 “5”라는 문자를 5라는 숫자로 바꾸어 3*10+5 숫자로 바꾸어야 합니다.

 

이걸 어떻게 바꾸죠 하는 질문을 하실 수가 있습니다. 프로그램 언어를 배우시면 됩니다. 포트런이나 C 같은 언어를 배우시면 하는 방법이 다 나옵니다. 그리고 ( ) 같은 것들을 처리를 해줘야 합니다. 그렇지 않으면 계산 순서가 엉망이 될 수가 있거든요.

 

text process에서는 이런 것이 필요 없지만 white 문자라고 하나 지금 잘 기억 안나는데 콤마, 스페이스 키, tab 키, end of line 이런 것을 식별해서 단어를 쪼개 내어야 합니다. 그리고 명사만 뽑아내기 위해서 사전이 필요하고 이 사전과 비교 작업을 해야 합니다.

 

이것 공부하시려면 Kernighan & Ritchie 가 지은 The C Programming Language 보시면 정말 자세히 설명되어 있습니다. 이 책은 white book이라고 세계적인 고전 책입니다. Ritchie라는 분은 Unix도 만들었죠. 몇 년전에 돌아가신 걸로 아는데요.

 

 

인터넷에 잡스, 빌게이츠, 그리고 Ritchie 이 세 사람 중 누가 컴퓨터 역사에 도움이 되었는가 하는 논쟁을 하는 것을 본 적이 있습니다. 전산과 출신이라면 아마 Ritchie를 선택하지 않을까요? 지금 맥 OS도 Unix 흉내 낸 것입니다. 물론 안의 kernel은 Mach를 쓰겠지만. 넥스트에서 쓰던 NextStep, OpenStep을 맥에다 포팅한 것이거든요.

 

 

하여간 이런 식으로 십만개 기사에서 천 개의 단어를 뽑았다고 하죠.

 

 

3. 각 기사마다 이렇게 뽑은 천개의 단어의 비중, 즉 백분율을 구합니다. 그런 다음 SPSS에서 요인분석을 돌립니다. 탐색적 요인분석이라고도 하죠. 아니면 주성분 분석을 하거나요. 그러나 이건 SPSS에서는 없습니다.

 

그래서 이걸 표로 그리면

 

데이터: 표에 있는 값은 각 문서에서 해당 단어의 비중, 즉 백분율을 말합니다.

 

문서

문재인

김정은

트럼프

순방

회담

최저

임금

...

청문회

문서1

0.321

0.176

0.244

0.187

0.032

0.264

0.000

 

0.000

문서2

0.276

0.351

0.277

0.256

0.176

0.217

0.000

 

0.000

.

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

문서

십만

0.178

0.000

0.010

0.010

0.000

0.087

0.315

 

0.000

 

이 데이터를 가지고 SPSS에서 요인분석을 하면 다음과 같이 나옵니다.

 

단어

요인1

(북한개방)

요인2

(최저임금)

요인3

(카풀논쟁)

요인4

요인5

요인6

문재인

0.732

0.032

 

 

 

 

김정은

0.658

0.064

 

 

 

 

트럼프

0.771

0.019

 

 

 

 

0.675

0.034

 

 

 

 

순방

0.332

0.024

 

 

 

 

회담

0.487

-0.071

 

 

 

 

최저임금

0.021

0.776

 

 

 

 

자영업자

-0.034

0.654

 

 

 

 

온라인

0.004

0.564

 

 

 

 

카풀

0.002

0.176

0.765

 

 

 

택시

0.104

0.154

0.865

 

 

 

청년

0.056

0.468

 

 

 

 

...

...

...

 

 

 

 

청문회

0.020

-0.101

 

 

 

 

고유값

6.754

5.387

3.287

3.333

.

.

변동설명력

17.287%

14.245%

11.222%

12.319%

.

.

 

표 안에 있는 값을 요인적재값이라고 하는데 이 요인적재값을 보면 잠재요인, 즉 토픽을 해석합니다.

 

그 다음 각 요인간의 거리를 구할 수 있습니다.

 

요인1(토픽1)=(0.732, 0.658, 0.771, 0.675, ... , 0.020)

요인2(토픽2)=(0.032, 0.064, 0.019, 0.034, ... , -0.101)

 

이런 식으로 표시하면 단어를 천개를 뽑았으니까 요인1(토픽1)과 요인2(토픽2)는 1000 차원 공간에서 2점으로 표시할 수 있고, 이 2점간의 거리를 구할 수 있습니다. 이런 식으로 2개의 요인간의 거리를 일일이 다 구할 수 있습니다.

 

그래서 1000차원 공간이 아니라 2차원 공간에서 가능하면 앞에서 구한 요인(토픽)간의 거리와 가능하면 유사하게 그리는 것이 다차원척도(mds) 기법입니다. 즉 2차원 공간에서 각 요인(토픽)간의 거리가 원래 1000차원 공간에서 각 요인(토픽)간의 거리와 가능하게 비슷하게 그리는 것이 목적입니다.

 

여기서도 2차원 공간 (X, Y) 좌표의 해석이 가능해야 합니다. 그래야 제대로 된 분석입니다. 즉 2차원 공간에서 찍힌 토픽을 보고 각 토픽은 어떤 점이 높고, 어떤 점이 낮고 또 이 토픽과 비슷한 토픽들이 뭔가 있는지 이런 것을 알 수 있다는 것이죠. 축의 해석은 찍힌 토픽의 위치를 보고 분석하는 사람이 주관적으로 하는 것입니다. 앞의 토픽, 잠재요인도 요인적재값을 보고 주관적으로 하듯이요.

 

그래서 앞의 동성애 그림의 결과를 다시 한번 더 보면

    








 










    






왼쪽 위는 다차원척도 2차원에서 그린 것이고요. x, y 축은 해석은 못했습니다. 왜냐하면 토픽(잠재요인) 자체의 해석부터 못했기 때문입니다. 그리고 왼쪽 아래 타원의 % 그림은 변동설명력을 이야기하는 것입니다. 변동설명력이 높을수록 전체 기사에서 뚜렷하게 나온 토픽이라는 것을 의미합니다. 낮은 것은 주제의식이 희미한 것을 이야기하고요.

 

그리고 오른쪽 그림은 희미해서 잘 안보이는데 빈도 관련된 것으로 보입니다. 각 요인(토픽)의 요인적재값을 넣었으면 더 의미가 있었을 것 같은데요. 확실히 알 수가 없네요. 위 SPSS 요인분석 표에 나오는 요인적재값이 있지요. 그걸 이야기할 것입니다.

 

그런데 권오성 기자 글을 보면 동성애가 전부 다 크게 나왔다는 것을 봐서는 요인회전을 안 하는 것 같습니다. 요인회전을 하면 그렇게 나오지 않습니다. 요인회전을 해야 요인(토픽)의 해석이 제대로 됩니다. 그래서 이건 치명적인 실수인 것 같고요.

 

 

뭐 이런 것 어디에 쓸 수 있을가요? 예를 들어 기업의 명성이나 평가를 매달 확인해 볼 수 있습니다. 이런 건 기사보다 블로그나 SNS을 대상으로 하는 것이 더 나겠죠. 또는 신제품 출시했을 경우 소비자 평가 같은 것도 분석이 가능하겠고요.

 

 

만약 저에게 문재인 관련 기사를 대상으로 분석을 해 달라고 하면 제가 할 수 있을까요. 죄송하지만 할 수가 없습니다. 데이터를 찾고 관련 분석 tool을 저에게 주셔야 분석해 줄 수 있습니다. 이런 것 알아보기 귀찮아서 안합니다. 지난 학기에 누가 의뢰를 했는데 인터넷에 공짜 tool이 있으니까 그걸 알아보시라고 분석을 안 받았습니다.

 

 

그럼 이런 분석 tool은 제가 만들 수 있을까요. 아마 옛날에 배운 프로그램 공부 다시 한다면, 그리고 이 작업만 한다면 1년안에는 비슷하게 만들 수 있지 않을가요 생각합니다.

 

 

만약 똘똘한 친구 몇 명만 보내준다면 3-4달안에 상당히 괜찮은 상업용 프로그램을 만들 수 있을 거라 봅니다.

 

1) 웹 서치를 통해 문서를 뽑는 프로그램을 능숙하게 하는 친구

 

2) 테스트 프로세스 작업과 사전 search 하는 일을 능숙하게 하는 친구

 

3) 국어 문법 능력이 뛰어난 친구

 

4) 행렬 계산 알고리즘을 능숙하게 구현할 수 있는 친구

 

5) 벡터 그래픽을 예쁘게 구현할 수 있는 친구

 

통계 이론이야 MCMC에서 소개한 Johnson & Wichern 의 책에 보면 기본적인 것 다 있고요 또 혹시 최근에 발전한 것이 있으면 논문 몇 개 찾아서 읽어 보면 되죠.

 

 

그래서 이런 쪽도 좋은 프로그램을 만들 능력이 있으면 세계적인 프로그램으로 개발 가능할 수 있습니다. 시간별로 문서가 계속 증가하고 있잖아요. 그럼 이 추가된 문서에서 나온 정보를 가지고 추가된 부분만 가지고 지속적으로 업데이트를 해 준다는 것이죠. 이런 개념이 머신러닝입니다. 이건 기존의 통계학 이론에서는 나오지 않습니다.

 

 

그래서 우리가 이런 프로그램을 개발하고, 또 이 프로그램을 수출하고, 또 이런 툴을 사용하여 우리에게 유용한 정보를 제공하려고 하면 일단 문서, 즉 빅데이터를 추출할 수가 있어야 합니다. 이런 데이터 저수지를 만드는 것을 박영선이가 하겠다는 것입니다.