개요

- 그래프 데이터를 처리하는 알고리즘: PageRank, SimRank, 커뮤니티 탐지, 스팸 탐지

- Web as a directed graph

  • Nodes = Webpages
  • Edges = Hyperlinks

- 웹을 체계화(organize)하는 방법

  • First try: 인간이 직접 분류하는 것(Human curated)
    • Web directories: Yahoo, DMOZ, Looksmart
  • Second try: 웹 검색 엔진(Web search)
    • Information Retrieval investigates: 작고 신뢰있는 집합에서 관련 문헌을 어떻게 잘 찾아내는지 연구하는 학문
      • Newspaper articles, Patents, etc.

- 실제 웹은 너무 거대하며, 신뢰되지 않는 문서들이 매우 많다. 스팸도 그러하다.

- 검색 엔진의 2가지 난제

  • 웹은 많은 정보를 포함한다. 신뢰(trust)에 대한 정보를 어떻게 알 수 있나?
    • 신뢰있는 페이지들은 서로서로 참조할 것이다.
  • (키워드)“newspaper”를 질의할 때 최고의 대답(검색결과)는 무엇인가?
    • newspaper에 대해 실제로 아는 페이지들은 많은 newspaper들을 참조하고 있을 것이다.

- 그래프에서 노드(웹 페이지)를 등급 매기는 방법

  • 모든 웹 페이지는 동등하게 중요하지 않다.
  • 웹 그래프 노드 연결성에 대해 많은 다양성이 있다.
  • 링크 구조에 따라 페이지들에 등급을 매길 수 있다.

- 링크 분석 알고리즘(Link Analysis Algorithms): 그래프에서 노드의 중요도(importances or score)를 계산하기 위한 접근법

  1. Page-Rank

  2. Topic-Specific (Personalized) Page-Rank

  3. Web Spam Detection Algorithms

 

PageRank: The “Flow” Formulation

- 투표로 보는 링크(Links as Votes)

  • 페이지는 많은 링크를 가질수록 중요해진다.
    • In-coming links: 노드로 들어오는 링크
    • Out-going links: 노드에서 나가는 링크
  • in-links를 (다른 페이지로부터 받는) 투표로 보기
    • 예를 들어, 스탠포드 대학 사이트는 23,400 의 in-links를 가진다.
    • in-links가 많은 노드로부터 in-links를 받는 노드는 중요도가 더 높은 링크를 갖는다.
      • 인기있는 웹페이지로부터 참조를 받으면 다른 링크보다 중요도가 더 높아진다.
  • 재귀적으로 in-links의 근원지(source)를 찾아 링크마다 scoring
    • 아래 노드들의 점수는 다른 노드에서 들어오는 score와 나가는 score가 동일할 때의 값이다. (a.k.a 동적 평형)

- 단순 재귀 공식화(Simple Recursive Formulation)

  • 각 링크의 투표(vote)는 들어오는 페이지의 중요도에 비례한다. (중요도만큼 투표를 받은 것으로 간주)
  • 중요도 rj를 가지는 페이지 j가 n개의 out-links를 가진다면, 각 out-links는 rj/n 만큼의 중요도를 다른 노드에게 준다.
  • 페이지 j의 중요도는 모든 in-links의 값들의 합이다.
  • 즉, 노드는 자신의 score에서 out-links의 개수만큼 나눈 값을 다른 노드로 전달한다.

[위의 예시에서 페이지 j의 중요도]

노드 k에 out-links의 개수는 4이기 때문에, 노드 k의 각 out-links의 값은 노드 k의 중요도 / 4 이다.

노드 i에서 out-links의 개수는 3이기 때문에, 노드 i의 각 out-links의 값은 노드 i의 중요도 / 3 이다.

노드 j에서 in-links는 노드 i와 k에서 오는 것만 있으므로, 중요도는 (노드 k의 중요도 / 4) + (노드 i의 중요도 / 3)이 된다.

 

PageRank: The “Flow” Model

- 중요한 페이지에서 투표값(score or vote)은 더욱 가치가 있다. 한 페이지는 다른 중요한 페이지들로부터 참조되면 더욱 중요해진다.

- 페이지 j에 대한 rank rj 의 정의

  • di 는 노드 i의 out-degree (나가는 링크의 개수)이다.
  • 노드 i에서 노드 j로 나가는 링크가 존재한다고 가정

- Flow 수식 풀기

[선형시스템으로 보고 문제를 풀 수 있다.]

  • 3개의 수식, 3개의 미지수, 상수는 없을 때, 유일해는 없다.
  • 모든 해는 scale factor를 나머지 연산한 것과 동일하다.
  • 추가적인 제약이 유일해를 이끌어낸다.

- 가우시안 소거법은 작은 예제에서는 잘 동작하지만, 매우 큰 웹 그래프에 대해서는 더 나은 방법이 필요하다.

 

PageRank: Matrix Formulation

- 확률론적 인접 행렬(Stochastic adjacency matrix)

  • 페이지 i가 di 값의 out-links 를 가질 때, 페이지 i에서 j로 링크가 있다면 인접행렬 M의 원소 Mij=1/di가 되며, 링크가 없다면 해당 원소는 0이 된다.
  • 행렬 M은 column stochastic matrix 로 열 벡터의 합은 1이다.

- Rank Vector r: 원소가 페이지당 rank 에 해당되는 벡터

  • ri 는 페이지 i의 중요도 점수이다.
  • 벡터의 원소의 합은 1이다.

- Flow 수식은 아래와 같다.

[좌변의 r은 새로운 Rank Vector r 이다.]

  • 페이지 i의 score 를 페이지 i에서 j로 이동한 out-going link 의 개수로 나누면 노드 j의 score를 구할 수 있다.

- Eigenvector Formulation: rank vector r은 학률론적 웹 행렬(stochastic web matrix) M 의 eigenvector 이다.

  • 행렬 M은 모두 양수인 원소를 갖는 column stochastic이기 때문에 가장 큰 eigenvalue는 1이다.

  • 벡터 r의 길이는 1이며, 행렬 M의 각 컬럼의 합도 1이다. M*r <= 1
  • 그러나 이 방법은 느리기 때문에 보다 효율적으로 벡터 r을 구해야 한다.
    • 그 방법을 Power Iteration이라고 한다.

 

Power Iteration Method

- n개의 노드를 갖는 웹 그래프가 주어질 때, 노드들은 페이지를 의미하고 간선은 하이퍼링크를 의미한다.

- Power iteration: 단순 반복 계획(a simple iterative scheme)

  • N = 웹 페이지 개수

  • 초기화 단계에서 N으로 나누는 것은 모든 페이지들이 평등하단 의미이다.

- 각 노드에 들어오는 score를 연립방정식으로 세우는 것이 중요하다.

- Power iteration은 가장 큰 eigenvalue에 대응하는 벡터인, dominant eigenvector를 찾는 방법

Thus 부분이 중요하다. 결국 M^k*r(0) 는 상수*(첫번째 eigenvalue의 k승 * 첫번째 eigenvector)에 가까워진다.

 

Random Walk Interpretation

- 랜덤 웹 서퍼(random web surfer)

  • t 시점에, 어떤 페이지 i를 서핑한다.
  • t+1 시점에, 서퍼는 랜덤으로 균일하게 페이지 i로부터 out-link를 따라간다.
  • 페이지 i로부터 연결된 페이지 j에서 끝이 난다.
  • 무한하게 위의 과정을 반복한다.

- p(t) = 서퍼가 t 시점에 페이지 i에 있음을 증명하는 i번째 좌표를 가진 벡터

- p(t)는 페이지에 대한 확률 분포이다.

- 고정 분포(The Stationary Distribution)

  • t+1 시점에 서퍼가 어디 있는가?
    • 랜덤으로 균일하게 link를 따른다.
    • p(t+1) = M*p(t)

  • p(t+1) = M*p(t) = p(t) 일 때, p(t)는 random walk의 고정 분포이다. 즉, 어떤 상태(state)에 도달한 것이다.
  • 원래 rank vector rr=M*r을 만족한다. 따라서 r은 random walk에 대한 고정 분포이다.

- 존재와 유일함(Existence and Uniqueness)

  • random walk 이론으로부터 주요 결과는 Markov processes로 알려졌는데, 어떤 조건을 만족시키는 그래프에 대해서 고정 분포는 유일하고 초기 확률 분포가 어떻든지 마침내 어떤 상태에 도달할 것이다.
  • 즉, 무한 루프가 아니다.

 

PageRank: The Google Formulation

- 3가지 질문

  1. 언제 끝나는가? (Does this converge?)

  2. 우리가 원할 때 끝나는가? (Does it converge to what we want?)

  3. 결과는 합리적인가? (Are results reasonable?)

 

- 문제점

  • Dead end: 어떤 페이지들은 out-links를 갖지 않아, random walk는 갈 곳이 없다.
    • r 벡터는 모두 0이 되는 현상
    • 이런 페이지들은 중요도를 누출시킨다. (leak out)

[마지막에 중요도가 0이 되었다.]

  • Spider trap: random walk가 트랩에 빠지는 현상
    • 모든 out-links가 그룹 내 에 있어서 외부 링크 벡터가 0이 되는 현상
    • 결국 모든 중요도를 없애버린다.

[모든 노드는 m에 도달가능하나, 역은 성립하지 않는다. 즉, m의 중요도만 남고 나머지는 0]

노드 m에 도달하면 계속 m에 대한 링크만 타고 가게 된다. (trapped)

- 해결책: Teleports

  • 구글은 spider trap에 대한 해결책을 제시했다. 각 시점의 스텝마다, 랜덤 서퍼는 2가지 옵션을 갖는 것이다.
    • 𝜷 를 가지고 랜덤으로 링크를 따라간다.
    • 1-𝜷 를 가지고 랜덤 페이지로 점프한다.
    • 𝜷 에 대한 일반적인 값은 0.8 ~ 0.9이다.
  • 서퍼는 몇몇 시점에 스텝 시 spider trap에 걸리면 텔레포트(teleport)할 것이다.

  • dead-end에서 확률 1을 가지고 랜덤으로 링크를 teleport 한다.
    • 이 때 노드의 개수만큼 확률을 나눠갖기 때문에 1이 분산된다.

m이 모두 0이어서 dead-end 상태였으나, random teleport 때문에 m에 ⅓ 씩 값을 갖게 된다.

- Teleport가 문제를 해결하는 이유

  • Spider-traps 은 문제는 아니지만, 트랩이 있는 PageRank의 score는 원하던 것이 아니다. 유한한 숫자만큼 이동(steps)하면 spider trap 으로부터 teleport 할 수 있다.
  • Dead-ends 는 문제가 맞다. 행렬은 column stochastic 이 아니어서, 초기 추측값이 다를 수 있다. 항상 갈 곳이 달리 없을 때 teleport해주어서 행렬의 column stochastic을 만들 수 있다.

- Random Teleport: 구글의 해결책

  • 각 단계에서 랜덤 서퍼가 가지는 두 가지 옵션
    • 𝜷 를 가지고 랜덤으로 링크를 따라간다.
    • 1-𝜷 를 가지고 랜덤 페이지로 점프한다.

- Google Matrix

[행렬 A가 Google Matrix 이다.]

  • NxN 행렬은 모든 원소가 1/N 이다.
  • 재귀적인 문제: r = A*r
  • Power method 가 여전히 잘 동작한다.
  • 𝜷 에 대한 정의
    • 실제로 0.8, 0.9 이다.

[ Google Matrix를 활용한 Random Teleports 모델 ]

 

PageRank 계산하는 방법

- matrix-vector multiplication

- 충분한 메모리를 가진다면 쉬우나, 실제로 행렬 A와 벡터 r은 매우 크다.

  • N = 1 billion pages
  • 각 원소마다 4바이트가 필요하고, r 벡터가 2 billion 개의 원소를 가진다면 대략 벡터 r 이 2개이므로 8 GB 가 필요하다.
  • 행렬 A 는 N*N 개의 원소를 갖게된다.

- Matrix Formulation: N개의 페이지들이 있을 때, out-links 를 di 개 가지고 있는 페이지 i가 있다면 다음과 같은 공식이 성립한다.

- random teleport

  • 페이지 i에서 모든 다른 페이지까지 teleport link를 추가하고 이동 확률(transition probability)을 (1-𝜷)/N 으로 설정한다.
  • 각 out-link 를 1/|di| 에서 𝜷/|di| 로 확률을 줄인다.
    • 전체에서 𝜷를 곱한 게 전체가 되었으므로 그만큼 값이 분산된다.
  • 각 페이지의 점수에 (1-𝜷) 를 곱하고 다시 분배한다.
    • 모든 웹페이지의 Rank Score 에서 (1-𝜷) 만큼 받아서 전체로 다시 분배(동일하게 나눠줌)
    • 결국 전체 score는 이전 score의 (1-𝜷) 가 된다.

여기서 행렬 M은 dead-ends가 없다고 가정한다. 벡터 r의 모든 원소의 합은 1이다.

- Sparse Matrix Formulation

  • 행렬 M은 sparse matrix이지만 dead-ends가 없다.
    • 각 노드에 10개의 link가 있으면 M의 원소의 개수는 10N 으로 근사한다.
  • 매 반복마다 새로운 벡터 r을 계산해야 하고, 상수값을 새 벡터 r 에 더해주어야 한다.
    • 이 방법으로 인해 계산이 빨라진다.

- Sparse Matrix Encoding: 0이 아닌 원소만 사용하는 것

  • link의 개수가 대략 공간에 비례한다.
  • 10N 개의 원소가 있으면 4*10*1 billion = 40 GB 를 차지
  • 여전히 메모리에는 올리기 힘들며, 오히려 디스크에 맞출 수 있는 크기이다.

  • 위의 행렬 구조를 사용하는 것이다. 첫번째 행은 0번 노드에서는 1번,5번,7번 노드로 가는 out-link만 가지고 있는 걸 의미한다.

 

- 큰 행렬을 이용하여 계산하는 방법 (Basic Algorithm: Update Step)

  • 새로운 벡터 r을 메모리로 맞추기 위해 충분한 RAM이 있다고 가정하자.
    • 오래된 벡터 r과 행렬 M은 디스크에 있다.

  • 위의 중간 행렬이 M인데 여기서 계산이 되는 행과 오래된 벡터 r의 계산이 될 원소만 메모리로 가져와서 연산이 끝나면 다시 한 줄씩 가져오는 것이다. 행렬이 디스크 공간 상에 순차적으로 저장이 되었기 때문에 디스크 연산이 근처 영역만 읽기(linear scan) 때문에 입출력 시간이 비교적 적다. 메모리에는 새로운 벡터 r만 있는데 random access 가 가능하므로 입출력 시간이 비교적 적다.
  • 새로운 벡터 r의 각 원소에는 행렬 M의 첫번째 행에 따라 오래된 벡터의 0번 원소의 score를 ⅓ 씩 나눠준 것이다.

  • 비용이 디스크에 새로운 벡터 r과 오래된 벡터 r을 써야해서 2|r|이 되고 행렬 M은 모든 원소를 한번씩 읽어야 하므로 |M|이 된다.
  • 여기서 비용은 디스크 입출력 연산만 포함한다.
  • 만약 메모리에 올려야 하는 새로운 벡터 r이 너무 크다면, 위의 방법을 사용하기 어렵다.

- 블록 기반의 갱신 알고리즘 (Block-based Update Algorithm)

  • 새로운 벡터 r을 블록 단위로 쪼개서 메모리에 올린다. 그리고 각 블록마다 한 번씩 M과 오래된 벡터 r을 스캔한다.

  • 행렬 M과 오래된 벡터 r을 스캔하는 비용이 커진다. k는 스캔하는 횟수=블록 개수

- 블록 스트라이프 갱신 알고리즘(Block-Stripe Update Algorithm)

  • 행렬 M을 stripe 단위로 나누어서 저장하는데, 연산 시, 필요한 원소만 읽고 쓸 수 있다.

  • 엡실론은 매우 작은 숫자이다. 1+엡실론 < k 라고 가정한다.
  • 벡터 r에 대해 (k+1)번 입출력 연산이 되는 이유는 마지막 1이 새로운 벡터 r을 저장하는데 드는 비용이기 때문이다.

 

PageRank 에 여전히 존재하는 문제점

- 페이지의 일반적인 인기도 측정

  • 이전까지는 link의 개수에만 영향을 받았다.
  • 그러나 페이지가 담고 있는 내용도 신경 쓸 필요가 있다.
    • Topic-Specific PageRank

- 중요도의 단순한 척도를 사용

  • 측정 항목을 늘릴 필요가 있다.
    • Hubs-and-Authorities

- 링크 스팸(Link spam)을 허용

  • 의도적으로 page rank 를 올리는 수단(linking 문제)을 방지해야 한다.
    • TrustRank

 

매우 큰 그래프의 분석: TrustRank 와 WebSpam

 

Topic-Specific PageRank

- 범용적인 인기도 대신에, 주제와 관련된 인기 척도를 사용

- 웹 페이지들이 특정 주제(e.g. “sports” or “history”)와 얼마나 가까운지에 따라 인기도를 계산하는 법

- 검색 요청(search queries)에 대해 사용자의 흥미를 기반으로 응답해줄 필요가 있다.

  • “Trojan” 이라는 단어를 검색했을 때, 국가 이름인지 사람 이름인지 알 필요가 있다.

- 랜덤 워커(Random walker)는 어떤 단계에서는 teleport를 할 작을 확률을 가진다.

  • Standard PageRank
    • 어떤 페이지든지 동일한 확률을 가진다.
    • dead-end와 spider-trap 문제를 피할 수 있다.
  • Topic Specific PageRank
    • 주제 구체적인, 관련 페이지들의 집합 = teleport set

- 기본 아이디어: random walk 마다 bias를 주기

  • 워커가 텔레포트를 할 때, 집합 S로부터 페이지를 선택한다.
  • 집합 S는 해당 주제와 관련된 페이지들만 포함한다.
  • 집합 S로 매 텔레포트가 발생하면, 매 순간 다른 벡터 r을 얻는다.

- Matrix Formulation

  • 잘 동작하게 하려면, PageRank 수식의 teleportation 부분을 갱신해줄 필요가 있다.

A is stochastic! —> 위의 조건은 도착지 노드가 s에 포함되는 경우

  • teleport set S에 있는 모든 페이지에 동등하게 가중치를 매긴다.
    • 페이지에 다른 가중치를 할당할 수도 있다.
  • 표준 PageRank에 대해서 연산
    • M으로 곱하고 벡터에 더한다.
    • sparseness를 유지한다.

위에 1번 노드로 들어오는 링크의 값은 tax로, 항상 1로 teleport 하므로 추가되는 값이다.

- Topic Vector S

  • 다른 주제에 대한 다른 PageRank를 생성
  • 어떤 주제 랭킹을 사용할 것인가?
    • Context: 사용자가 검색한 키워드의 목록 (history of queries)
    • 키워드 중 중의적인 의미가 있으면 이전 쿼리를 조회해서 의도를 알아내는 것이 목적
    • 사용자는 메뉴로부터 선택할 수 있다.
      • 검색 요청을 주제로 분류한다.
      • 검색 요청의 context를 사용할 수 있다.
      • User Context → 사용자의 북마크 등

 

그래프에서 근사 측정(measuring proximity)을 응용하기

- 예시: Relevance, Closeness, Similarity

- 좋은 근사 측정 방법

  • 최단 거리는 1개의 out-link만 있는 경우에는 그닥 좋지 않고, 네트워크 흐름도 긴 경로가 있는 경우 감점시키는 것이 없어서 그닥 좋지 않음
  • 다수의 연결
  • 연결의 품질
    • Direct & Indirect connections
    • Length, Degree, Weight, ...

- SimRank

  • k-partite 그래프에서 고정된 노드로부터 random walks
  • 설정 사항: k-partite 그래프는 노드의 종류가 k개이다.
    • Authors, Conferences, Tags

  • 노드 u로부터 Topic Specific PageRank → teleport set S = {u}
  • 노드 u에서 유사도를 측정해서 score를 낸다.
  • 문제점
    • 각 노드 u에 대해 한 번씩 수행되어야 한다.
    • 하위 웹 규모의 응용프로그램에 적당하다.

 

PageRank 요약

- “Normal” PageRank

  • 균일하게 랜덤으로 어떤 노드에 텔레포트 한다.
  • 모든 노드들은 자신에게 도착하는 서퍼의 확률을 동일하게 갖는다.
    • S = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]

- Topic-Specific PageRank (a.k.a. Personalized PageRank)

  • 주제 특화된 집합의 페이지에만 텔레포트 한다.
  • 노드들은 자신에게 도착하는 서퍼의 확률을 달리 갖는다.
    • S = [0.1, 0, 0, 0.2, 0, 0, 0.5, 0, 0, 0.2]

- Random Walk with Restarts

  • 같은 노드로 항상 텔레포트하는 Topic-Specific PageRank
  • 그러나, 항상 같은 노드에서 출발하면 비효율적이다.
    • S = [0,0,0,0,1,0,0,0,0]

 

TrustRank: Web spam과의 싸움

- Spamming

  • 검색 엔진 결과에서 페이지의 실제 값과는 어울리지 않게 웹의 페이지 위치를 상승시키기 위한 어떤 교묘한 동작(deliberate action)
  • in-links 개수 < out-links 개수

- Spam: spamming의 결과가 되는 웹 페이지

- SEO = Search Engine Optimization

- 전체 웹 페이지의 대략 10-15% 는 스팸이다. 많을수록 웹 랭킹이 흐트러진다.

- Web Search

  • 초기 검색 엔진은 웹을 크롤링해놓고 포함된 단어들에 따라 페이지를 인덱싱하였다. 따라서 검색 요청에 따라 해당 키워드를 포함하는 페이지들로 응답하였다.
  • 초기 페이지 랭킹은 중요도에 따라 다른 페이지들이 검색 요청과 매칭되는지 확인하였다.
  • 첫번째 검색 엔진은 (1) 요청 단어의 수 (2) 단어의 위치 e.g. titile, header 만으로 고려되어졌다.

- First Spammers

  • 사람들이 웹에서 무언가를 찾기 위해 검색 엔진을 사용하면서, 상업적인 관심이 사람들을 자신의 사이트로 데려오기 위해 검색 엔진을 악용하는 것에 있었다.
    • 특정 사이트의 랭킹을 올리려는 사람들에 의해
    • 예제: 영화에 대한 것으로 구실을 삼으나, 셔츠 판매원인 경우
  • 웹 페이지에 대한 관련성/중요도를 높게 이루는 기술이 필요
    •  예제: 영화에 대해서 페이지가 어떻게 나타나는가? (스팸 만드는 과정)
      • 페이지에 단어 “movie”를 1000번 추가한 후, 텍스트 색상을 배경색으로 맞추어서 검색 시 사이트가 보이게 하는 방법
      • 대상 검색 엔진에 “move”라는 검색을 수행하면, 처음에 목록에 뜨는 페이지들 중 내용을 복사해서 자신의 페이지에 붙인 뒤 보이지 않는 옵션을 주는 방법
    • 이와 유사한 방법을 term spam 이라고 한다.

- term spam 에 대한 구글의 해결책

  • 사이트 주인이 기재한 내용보다 외부로부터의 언급 내용을 참조
    • 링크를 표현하는 밑줄 그은 텍스트(anchor text)에서의 단어를 사용한다. 또는 링크 주변의 텍스트를 이용한다.
  • 웹 페이지의 중요도를 측정하기 위한 도구로서의 PageRank
    • 중요도는 in-coming link만 고려한다.
  • 해결책이 잘 동작하는 이유 → 예시: 가짜 셔츠 판매자
    • 다른 것들이 영화에 대해 이야기하지 않기 때문에, 셔츠 판매자가 페이지에서 영화에 대해 이야기 하는 것이 도움이 되지 않는다.
    • 셔츠 판매자의 페이지는 매우 중요하지 않아서, 셔츠나 영화에 대해 높게 등급이 매겨지지 않을 것이다.
    • 셔츠 판매자는 1000개의 페이지를 만들고, 각 link는 auchor text에서 “movie” 단어를 가지고 페이지를 참조한다. 이러한 페이지들은 내부에 들어오는 link는 없어서 작은 PageRank를 얻는다. 따라서 셔츠 판매자는 정말로 중요한 영화 페이지 (IMDB같이)를 이길 수 없다.
  • 해결책이 잘 동작하지 않는 이유 → Spam Farming
    • 구글이 검색 엔진으로 승승장구하면서, spammer들은 구글을 속이는 방법을 연구하기 시작했다
    • Spam farms: 특정 사이트의 PageRank를 올리는 툴
    • Link spam: 링크를 올리는 스팸, 특정 페이지의 PageRank를 올리는 링크 구조를 만드는 방법 
    • spammer의 관점에서는 3가지의 웹 페이지가 존재한다.
      • Inaccessible pages
      • Owned pages → spammer에 의해 완전히 통제되는 자기 페이지
      • Accessible pages → blog comments pages (기사글 댓글에 링크걸기)
    • spammer의 목표: 대상 페이지 t의 PageRank를 최대화하는 것
    • spammer가 사용한 기술
      • 대상 페이지 t에 가능한 accessible pages로부터 많은 link를 얻는다.
      • PageRank 상승 효과를 얻기 위해 link farm을 구성한다.

 

 

 

 

[ owned == link farm ]
[ link farm 의 페이지들의 Rank ]

  • 𝜷y/M 은 link farm의 빨간 점들에 t가 보낸 link score
  • (1-𝜷)/N 은 random teleport 로 인한 (1-𝜷) 를 전체 페이지 개수인 N으로 나눈 값

  • 획득한 PageRank에 대한 상승 효과(Multiplier effect) → M(=link farm의 페이지 개수)이 클수록, 대상 페이지 t의 Rank는 원하는 만큼 더 커질 수 있다.

 

TrustRank

- Combating term spam

  • 통계적 방법을 이용한 텍스트 분석
  • 이메일 스팸 필터링과 유사한 방법 사용
  • 거의 똑같고, 중복되는 페이지들을 탐지하는데 유용한 방법 사용

- Combating link spam

  • spam farm처럼 보이는 구조를 탐지해서 블랙 리스트에 담는 방법
    • 또 다른 전쟁을 이끈다. → spam farm들과 숨바꼭질..
  • TrustRank = 신뢰되는 페이지들의 teleport set을 가진 topic-specific PageRank
    • .edu domains, similar domains for non-US schools

- 주 원리: Approximate isolation

  • 나쁜 페이지를 참조하는 좋은 페이지가 없다는 가정
  • 웹으로부터 seed pages의 집합을 샘플링
  • seed set에서 좋은 페이지들과 스팸 페이지들을 식별하는 사람(oracle)이 있음
    • 단, 비싼 업무라서 가능한 작은 seed set을 만들어야만 한다.

- Trust Propagation

  • 식별되는 seed pages의 부분집합을 좋고 신뢰되는 페이지라고 부름
  • teleport set = trusted pages 인 topic-sensitive PageRank를 수행
    • 링크를 통해서 trust를 전파 → 신뢰되는 페이지들끼리 전파하는 것
    • 각 페이지는 trust value과 0또는 1의 값을 갖는다. 여기서 0이면 스팸
  • 해결책
    • 임계값을 사용해서, 신뢰도 임계값 이하의 스팸이 되는 모든 페이지들을 표시
  • 알고리즘
    • 각각의 신뢰되는 페이지의 신뢰도를 1로 설정
    • 페이지 p의 신뢰도를 t_p로 가정할 때, 페이지 p는 out-links의 집합 o_p를 가진다면, o_p에 속하는 각각의 q는 페이지 p의 out-links 중 하나이다.
      • 페이지 p의 out link 로 나가는 신뢰도 =
  • 신뢰도는 추가된다.
    • 페이지 p의 신뢰도는 p로 들어오는 링크를 갖는 페이지들의 trust의 합이다.
  • Topic-Specific PageRank 에서의 유사도
    • scaling factor 안에, teleport set으로 신뢰되는 페이지들을 갖는 PageRank 는 TrustRank 이다.

 

 

    •  

- 장점

  • 신뢰도 감쇠(Trust attenuation): 신뢰되는 페이지들에 의해 모여진 신뢰도는 그래프에서 거리를 감소시킨다.
  • 신뢰도 분할(Trust splitting): 페이지의 out-links 수가 많을수록 페이지 작성자가 각 out-link 별로 정밀도를 떨어뜨린다. 즉, 신뢰도가 out-link를 통해 분할된다.

 - Seed Set 선택

  • 두 가지 고려 사항이 충돌한다.
    • 사람이 각 seed page를 관찰해야 하므로, seed set은 가능한 작아야만 한다.
    • 모든 good page는 적절한 trust rank를 얻도록 보장해야 하므로, 모든 good page가 seed set으로부터 최단 경로에 의해 도달해야 한다.
    • 즉, 그래프 크기에 비해 seed set이 너무 작으면 trust를 많이 받지 못한다.
  • 접근법
    • PageRank: 상위 k개의 페이지를 선택해서, seed set에 넣는다. 이론적으로 bad page의 rank는 실제로 높은 값을 가질 수 없다.
    • Use trusted domains: 신뢰되는 도메인들을 추려서 seed set에 추가하여 크기를 확장한다. 예를 들어, .edu, .mil, .gov 같은 도메인들을 통제할 수 있는 소속력(membership)을 갖는다.
    • k 개의 페이지들의 seed set을 선택하는 방법

- Spam Mass

  • TrustRank 모델에서, 좋은 페이지를 가지고 시작하고 신뢰도를 전파한다.
  • 상호 보완적인 관점에서, 높은 PageRank를 갖는 사이트 중 스팸에서 얻은 스코어가 많은 사이트도 있다.
    • 페이지의 PageRank는 얼마만큼 스팸 페이지로부터 받는가?
  • 실제로, 스팸 페이지들을 알지 못하므로 측정할 필요가 있다.
  • 측정방법
    • 스팸 페이지에서 얻은 PageRank = 전체 PageRank - 신뢰되는 페이지에서 얻은 PageRank
    • Spam mass = 스팸 페이지에서 얻은 PageRank / 전체 PageRank

 

HITS: Hubs and Authorities

- HITS (Hypertext-Induced Topic Selection)

  • PageRank와 유사한 문서나 페이지의 중요도를 측정하기 위한 항목
  • PageRank 와 동일한 시점에 제안되었다.

- 목표

  • 좋은 newspapers를 찾는 것
  • 단순히 찾기 보다는 전문가들을 먼저 찾는다.
  • 여기서 전문가란 조정된 방법 내에서 좋은 newspapers로 링크를 하는 사람 또는 페이지를 의미한다.

- 기본적인 아이디어가 Links as votes 이다. 페이지는 더 많은 링크를 가질수록 중요하다.

  • In-coming links
  • Out-going links

- Hubs and Authorities: 각 페이지는 2가지 score를 가진다.

  • Quality as an expert (hubs): authorities가 참조했던 link의 합
  • Quality as a content (authority): expert로부터 받은 vote의 합
  • 거듭된 개선의 원칙
    • 아래 예시에서 파란 점은 hub이고 초록색은 authority이다.
    • authority 값이 클수록 hub들이 좋은 것이며 역도 성립한다.

- 흥미로운 페이지들은 두 가지 클래스로 분류된다.

  • Authorities: 유용한 정보를 포함하는 페이지들
    • Newspaper home pages
    • Course home pages
    • Home pages of auto manufacturers
  • Hubs: authorities에 링크를 하는 페이지들
    • List of newspapers
    • Course bulletin
    • List of US auto manufacturers

- hub 점수가 높고 authority 점수가 낮으면 hub로 분류된다. 좋은 hub는 좋은 authority를 참조한다.

- 예제

  • 위에서 작은 점들이 hub이고 큰 점들이 authority이다. 실제로는 다 페이지이지만 클래스를 나누기 위해 점의 크기를 달리 표현하였다.
  • 각 페이지는 1점의 hub로 시작을 한다. authority는 링크하는 hub들의 점수를 모은 것이다.

  • Authority의 옆에 링크하는 hub(시작은 1점짜리)의 점수들을 합한 것을 볼 수 있다.

  • 그리고 다시 hubs는 연결되는 authority 들의 점수들을 합해서 저장한다.

  • authority는 갱신된 hubs의 점수들을 이용해서 자신의 점수를 갱신한다. (재귀 정의)
  • 실제로 각 페이지는 hub/authority의 score를 모두 갖는다.

- 상호적, 재귀적 정의

  • 좋은 hub는 많은 좋은 authorities를 링크한다.
  • 좋은 authority는 많은 좋은 hubs로부터 링크된다.
  • 각 노드마다 두 가지 score를 이용하는 모델
    • Hub score, Authority score
    • 벡터 h와 a로 나타낼 수 있다.

- 각 페이지 i는 두 가지 score를 가진다.

행렬 A는 노드 간 인접한지의 유무만 저장한다. 인접하면 1, 아니면 0

 h=A*a, a=At*h 

h와 a 의 마지막 값은 정규화를 거친 결과이다.

 

PageRank 와 HITS

- 두 방식은 같은 문제를 다른 방식으로 해결한다.

  • 문제: 페이지 u에서 페이지 v로 가는 in-link의 값이 무엇인가?
  • PageRank 모델에서는 link의 값이 u로 가는 link들에만 의존한다.
  • HITS 모델에서는 u에서 나가는 link들의 값에 의존한다.

 

 

정보의 흐름

- 정보가 네트워크를 통해서 어떻게 흘러가는가?

  • 구조적으로 노드들의 유일한 역할은 무엇인가?
  • 다른 링크들(short vs long)은 무슨 역할을 하는가?

- 예제: 사람들은 새로운 직업에 대해 어떻게 발견하는가?

  • 사람들은 개인적인 연락을 통해서 정보를 찾는다.
  • 그러나, 연락(Contacts)은 종종 친한 친구들보다 지인(acquaintances)이었다.
  • 왜 지인이 친구보다 더 도움이 되는가?
  • Friendship 에 대한 두 가지 관점
    • Structural: Friendship 은 네트워크의 다른 부분을 span 한다.
    • Interpersonal: 두 사람 사이의 Friendship 은 strong 또는 weak 중 하나이다.
  • 구조적 역할(Structural role): Triadic Closure
    • 한 네트워크에서 두 사람이 공통적으로 한 명을 친구로 두면, 두 사람이 친구일 확률이 높아진다.

b랑 친해질 확률이 더 높다.

- Granovetter의 설명: edge의 사회적, 구조적 역할 사이에 연결을 만든다.

  • First point
    • 구조적으로 내재된 edge들은 사회적으로 강하다.
    • 네트워크의 다른 부분을 spanning하는 edge들은 사회적으로 약하다.
  • Second point
    • 긴 범위의 edge는 네트워크의 다른 부분으로부터 정보를 얻도록 해주며, 일(job)을 얻도록 한다.
    • 구조적으로 내재된 edge들은 정보의 접근 측면에서 강하게 중복된다.

- Triadic closure == High clustering(community) coefficient

- Reasons for triadic closure: 만약 B와 C가 친구 A를 공통으로 갖는다면

  • B는 C와 만날 확률이 높다. (A와 함께 시간을 보내기 때문에)
  • B와 C는 서로 신뢰(trust)한다. (그들이 공통적인 친구를 갖기 때문에)
  • A는 B와 C를 함께 데려오기 위한 동기(incentive)를 갖는다.
    • A는 두 분리된 관계를 유지하는 것을 힘들어 할 것이다.
    • 친구를 독점하는 경우는 거의 없음

- 개념

  • Bridge edge: 제거되면 그래프는 연결이 끊어진다.(disconnect)
  • Local bridge: Edge of Span(끊어졌을 때 돌아가는 거리의 길이) > 2 인 경우
  • Edge는 두 개의 유형을 갖는데, StrongWeak 이다.
  • Strong triadic closure: 두 strong tie들은 세번째 edge를 암시한다.
    • strong triadic closure는 local bridge가 weak tie임을 만족시킨다.

- Local Bridges 와 Weak ties

  • 노드 A가 Strong Triadic Closure를 만족하고 적어도 2개의 strong ties에 포함된다면, A에 인접한 어떤 local bridge든 weak tie가 되어야만 한다.
  • 결국 3개의 노드 모두 연결되어 있어야 한다.
  • 대우명제(Proof by contradiction)
    • 노드 A가 Strong Triadic Closure를 만족시킨다.
    • A와 B 사이에 local bridge가 있고 strong tie라고 가정하자.
    • B와 C 사이에 edge는 존재해야 한다. (Strong Triadic Closure 이므로)
  • 그러나, B와 C 사이에 strong edge가 없으므로 모순이다. A와 B 사이에는 weak tie 만 존재할 수 있다.

- 실제 데이터에서 Tie strength

  • who-talks-to-whom graphs: email, messenger, cell phone, facebook

- Neighborhood Overlap

  • Edge overlap = Oij = N(N(i)∩N(j)) / N(N(i)∪N(j)) = 교집합 크기 / 합집합 크기
  • N(i) = 노드 i의 이웃 노드들의 집합
  • Overlap = 0 → edge는 local bridge 이다.

빨간색일수록 이웃이 많이 겹치는 걸 의미

[위 경우는 대조군, 그 전의 것은 실험군(real world)]

  • Low → 겹치는 이웃이 적어지는 것을 의미
  • Low to high → 이웃이 적게 연결된 링크(이전 예시에서 노란 선)부터 끊는 경우
  • High to low → 이웃이 많이 연결된 링크(이전 예시에서 빨간 선)부터 끊는 경우

- weak ties 는 edge overlap 이 낮고, strong ties 는 높다.

 

네트워크 커뮤니티(Network Communities)

- Granovetter의 이론에 따르면, 네트워크는 노드들의 단단히(tightly) 연결된 집합들로 구성되어 있다.

- 내부 노드는 많이 연결되어 있어야 하고, 나가는 링크는 적어야 커뮤니티가 형성된다.

- communities, clusters, groups, modules 모두 같은 말

- 이상적으로, 자동으로 발견된 클러스터들은 실제 그룹과 대응한다.

 

- 소셜 네트워크 데이터: 아래의 빨간선은 cross link가 가장 적은 부분으로, 실제 관계가 좋지 않았다고 밝혀졌다.

 

커뮤니티 탐색(Community Detection)

- 방법1

  • strength of Weak Ties
    • Edge betweenness: 그 edge를 지나는 가장 짧은 경로의 개수
    • betweenness 가 높으면 edge strength 와 edge overlap 은 낮다.

b = 4 * 4 = 16 → 모든 노드가 지난다.

b = 5 * 3 / 2 = 7.5 → 오른쪽 edge는 위에 겹치는 edge가 하나 더있어서 2로 나눔

  • Girvan-Newman: edge betweenness 기반의 분할 계층적 클러스터링
    • 커뮤니티를 찾을 때, 모든 edge에 대해 edge betweenness를 계산한 뒤 가장 높은 것부터 끊는 방법으로, edge가 모두 없어질 때까지 반복한다.
    • 이후 남은 Connected component들은 모두 커뮤니티이다.
    • 네트워크의 계층적 분해

12 = (2*12)/2, 33 = 3*11, 49 = 7*7

edge of 12 는 1번 노드에 연결된 노드가 2번 노드만 있으므로 수치 2에다 3번 노드에 연결된 노드의 개수가 12개이므로 12를 곱한다. 그 뒤, 2-3번 노드가 유사한 역할을 수행하는 edge이므로 중복 제거를 위해 2를 나눠준다. edge of 33은 3번 노드에 자기 포함 노드가 3개 있고7번 노드에는 자기 포함 11개의 노드가 연결되어 있으므로 3*11 이다. 나머지도 마찬가지

  • Step 1: 가장 값이 큰 edge of 49 부터 끊는다.
  • Step 2: 그 다음으로 큰 edge of 33을 모두 끊는다.
  • Step 3: 그 다음으로 큰 edge of 12를 모두 끊는다.

 

Edge betweenness를 계산하는 방법

- 시작 노드를 root로 두고 깊이 우선 탐색을 수행

- 시작 노드로부터 같은 네트워크의 다른 모든 노드까지 가장 짧은 경로 개수를 알아낸다.

- A에서 특정 노드 X까지 가는 경로의 개수 = A에서 X의 부모 노드까지 가는 경로의 개수의 합

- 가장 밑에 있는 자식 노드부터, betweenness를 계산해서 부모 노드로 분배한다.

  • node flow = 1 + (자식 노드의 edge betweenness의 합)
    • 가장 밑의 자식 노드는 자식이 없으므로, node flow는 1이다.
  • 부모 노드의 경로 개수를 비율로 node flow를 분배한다.
    • 예를 들어, K는 node flow 가 1이다. 노드 K의 부모 노드 I와 J의 경로 개수 비율이 3:3=1:1이므로 1을 나누면 각각 ½ 씩 betweenness를 갖게 된다. 노드 J는 자식 노드가 K만 있으므로 node flow = 1 + ½ =1.5 가 되며, 부모 노드 G와 H의 경로 개수 비율이 1:2이므로 1.5를 나누면 각각 0.5, 1을 betweenness로 갖게 된다.
  • root 노드까지 위의 과정을 반복한다.

- 모든 노드를 시작 노드로 두고, 경로의 개수를 계산한 뒤 위의 과정을 반복한다.

 

클러스터의 개수를 선택하는 방법

- 네트워크 커뮤니티는 단단히 연결된 노드의 집합이다.

- Modularity Q = 네트워크가 커뮤니티로 얼마나 잘 분할되었는지 측정하는 척도

  • group s ∈ S 일 때,아래의 식이 성립한다.

  • 그룹 S 내 모든 작은 그룹의 (그룹 내 edge의 개수) - (그룹 내 edge의 개수 기댓값)의 합은 Q와 비례한다.

- Null Model: Configuration Model

  • n개의 노드와 m개의 edge를 가진 그룹 G가 주어졌을 때, 네트워크 G`은 다음 사항대로 네트워크를 다시 형성한다.
    • 동일한 degree 분배이지만 무작위로 연결한다.
    • G`을 multigraph로 여겨야 한다.
    • degree가 ki이고 kj인 노드 i와 j의 edge betweenness의 기댓값(expected number)은 다음과 같다.

- 그래프 G의 일부인 C의 Modularity

- Modularity 값은 [-1, 1]의 범위를 가진다.

  • 그룹 내 edge의 숫자가 기댓값보다 크면 좋다.

  • 0.3 < Q < 0.7 은 거대한 커뮤니티 구조를 의미한다.

- Modularity는 클러스터 개수를 선택하는 유용하다.

  • 아래 예시에서 적절한 커뮤니티의 개수는 4개이다.

 

 

부호있는 Edge를 가진 네트워크(Networks with Signed Edges)

 

부호있는 네트워크(Signed Networks)

- 양(positive)의 관계, 음(negative)의 관계를 가진 네트워크: 기본 조사 단위는 부호 있는 삼각형(signed triangles)인데, 먼저 방향성(undirected/directed)에 대해서 언급을 해야 한다.

- Plan

  • Model: 부호있는 네트워크의 두 가지 사회적 이론
  • Data: 큰 온라인 네트워크의 존재 이유
  • Application: A와 B가 양의 관계 또는 음의 관계로 링크되어졌는지 예측

- Undirected complete graph: 각 edge는 레이블이 붙는다.

  • Positive: friendship, trust, positive sentiment, …
  • Negative: enemy, distrust, negative sentiment, …

 

구조적 밸런스 이론(Theory of Structural Balance)

- 직관적으로, 내 친구의 친구는 친구이다. 적의 적도 친구이다. 적의 친구는 나의 적이다.

- Unbalanced 를 보면, 나의 친구의 친구가 나와 음(-)의 관계임을 알 수 있다. 이는 불균형한 상태이며 일관적이지 않다(Inconsistent).

- 음(negative)의 개수가 홀수(odd)이면 불균형(Unbalanced) 상태이고, 짝수(even)이면 균형(Balanced) 상태이다.

- 모든 3개의 edge는 양(+)의 관계로 레이블되어져 있거나 정확히 1개의 edge만 양(+)의 관계로 레이블되어있고 연결되어 있으면 균형잡힌 그래프(Balanced Graph)이다.

- 불균형한 그래프(Unbalanced Graph)를 하나라도 포함하면 전체 그래프도 불균형하다.

- Local Balance → Global factions

  • 균형(Balance)은 전역적인 연합(global coalitions)을 의미한다.
  • 만약 모든 삼각형이 균형잡힌 그래프라면, 그 네트워크는 양의 관계(positive edge)만 가지거나, 노드들이 오로지 음의 관계(negative edge)를 갖는 2개의 집합으로 분리될 수 있다.

  • 그룹간 음의 관계(negative)는 최대 1개만 갖도록 하는 방법인데, 그룹 내에는 양의 관계(positive)만 존재하거나 하나도 없어야(음의 관계만 있다면!) 한다.

- Analysis of Balance

- 예제: 국제 관계

  • 국가 간 주변국에 대한 찬반이 존재 → 1971년 파키스탄으로부터 방글라데시의 독립 문제로 미국이 파키스탄을 지원하는지 예측하는 것

  • R(미국)과 C(중국)은 적대관계이고, C(중국)은 I(인도)와 적대관계이고, I(인도)는 P(파키스탄)과 적대관계이다. U(미국)는 C(중국)와 친한 관계이므로, C(중국)와 친한 P(파키스탄)을 지원(+)해줄 것이다.
  • B(방글라데시)는 P(파키스탄)과 적대관계이므로 C(중국)도 B(방글라데시)를 적으로 둘 것이다.

 

일반적인 네트워크에서의 균형(Balance in General Networks)

- 이전까지는 complete graph에 대해 다루었다.

- 지역적 관점(Local view): 균형을 잡기 위해 없는 edge를 채워보는 것

- 전역적 관점(Global view): 그래프를 두 개의 연합(coalition)으로 나누는 것

- 위의 두 관점은 필요 충분 조건이다.

- 그래프가 균형(balanced) 상태이면, 반드시 음의 관계(negative edges)를 홀수개 가진, 어떤 싸이클도 없어야 한다.(no cycle)

- 계산하는 방법

  • 양의 관계(+ edges)를 가진 connected components 찾기
    • 만약 음의 관계(- edges)를 포함한 양의 관계(+ edges)를 가진 노드들의 component를 발견한다면, 이는 불균형이다.
  • 각 component에 대한 슈퍼 노드(super node)를 생성한다.
  • 슈퍼 노드의 멤버 사이에 음의 관계(- edges)가 있다면, 2개의 component 로 연결한다. 그러면 2개의 component가 각각의 슈퍼 노드가 된다.
  • 슈퍼 노드를 BFS를 이용해서 편을 나누면 된다.

음의 관계가 짝수개이면 편가르는게 가능하다. 홀수개는 분할 할 수 없다.

쉽게 말하자면, 양의 관계(+ edges)로 연결되거나 아무것도 없는 노드들만 찾아서 그룹화

각 component의 그룹이 슈퍼 노드가 되었다. (왼쪽에 7개의 슈퍼노드가 존재)

그러나, 중복되는 edge가 존재하므로 불균형 상태이다. 따라서 중복되는 edge를 제거해준다.

BFS를 이용해서 각 슈퍼 노드 나누었는데, 어떤 두 슈퍼 노드들이 같은 편(side)에 할당되면 불균형 상태이다.

 

 

네트워크의 구조

- 네트워크란 링크에 의해 연결된 개체 쌍들이 있는 객체들의 집합

- 네트워크 구조

  • Objects: nodes, vertices → N
  • Interactions: links, edges → E
  • System: network, graph → G(N, E)

- 네트워크는 종종 실제 시스템을 표현한다. 예를 들어, 웹(Web), 소셜 네트워크(Social network), Metabolic network 가 있다.

  • Network, node, link

- 그래프는 네트워크의 수학적인 표기법이다. 예를 들어, 웹 그래프(Web graph), 소셜 그래프(Social graph in facebook)이 있다.

  • Graph, vertex, edge

 

적절한 표현의 선택

- 적절한 네트워크 표현법을 선택하는 것이 성공적으로 네트워크를 사용하는 능력을 결정한다.

  • 몇몇 경우에 유일하고 모호하지 않은 표현법이 있다.
  • 다른 경우에 그 표현법이 결코 유일하지 않다.
  • 링크를 할당하는 방식이 공부할 질문의 본질을 결정할 것이다.

- 서로서로 동작하는 개체를 연결하면, 전문적인 네트워크(professional network)를 탐구할 것이다.

- 성적 관계를 가지는 사람들을 연결해보면, 성적인 네트워크(sexual networks)를 탐구하고 있을 것이다.

  • 예를 들어, 사람들의 관계를 표현했을 때 중간 노드는 성병에 걸리면 안쪽으로 퍼져나갈 수 있어서 실제 성병에 걸리면 안되는 경우 등을 판단할 수 있다.

- 서로서로 인용하는 논문들을 연결해보면, 인용 네트워크(citation network)를 공부할 것이다.

 

Undirected vs Directed Networks

- Undirected Example: Collaborations, Friendship on Facebook, 상호간의 동일한 관계

- Directed Example: Phone calls, Following on Twitter, 비대칭적인 관계

 

그래프의 연결성(Connectivity of Graphs)

- Connected Component: 연결된 노드의 집합

- Connected (undirected) graph: 방향성 없이, 모든 노드가 연결되어 있는 그래프 (Connected Components가 존재하지 않음)

- Disconnected (undirected) graph: 방향성 없이, 둘 이상의 connected components가 존재

여기서 H 노드 하나만 보면 connected components로 볼 수 있다.

- Bridge Edge: 제거되면, connected component 개수가 늘어나는 edge

- Articulation point: 제거되면, disconnected graph가 되버리는 node(point)

- Connected (directed) graph: 두 노드간 이동이 가능한 방향이 존재하며, 각 노드로부터 모든 노드로 이동할 수 있는 경로가 존재하는 그래프

- Weakly connected directed graph: 그래프 중 모든 노드가 연결된 그래프 (양방향으로 도달되지 않는 노드들이 존재)

 

그래프로서의 웹

- Nodes = web pages

- Edges = hyperlinks

- 초기 웹 링크는 방향을 알려주는 역할(navigational)이었다.

- 오늘날 많은 링크는 교류하는 역할(transactional)이다.

- Web as a directed graph: 노드 v가 주어졌을 때 들어오는 링크는 incoming link, 나가는 링크는 outcoming link로 정의된다.

- Directed Graph

  • Strongly connected: 어떤 노드도 다른 노드에 도달할 수 있는 path가 존재
    • In Set = Out Set (동일)

  • Directed Acyclic Graph(DAG): 사이클이 없는 그래프, 노드 u는 v에 도달해도 노드 v는 u에 도달하지 않음

 

Strongly Connected Component (SCC)

- 집합 S에서 노드들의 모든 쌍이 서로 도달할 수 있다.

- SCC이면서 집합 S를 포함하는 더 큰 집합은 존재하지 않는다.

- 예제: {A, B, C}는 첫번째 조건을 만족하나, {A, B, C, G}가 존재하므로 두번째 조건은 만족하지 못한다. (not SCC)

- 모든 directed graph 는 SCC들의 DAG이다. 즉, 모든 쌍들이 서로 도달할 수 있는 작은 그래프들이 모인 것이라고 볼 수 있다.

  • SCC는 그래프 G의 노드들을 분할한다.(partition) → 각 SCC를 노드로 본다.
  • SCC를 노드로 보는 그래프 G`이 있을 때, G`은 DAG 이다.

- 증명1: SCC는 그래프 G의 노드들을 분할한다. 각 노드는 정확히 1개의 SCC의 멤버이다.

  • 대우명제(Proof by contradiction): 2개의 SCC를 가지는 그래프 S와 S`이 있을 때, 두 그래프에 동시에 멤버가 되는 노드 v가 존재한다. 그러나, S와 S`의 합집합은 하나의 큰 SCC가 된다. 이것은 모순이다.

- 증명2: SCC들의 그래프 G`은 DAG 이다. G`에는 사이클(cycle)이 없다.

  • 대우명제(Proof by contradiction): 그래프 G`이 DAG가 아니라고 가정했을 때, G`은 directed cycle을 가진다. cycle 에 있는 모든 노드들은 서로 도달가능하며 같은 SCC의 일부이다. 그러나 G`은 SCC 사이에 순환가능한 그래프가 아니다. SCC는 최대 순환가능한 노드의 집합으로 정의되므로 이는 모순이다.

 

웹에서의 그래프 구조

- 웹의 큰 스냅샷을 살펴보면, 어떻게 SCC들이 DAG로 서로 맞춰있는지 이해할 수 있다.

- Computational Issues: SCC가 노드 v를 포함하는 것을 어떻게 발견?

  • In(v): 노드 v로 들어오는 노드들의 집합
  • Out(v): 노드 v로부터 도달가능한 노드들의 집합
  • SCC 에 노드 v가 포함되면, Out(v)와 In(v)의 교집합에 노드 v가 있다.
  • 단, 위의 방법은 연산이 많이 걸리므로 Out(v,G)와 Out(v, 방향을 뒤집은 G)의 교집합으로 노드 v를 찾는다.

전체 SCC의 개수는 {A, B, D, E, F, G} 와 {C}로 2개이다.

- 웹은 매우 큰 SCC 이다. 2개의 매우 큰 SCC는 존재하지 않을 것이다.

- 귀납적 논쟁

  1. 하나의 SCC에서 다른 SCC로 가는 link는 1 페이지만 소요된다.
  2. 만약 2개의 SCC가 몇 백만 페이지를 가진다면, 이 일이 일어나지 않을 가능성은 매우 적다.

 

웹의 구조

- 초기 웹은 데이터베이스에 링크나 url을 저장해둔 형태로 서버는 12GB의 메모리를 가졌었다.

- Undirected version of the Web graph

  • 가장 큰 weakly connected component 에서 91% 노드가 존재
  • hubs는 웹 그래프를 연결되도록 했는가?
    • 들어오는 link의 개수(in-degree) > 10 인 페이지들에 대한 link를 삭제한다면 WCC는 여전히 그래프의 50%가 남아있다.

- Directed version of the Web graph

  • 가장 큰 SCC: 노드들 중 28%가 해당된다. (56 million)
  • 랜덤으로 노드 v를 가져오는 것은 Out(v) ~ 50% (100 million), In(v) ~ 50% (100 million) 이 되게 한다.
    • 즉 성능이 랜덤으로 가져오는게 더 좋다.

Conceptual Organization (ex: bowtie)

 

+ Recent posts