このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
centrality
ノードの重要度を測定
説明
例
架空の 6 件の Web サイトを含むグラフを作成し、プロットします。
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
を使用して、各 Web サイトのページ ランクを計算します。この情報を、グラフの Nodes
table にグラフ ノードの属性として追加します。
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
を使用してハブとオーソリティのノードを判別し、そのスコアを Nodes
table に追加します。
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
乱数のスパース隣接行列を使用して重み付きグラフを作成し、プロットします。エッジが多数あるため、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 つの等間隔のビンに入れます。
edges = linspace(min(deg_ranks),max(deg_ranks),7); bins = discretize(deg_ranks,edges);
プロット内の各ノードのサイズを、その中心性スコアに比例するように指定します。各ノードのマーカー サイズは、ビン番号 (1 ~ 7) に等しくなります。
p.MarkerSize = bins;
ミネソタ州の道路網を表すグラフ オブジェクト G
が含まれている、minnesota.mat
のデータを読み込みます。グラフ ノードは xy 座標をもち、G.Nodes
table の変数 XCoord
と変数 YCoord
に格納されています。
load minnesota.mat
xy = [G.Nodes.XCoord G.Nodes.YCoord];
道路の長さにほぼ対応するエッジの重みをグラフに追加します。これは、各エッジの終了ノードの xy 座標間におけるユークリッド距離を使用して算出します。
[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')
グラフで重み付き媒介中心性スコアを計算して、2 つのノード間の最短経路で最も頻繁に検出される道路を判定します。2 つのランダムなノード間の最短経路を通る旅行者が特定のノードを経由する確率をスコアが表すように、係数 を使用して中心性スコアを正規化します。このプロットは、都市に出入りする非常に重要な道路がいくつかあることを示します。
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')
入力引数
ノードの中心性のタイプ。次の表のいずれかのオプションとして指定します。この表には、各タイプで使用できる、適合性のある名前と値の引数も示されています。ノードのさまざまな中心性は、グラフにおけるノードの重要性を異なる測定を表しています。
オプション | グラフ タイプ | 説明 | 名前と値の引数 |
---|---|---|---|
| 無向 |
エッジの重みに | |
| 有向 | ||
| 無向 |
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
を使用して、近接中心性を計算します。
エッジ通過のコスト。'Cost'
とエッジの重みのベクトルで構成されるコンマ区切りのペアとして指定します。i 番目のエッジの重みは、エッジ findedge(G,i)
を通過することに関連付けられたコストを指定します。
'closeness'
、'outcloseness'
、および'incloseness'
の中心性タイプについては、エッジのコストは非負でなければなりません。'betweenness'
の中心性タイプについては、エッジのコストは正でなければなりません。
連結が短く、速く、あるいは低コストであるほど、'Cost'
のエッジの重みは小さくなります。'Cost'
によるエッジの重みの例をいくつか示します。
経路の長さ
移動時間
チケットのコスト
メモ
'Cost'
は、'closeness'
、'outcloseness'
、'incloseness'
および 'betweenness'
の中心性タイプにのみ適用されます。
例: centrality(G,'closeness','Cost',c)
後続ノードを選択する確率。'FollowProbability'
と、0 ~ 1 のスカラーで構成されるコンマ区切りのペアとして指定します。継承の確率は、通過過程で pagerank アルゴリズムによって選択される次のノードが、すべてのノードからランダムに選択されるのではなく、現在のノードの後続ノード中から選択される確率です。Web サイトの場合、この確率は、別の Web ページをランダムに閲覧するのではなく、現在の Web ページ内にあるリンクをクリックすることと一致します。
メモ
'FollowProbability'
は、中心性タイプ 'pagerank'
にのみ適用されます。
例: centrality(G,'pagerank','FollowProbability',0.5)
エッジの重要度。'Importance'
と非負のエッジ重みのベクトルで構成されるコンマ区切りのペアとして指定します。i 番目のエッジの重みは、エッジ findedge(G,i)
の重要度を指定します。エッジの重みをゼロにすると、グラフからそのエッジを削除することと等しくなります。
2 つのノード間に複数のエッジがある多重グラフでは、centrality
は複数のエッジをまとめて追加し、それらを重みを組み合わせた 1 つのエッジとして扱います。
連結が強くなるほど、'Importance'
によるエッジの重みは大きくなります。'Importance'
によるエッジの重みの例をいくつか示します。
1 日あたりの旅行者数
あるリンクのクリック数
新聞の合計発行部数
メモ
'Importance'
は、'degree'
、'outdegree'
、'indegree'
、'pagerank'
、'eigenvector'
、'hubs'
および 'authorities'
の中心性タイプのみに適用されます。
例: centrality(G,'degree','Importance',x)
最大反復回数。'MaxIterations'
とスカラーで構成されるコンマ区切りのペアとして指定します。centrality
アルゴリズムは、許容誤差に一致するか、最大反復回数に達するまで (いずれか先に発生した時点まで) 実行されます。
メモ
'MaxIterations'
は、'pagerank'
、'eigenvector'
、'hubs'
および 'authorities'
の中心性タイプにのみ適用されます。
例: centrality(G,'pagerank','MaxIterations',250)
反復ソルバーの停止条件。'Tolerance'
とスカラーで構成されるコンマ区切りのペアとして指定します。centrality
アルゴリズムは、許容誤差に一致するか、最大反復回数に達するまで (いずれか先に発生した時点まで) 実行されます。
メモ
'Tolerance'
は、'pagerank'
、'eigenvector'
、'hubs'
および 'authorities'
の中心性タイプにのみ適用されます。
例: centrality(G,'pagerank','Tolerance',1e-5)
出力引数
ノードの中心性スコア。列ベクトルとして返されます。C(i)
はノード i
の中心性スコアです。ノードの中心性スコアの解釈は、選択した中心性計算のタイプによって異なります。ノードの中心性が高いほど、その中心性スコアは高くなります。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
バージョン履歴
R2016a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)