centrality
노드 중요도 측정
설명
예제
6개 웹 사이트의 페이지 랭크
가상의 웹 사이트 6개를 포함하는 그래프를 생성하고 플로팅합니다.
s = [1 1 2 2 3 3 3 4 5]; t = [2 5 3 4 4 5 6 1 1]; names = {'http://www.example.com/alpha', 'http://www.example.com/beta', ... 'http://www.example.com/gamma', 'http://www.example.com/delta', ... 'http://www.example.com/epsilon', 'http://www.example.com/zeta'}; G = digraph(s,t,[],names); plot(G,'NodeLabel',{'alpha','beta','gamma','delta','epsilon','zeta'})
centrality
함수를 사용하여 각 웹 사이트의 페이지 랭크를 계산합니다. 그래프의 Nodes
테이블에 이 정보를 그래프 노드의 특성으로 추가합니다.
pg_ranks = centrality(G,'pagerank')
pg_ranks = 6×1
0.3210
0.1706
0.1066
0.1368
0.2008
0.0643
G.Nodes.PageRank = pg_ranks; G.Nodes
ans=6×2 table
Name PageRank
__________________________________ ________
{'http://www.example.com/alpha' } 0.32098
{'http://www.example.com/beta' } 0.17057
{'http://www.example.com/gamma' } 0.10657
{'http://www.example.com/delta' } 0.13678
{'http://www.example.com/epsilon'} 0.20078
{'http://www.example.com/zeta' } 0.06432
또한 centrality
를 사용하여 hubs와 authorities에 해당하는 노드를 확인하고 Nodes
테이블에 점수를 추가합니다.
hub_ranks = centrality(G,'hubs'); auth_ranks = centrality(G,'authorities'); G.Nodes.Hubs = hub_ranks; G.Nodes.Authorities = auth_ranks;
G.Nodes
ans=6×4 table
Name PageRank Hubs Authorities
__________________________________ ________ __________ ___________
{'http://www.example.com/alpha' } 0.32098 0.24995 7.3237e-05
{'http://www.example.com/beta' } 0.17057 0.24995 0.099993
{'http://www.example.com/gamma' } 0.10657 0.49991 0.099993
{'http://www.example.com/delta' } 0.13678 9.1536e-05 0.29998
{'http://www.example.com/epsilon'} 0.20078 9.1536e-05 0.29998
{'http://www.example.com/zeta' } 0.06432 0 0.19999
임의 그래프의 연결 중심성(Degree centrality)
임의의 희소 인접 행렬을 사용하여 가중 그래프(Weighted Graph)를 생성하고 플로팅합니다. 간선이 많이 있으므로 EdgeAlpha
에 매우 작은 값을 사용하여 간선을 거의 투명하게 만듭니다.
A = sprand(1000,1000,0.15); A = A + A'; G = graph(A,'omitselfloops'); p = plot(G,'Layout','force','EdgeAlpha',0.005,'NodeColor','r');
각 노드의 연결 중심성을 계산합니다. 간선 가중치를 사용하여 각 간선의 중요도를 지정합니다.
deg_ranks = centrality(G,'degree','Importance',G.Edges.Weight);
discretize
를 사용하여 노드 중심성 점수에 따라 간격이 같은 7개의 Bin에 노드를 배치합니다.
edges = linspace(min(deg_ranks),max(deg_ranks),7); bins = discretize(deg_ranks,edges);
플롯에서 각 노드의 크기를 해당 중심성 점수에 비례하게 만듭니다. 각 노드의 마커 크기는 Bin 숫자(1-7)와 같습니다.
p.MarkerSize = bins;
미네소타 도로의 근접 중심성과 매개 중심성
미네소타의 도로망을 나타내는 graph 객체 G
가 포함된 minnesota.mat
의 데이터를 불러옵니다. 그래프 노드에는 G.Nodes
테이블의 XCoord
변수와 YCoord
변수에 들어 있는 xy 좌표가 포함되어 있습니다.
load minnesota.mat
xy = [G.Nodes.XCoord G.Nodes.YCoord];
도로의 길이와 대략적으로 일치하는 간선 가중치를 그래프에 추가합니다. 간선 가중치는 각 간선 끝 노드의 xy 좌표 간 유클리드 거리(Euclidean Distance)를 사용하여 계산됩니다.
[s,t] = findedge(G); G.Edges.Weight = hypot(xy(s,1)-xy(t,1), xy(s,2)-xy(t,2));
노드에 xy 좌표를 사용하여 그래프를 플로팅합니다.
p = plot(G,'XData',xy(:,1),'YData',xy(:,2),'MarkerSize',5); title('Minnesota Road Network')
각 노드의 근접 중심성을 계산합니다. 노드 색 NodeCData
를 중심성 점수에 비례하도록 스케일링합니다.
ucc = centrality(G,'closeness'); p.NodeCData = ucc; colormap jet colorbar title('Closeness Centrality Scores - Unweighted')
또한 간선 가중치를 각 간선을 순회하는 비용으로 사용하여 가중 근접 중심성 점수를 계산합니다. 이제 거리가 이동한 간선의 수가 아니라 이동한 간선 길이의 총합으로 측정되므로 도로 길이를 간선 가중치로 사용하면 점수 품질이 개선됩니다.
wcc = centrality(G,'closeness','Cost',G.Edges.Weight); p.NodeCData = wcc; title('Closeness Centrality Scores - Weighted')
그래프의 가중 매개 중심성(Betweenness centrality) 점수를 계산하여 두 노드 간 최단 경로에서 가장 자주 발견되는 도로를 확인합니다. 인수 을 사용하여 중심성 점수를 정규화하므로 점수는 이동자(Traveler)가 임의의 두 노드 간 최단 경로를 따라 지정된 노드를 통해 이동할 확률을 나타냅니다. 플롯에는 도시로 들어오고 나가는 매우 중요한 도로가 여러 개인 것으로 나타나 있습니다.
wbc = centrality(G,'betweenness','Cost',G.Edges.Weight); n = numnodes(G); p.NodeCData = 2*wbc./((n-2)*(n-1)); colormap(flip(autumn,1)); title('Betweenness Centrality Scores - Weighted')
입력 인수
type
— 노드 중심성 유형
'degree'
| 'outdegree'
| 'indegree'
| 'closeness'
| 'incloseness'
| 'outcloseness'
| 'betweenness'
| 'pagerank'
| 'eigenvector'
| 'hubs'
| 'authorities'
노드 중심성 유형으로, 표에 나와 있는 옵션 중 하나로 지정됩니다. 다음 표에는 각 유형과 호환 가능한 이름-값 인수가 나열되어 있습니다. 노드 중심성마다 그래프의 노드 중요도에 대해 각기 다른 측정값을 제공합니다.
옵션 | 그래프 유형 | 설명 | 이름-값 인수 |
---|---|---|---|
| 무방향 |
| |
| 유방향 | ||
| 무방향 |
Ai는 노드
| |
| 유방향 | ||
| 무방향 또는 유방향 |
는 노드
| |
| 무방향 또는 유방향 |
| |
| 무방향 |
| |
| 유방향 |
|
참고
centrality
함수에서는 모든 간선 가중치가 1이라고 가정합니다. 이를 변경하려면 'Cost'
이름-값 쌍 또는 'Importance'
이름-값 쌍에 사용할 간선 가중치를 지정하십시오.
예: centrality(G,'degree')
예: centrality(G,'hubs','Tolerance',tol)
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: C = centrality(G,'closeness','Cost',edgeCosts)
는 그래프에서 각 간선을 순회하는 비용(가중치)으로 edgeCosts
를 사용하여 근접 중심성(Closeness centrality)을 계산합니다.
Cost
— 간선을 순회하는 비용
벡터
간선을 순회하는 비용으로, 'Cost'
와 함께 간선 가중 벡터가 쉼표로 구분되어 지정됩니다. i번째 간선 가중치는 간선 findedge(G,i)
를 순회하는데 관련된 비용을 지정합니다.
'closeness'
,'outcloseness'
,'incloseness'
중심성 유형에 대해 간선 비용은 음수가 아니어야 합니다.'betweenness'
중심성 유형에 대해 간선 비용은 양수여야 합니다.
'Cost'
간선 가중치는 연결이 짧거나 빠르거나 저렴할수록 더 작습니다. 다음은 'Cost'
간선 가중치의 몇 가지 예입니다.
경로 길이
이동 시간
티켓의 비용(Cost)
참고
'Cost'
는 'closeness'
, 'outcloseness'
, 'incloseness'
, 'betweenness'
중심성 유형에만 적용됩니다.
예: centrality(G,'closeness','Cost',c)
FollowProbability
— 후속 노드 선택 확률
0.85
(디폴트 값) | 0과 1 사이의 스칼라
후속 노드 선택 확률로, 'FollowProbability'
와 함께 0과 1 사이의 스칼라가 쉼표로 구분되어 지정됩니다. 후속 확률은 pagerank 알고리즘이 순회 과정에서 선택한 다음 노드가 모든 노드에서 임의로 선택되는 것이 아니라 현재 노드의 후속 노드 중에서 선택되는 확률입니다. 웹 사이트의 경우 이 확률은 임의의 다른 웹 페이지로 서핑하는 대신 현재 웹 페이지의 링크를 클릭하는 것에 해당합니다.
참고
'FollowProbability'
는 'pagerank'
중심성 유형에만 적용됩니다.
예: centrality(G,'pagerank','FollowProbability',0.5)
Importance
— 간선 중요도
벡터
간선 중요도로, 'Importance'
와 함께 음이 아닌 간선 가중치 벡터가 쉼표로 구분되어 지정됩니다. i번째 간선 가중치는 간선 findedge(G,i)
의 중요도를 지정합니다. 간선 가중치 0은 그래프에서 그에 상응하는 간선을 제거하는 것과 동일합니다.
두 노드 사이에 다중 간선이 있는 다중 그래프에서는 centrality
가 이 다중 간선을 모두 더한 다음 이것을 결합된 가중치를 갖는 하나의 간선으로 처리합니다.
'Importance'
간선 가중치는 연결이 강력할수록 더 큽니다. 다음은 'Importance'
간선 가중치의 몇 가지 예입니다.
일별 방문자(Traveller) 수
링크 클릭 수
함께 게시된 문서 수
참고
'Importance'
는 'degree'
, 'outdegree'
, 'indegree'
, 'pagerank'
, 'eigenvector'
, 'hubs'
, 'authorities'
중심성 유형에만 적용됩니다.
예: centrality(G,'degree','Importance',x)
MaxIterations
— 최대 반복 횟수
100
(디폴트 값) | 스칼라
최대 반복 횟수로, 'MaxIterations'
와 함께 스칼라가 쉼표로 구분되어 지정됩니다. centrality
알고리즘은 허용오차가 충족되거나 최대 반복 횟수에 도달할 때까지 실행되는데 이 중 먼저 만족하는 조건이 나오면 중단됩니다.
참고
'MaxIterations'
는 'pagerank'
, 'eigenvector'
, 'hubs'
, 'authorities'
중심성 유형에만 적용됩니다.
예: centrality(G,'pagerank','MaxIterations',250)
Tolerance
— 반복 솔버의 중지 조건
1e-4
(디폴트 값) | 스칼라
반복 솔버의 중지 조건으로, 'Tolerance'
와 함께 스칼라가 쉼표로 구분되어 지정됩니다. centrality
알고리즘은 허용오차가 충족되거나 최대 반복 횟수에 도달할 때까지 실행되는데 이 중 먼저 만족하는 조건이 나오면 중단됩니다.
참고
'Tolerance'
는 'pagerank'
, 'eigenvector'
, 'hubs'
, 'authorities'
중심성 유형에만 적용됩니다.
예: centrality(G,'pagerank','Tolerance',1e-5)
출력 인수
C
— 노드 중심성 점수
열 벡터
노드 중심성 점수로, 열 벡터로 반환됩니다. C(i)
는 노드 i
의 중심성 점수입니다. 노드 중심성 점수의 해석은 선택한 중심성 계산 유형에 따라 달라집니다. 노드가 중심에 가까울수록 중심성 점수가 더 큽니다.
버전 내역
R2016a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)