인공지능관련/인공지능(AI)

구글 검색 알고리즘, 의미망 분석

학위논문통계 2016. 10. 28. 15:14

 

 

1. 지난번 구글 PageRank 알고리즘은 간단하게

 

 

p=Ap

 

라는 형태로 표시된다고 했습니다. 여기서 p는 웹문서의 중요도, 이걸 정규화하면 웹 이용자가 웹문서 방문할 확률이 되겠죠. 만약 최순실을 단어를 포함하고 있는 웹문서가 만개라고 이 p는 만개의 숫자를 가지는 벡터가 되겠습니다. A는 전이확률 행렬이 되고요. 그래서 만*만 차원의 행렬이 되겠습니다.

 

그럼 위 식으로 어떻게 한다는 것일까요. 일단 A는 사전에 검색 로봇이 돌아다니면서 이미 값을 구해 놓습니다. 그럼 초기에 적당한 p 값을 임의로 설정합니다. p0라고 하죠. 그리고 위에 식의 오른쪽에 넣습니다. 그럼 왼쪽에 다음의 p값이 p1이 구해집니다.

 

p1=Ap0

 

여기서 구해진 p1을 또 오른쪽에 넣습니다. 그럼 두 번째 p2가 구해집니다.

 

p2=Ap1

 

이런 식으로 계속 진행해 나갑니다. 언제까지? p(i+1)=p(i), 실제로는 p(i+1)과 p(i)가 거의 비슷해질 때까지 구하는 것입니다. 그래서 최종적으로 구해진 p값에서 값이 큰 순서대로 검색 결과에 노출시켜 줍니다.

 

지금까지 이야기한 것이 컴퓨터로 근사치를 찾아가는 수치해석 방법론입니다. 또한 마코프 체인 이론에서 균형분포를 찾아가는 과정이기도 하고요.

 

그럼 더 간단하게 푸는 방법이 없는가?

 

위의 식

 

p=Ap

 

 

 

을 잘 보면

 

1*p=Ap

 

입니다. 이 말은 A의 고유값이 p이 1이라는 말이고 p는 고유값 1에 해당하는 고유벡터입니다. 그럼 전이확률 행렬의 고유벡터를 구하면 바로 끝납니다. 물론 고유벡터 구하는 것이 어렵지 않느냐고 질문할 수 있지만 이건 데이터 처리 프로그램, S. R, Matlab, SAS 등에 그냥 명령문만 치면 바로 구해줍니다. 본인이 짜려면 당연히 수치해석 책을 보고 연습해야 하고요.

 

문제는 고유값 1에 해당하는 고유벡터가 하나가 아니라는 점이죠.

 

행렬 이론에 더 알고 싶지만 시간이 없는 분은 앞에서 소개한 Johnson & Wichern의 다변량 책의 앞부분을 보시기 바랍니다. 대학교 학부 1학년 수학 실력 정도면 일주일이면 기본적인 행렬과 통계학과의 관계에 대해 전문적인 지식을 얻을 수 있습니다.

 

 

 

2.

 

요새 언론 기사에 보면 의미망 분석이라고 나오는데 현재 제가 보고 있는 책 중에서는 이 의미망 분석이라는 것은 안 나옵니다. 아직 다 보지는 않았지만요. 그러나 Barber의 머신러닝 책에 보면 기본 뼈대인 Latent Semantic Analysis라는 분석은 있습니다.

 

이건 사회과학 논문에서 하는 설문문항 신뢰도 타당도 분석을 위해 탐색적 요인분석과 거의 같은 분석입니다. 설문문항들이 학술적 개념인 연구변수를 잘 측정하는가를 알아 보는 것입니다.

 

예를 들어 스트레스를 경제적 스트레스와 인간관계 스트레스 두 개가 있다고 생각해보죠. 그래서 직장인의 경제적 스트레스와 인간적 스트레스를 설문조사를 통해 측정하려고 합니다. 통상 Likert 5점 척도(1=전혀 그렇지 않다에서 5=매우 그렇다까지)로 많이 물어봅니다.

 

이럴 경우 그냥 무식하게 “너의 경제적 스트레스가 어느 정도인가”, “너의 인간적 스트레스가 어느 정도인가” 이렇게 물어보지 않습니다. 이렇게 막연하게 물어보면 사람들이 자신의 스트레스 정도를 제대로 평가할 수 없습니다. 그래서 가능하면 경제적 스트레스나 인간관계 스트레스의 구체적인 예를 여러 개 들어 설문조사를 실시합니다.

 

이렇게 사전에 나름 머리를 써서 설문문항을 만들었다고 해서 이게 실제 조사에서 제대로 된 것인가 알 수는 없습니다. 그래서 실제 분석에 들어가기 전에 자신이 만든 설문문항이 연구하고자 하는 “경제적 스트레스”와 “인과관계 스트레스”를 잘 측정하고 있는지 사전에 확인 작업이 필요합니다. 그래서 안 좋은 설문문항은 제외하고 분석에 들어갑니다. 제외한다는 것은 애초에 이 안 좋은 설문문항은 조사를 안 한 것 처럼 처리한다는 이야기입니다.

 

 

(실제로 논문 쓸 때는 자신이 만드는 것이 아니라 기존에 학계에서 만들어진 설문문항을 자신의 연구 상황에 맞게 살짝 변형해서 사용합니다.)

 

 

예를 들어 “경제적 스트레스”의 설문문항으로

1) 이 돈으로 살림하기 힘들다,

2) 주변 동료보다 적게 받는다,

3) 경쟁 회사보다 돈을 적게 받는다 이렇게 3 문항을 만들고,

 

“인간관계 스트레스”의 설문문항으로

1) 상사와 잘 지내지 못한다

2) 동료와 잘 지내지 못한다

3) 부하와 잘 지내지 못한다

 

이렇게 3문항을 만들었다고 하죠. 그래서 설문조사하여 코딩한 다음 SPSS 같은 통계 프로그램에서 요인분석(Factor Analysis)를 돌립니다. 이 요인분석의 결과는 통계 프로그램마다 결과가 다 다릅니다. 공식이 아니고 수치해석으로 근사치를 찾기 때문입니다.

 

그래서 요인분석을 돌린 결과가 다음과 같이 나왔다고 하죠. 표에 있는 값을 요인적재값(factor loadings)이라 합니다.

 

구성개념

(연구변수)

설문문항

요인1

요인2

경제적 스트레스

1. 살림

-0.108

0.824

2. 동료 수입비교

0.201

0.713

3. 경쟁회사 수입 비교

0.513

0.632

인간관계

스트레스

1. 상사관계

0.814

0.127

2. 동료관계

0.911

0.201

3. 후배관계

0.322

0.179

 

그럼 먼저 각 줄에서 요인적재값이 큰 것부터 확인을 합니다. 표에 색칠 한 부분입니다. 그럼 경제적 스트레스는 요인2에 해당하고, 인간관계 스트레스는 요인1에 해당한다는 것을 알 수 있습니다. 또 기본적으로 경제적 스트레스 설문문항은 요인2, 그래서 경제적 스트레스 연구변수와 관련되고, 인간관계 스트레스 설문문항은 요인1, 그래서 인관관계 스트레스 연구변수와 관련이 있다는 것을 알 수 있습니다.

 

그러나 인간관계 스트레스의 3, 후배관계의 요인적재값이 0.322로 너무 작은 값이 나옵니다. 최소한 0.5보다는 커야 합니다. 엄격하게 하면 0.7 이상으로 기준을 잡을 수 있습니다. 이렇게 엄격하게 기준을 잡으면 많은 설문문항이 부적절한 설문문항으로 제외하게 됩니다. 하여간 3. 후배관계 스트레스 문항은 부적절한 설문문항으로 제외합니다.

 

또 경제적 스트레스는 3. 경제회사 수입비교에서는 요인적재값이 0.632로 어느 정도 괜찮은 값이 나왔지만 요인1에 해당하는 요인적재값이 0.513으로 이 값도 어느 정도 높게 나왔다는 것이죠. 이 말이 뭘 의미하는가 하면 3. 경쟁회사 수입비교 설문문항은 ‘경제적 스트레스’의 설문문항으로 해석될 수 있으나 ‘인간관계 스트레스’의 설문문항을도 해석될 수가 있다는 것이죠. 이처럼 애매모호한 설문문항 역시 제외하여야 합니다.

 

이 의미망 분석도 이와 개념이 비슷합니다. 만약 최순실 관련해 의미망 분석을 한다고 하죠. 그럼 최근 웹문서를 뒤져 보통명사와 고유명사 등의 단어를 찾는 것이죠. 이걸 위에서 한 것처럼 요인분석을 하면 이렇게 나왔다고 하죠.

 

구성개념

(연구변수)

설문문항

요인1

요인2

우병우 관련

노무현

-0.108

0.824

조응천

0.201

0.713

우병우

0.513

0.932

최순실 관련

최순실

0.941

0.188

정유라

0.814

0.127

최태민

0.911

0.201

정윤회

0.741

0.179

기타

기타 단어 들

...

...

 

그럼 요인1은 최순실 가족 관련 요인이고, 요인2는 우병우 관련 요인이라는 것을 알 수 있습니다.

 

전에도 여러번 이야기 했지만 요인분석과 주성분 분석은 매우 비슷합니다. 동전의 앞뒤면 관계처럼요. 이걸 주성분 분석으로 했다면(물론 수치 값은 다릅니다)

 

Y1=0.941*최순실+0.814*정유라+0.911*최태민+0.741정윤회+(-0.108)*노무현+0.201*조응천+0.513*우병우

 

Y2=0.188*최순실+0.127*정유라+0.201*최태민+0.179정윤회+0.824*노무현+0.713*조응천+0.932*우병우

 

이런 식으로 나옵니다. 그럼 Y1는 최순실 가족 관련 성분, Y2는 우병우 관련 성분으로 해석 할 수 있습니다.

 

 

이게 의미망 분석의 기본 뼈대이고요. 그러나 통상 기사에 나오는 원과 선이 나오는 네트웍 모양은 제가 본 책에서는 아직 나오지 않습니다. 그러나 위 단어들의 상관관계를 분석하면 기사에 나오는 의미망이 그려지지 않을까 추측합니다. 상관관계가 높으면 연결축의 크기가 커지고 다른 단어들과의 통합적인 상관관계가 크면 원의 크기도 점점 커지는 것이죠.

 

 

현실적으로 이런 의미망 프로그램을 개발한다고 할 때는 여러 가지 문제가 생길 수 있습니다. 검색된 모든 단어를 다 하면 골치가 아픕니다. 일단 우리가 관심을 가지는 단어는 보통명사나 고유명사입니다. 조사, 부사, 형용사, 동사 이런 것은 관심 대상이 아니죠. 그럼 이런 단어를 제외하고 조사하려면 text process를 할 때 언어 구조적인 문제까지 고려를 해야 한다는 것이죠. 그럼 프로그램이 매우 골치 아파집니다.

 

그래서 두 가지를 고려해야 합니다.

 

1. 각 문서에 어떤 단어가 어떤 비중으로 나오는가? 빈도가 높을수록 중요한 의미를 가집니다.

 

2. 불필요한 단어를 어떻게 자동적으로 삭제시킬 수 있는가? 조사 같은 것은 수 많은 웹문서에 등장합니다. 그래서 어떤 단어가 수 많은 웹문서에 등장하면 그 단어를 의미없게 만들어줘야 합니다. 즉 역으로 가중치를 줘야 합니다.

 

그래서 Barber의 러시런닝 책에 있는 것 이미지로 보면 다음과 같이 정의해서 PCA를 합니다.