目次
グラフの埋め込み
Python の実装
ノードの埋め込み
エッジ埋め込み
グラフ埋め込み
概要
ホームページ テクノロジー周辺機器 AI グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

Apr 10, 2023 pm 05:31 PM
python 機械学習 グラフの埋め込み

グラフベースの機械学習は、近年大きく進歩しました。グラフベースの手法は、リンク予測、コミュニティ発見、ノード分類など、データ サイエンスにおける多くの一般的な問題に応用できます。問題を解決するには、問題を整理する方法と所有するデータに応じてさまざまな方法があります。この記事では、グラフベースの埋め込みアルゴリズムの概要を説明します。最後に、Python ライブラリ (node2vec など) を使用してグラフ上にさまざまな埋め込みを生成する方法も紹介します。

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装


#グラフベースの機械学習

人工知能には、レコメンデーション システム、時系列、自然言語に至るまで、さまざまな分野があります。処理、コンピュータビジョン、グラフ機械学習などグラフベースの機械学習に関する一般的な問題を解決するには、いくつかの方法があります。コミュニティ発見、リンク予測、ノード分類などが含まれます。

グラフ上の機械学習の主な問題は、機械学習モデルがグラフの構造を簡単に利用できるようにグラフの構造を表現 (またはエンコード) する方法を見つけることです [1]。通常、機械学習でこの問題を解決するには、モデルに関連付けられた構造化された表形式のデータを通じて、ある種の表現を学習する必要があります。これまでは、統計測定またはカーネル関数を通じて行われていました。近年の傾向は、グラフをエンコードして機械学習モデルをトレーニングするための埋め込みベクトルを生成する傾向にあります。

機械学習モデルの目標は、データセット内のパターンを大規模に学習して認識できるように機械をトレーニングすることです。グラフは他の形式のデータ (テキスト、オーディオ、画像など) にはない異なる複雑な構造を提供するため、グラフを操作する場合、これはさらに顕著になります。グラフベースの機械学習は、繰り返し発生する根本的なパターンを検出して説明できます [2]。

私たちは、ソーシャル ネットワーク上のユーザーに関連する人口統計情報を決定することに興味があるかもしれません。人口統計データには、年齢、性別、人種などが含まれます。 Facebook や Twitter などの企業のソーシャル メディア ネットワークは、数百万から数十億のユーザーと数兆の面に及びます。このネットワークには、人間やアルゴリズムでは簡単に検出できないユーザーの人口統計に関連するパターンがいくつか存在することは間違いありませんが、モデルはそれらを学習できるはずです。同様に、ユーザーのペアに友達になるよう勧めたい場合もありますが、まだ友達ではありません。これは、グラフベースの機械学習のもう 1 つのアプリケーションであるリンク予測の材料となります。

グラフの埋め込みとは何ですか?

特徴エンジニアリングとは、入力データを処理して、元のデータ セットのコンパクトで意味のある表現を提供する一連の特徴を形成する一般的な方法を指します。特徴エンジニアリング フェーズの結果は、機械学習モデルへの入力として機能します。これは、表形式の構造化データ セットを操作する場合には必要なプロセスですが、グラフ データを操作する場合は、すべてのグラフ データに関連付けられた適切な表現を生成する方法を見つける必要があるため、実行するのは困難なアプローチです。

グラフから構造情報を表す特徴を生成するには、さまざまな方法があります。最も一般的で簡単な方法は、グラフから統計を抽出することです。これには、認識分布、ページランク、中心性メトリクス、jaccard スコアなどが含まれます。次に、必要な属性がカーネル関数を介してモデルに組み込まれますが、カーネル関数の問題は、結果の生成に伴う時間の複雑さが高いことです。

最近の研究傾向は、意味のあるグラフ表現を見つけてグラフの埋め込み表現を生成することに移行しています。これらの埋め込みは、ネットワークの元の構造を保存するグラフ表現を学習します。これは、離散グラフを連続領域に変換するために設計されたマッピング関数と考えることができます。関数を学習したら、それをグラフに適用し、結果のマッピングを機械学習アルゴリズムの特徴セットとして使用できます。

グラフ埋め込みのタイプ

グラフの分析は 3 つの粒度レベルに分解できます。ノードレベル、エッジレベル、グラフレベル(グラフ全体)。各レベルは、埋め込みベクトルを生成する異なるプロセスで構成されており、選択されるプロセスは問題と処理されるデータに依存する必要があります。以下に示す粒度レベルの埋め込みには、それぞれを視覚的に区別するための図が付いています。

ノードの埋め込み

ノード レベルでは、グラフ内の各ノードに関連付けられた埋め込みベクトルが生成されます。この埋め込みベクトルは、グラフの表現と構造に対応できます。基本的に、互いに近いノードには、互いに近いベクトルも必要です。これは、Node2Vec などの一般的なノード埋め込みモデルの基本原則の 1 つです。

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

エッジ埋め込み

エッジ層では、グラフ内の各エッジに関連する埋め込みベクトルが生成されます。リンク予測問題は、エッジ埋め込みを使用する一般的なアプリケーションです。リンク予測とは、エッジがノードのペアを接続しているかどうかの可能性を予測することを指します。これらの埋め込みは、グラフによって提供されるエッジ プロパティを学習できます。たとえば、ソーシャル ネットワーク グラフでは、年齢層や性別などに基づいてノードをエッジで接続できるマルチエッジ グラフを作成できます。これらのエッジのプロパティは、エッジの相関ベクトルを表すことで学習できます。

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

グラフの埋め込み

グラフレベルの埋め込みは一般的ではなく、各グラフを表す埋め込みベクトルの生成で構成されます。たとえば、複数のサブグラフを含む大きなグラフでは、対応する各サブグラフにグラフ構造を表す埋め込みベクトルがあります。分類問題は、グラフの埋め込みが役立つ一般的なアプリケーションです。この種の問題には、グラフを特定のカテゴリに分類することが含まれます。

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

Python の実装

Python コードを使用して、必要な次のライブラリを実装します

Pythnotallow=3.9
 networkx>=2.5
 pandas>=1.2.4
 numpy>=1.20.1
 node2vec>=0.4.4
 karateclub>=1.3.3
 matplotlib>=3.3.4
ログイン後にコピー

そうでない場合node2vec パッケージがインストールされている場合は、そのドキュメントを参照してください。 karateclub パッケージをインストールします。これも

ノードの埋め込み

import random
 import networkx as nx
 import matplotlib.pyplot as plt
 
 from node2vec import Node2Vec
 from node2vec.edges import HadamardEmbedder
 from karateclub import Graph2Vec
 
 plt.style.use("seaborn")
 
 # generate barbell network
 G = nx.barbell_graph(
m1 = 13,
m2 = 7
 )
 
 # node embeddings
 def run_n2v(G, dimensions=64, walk_length=80, num_walks=10, p=1, q=1, window=10):
"""
Given a graph G, this method will run the Node2Vec algorithm trained with the
appropriate parameters passed in.
 
Args:
G (Graph) : The network you want to run node2vec on
 
Returns:
This method will return a model
 
Example:
G = np.barbell_graph(m1=5, m2=3)
mdl = run_n2v(G)
"""
 
mdl = Node2Vec(
G,
dimensions=dimensions,
walk_length=walk_length,
num_walks=num_walks,
p=p,
q=q
)
mdl = mdl.fit(window=window)
return mdl
 
 mdl = run_n2v(G)
 
 # visualize node embeddings
 x_coord = [mdl.wv.get_vector(str(x))[0] for x in G.nodes()]
 y_coord = [mdl.wv.get_vector(str(x))[1] for x in G.nodes()]
 
 plt.clf()
 plt.scatter(x_coord, y_coord)
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Node2Vec Algorithm on Barbell Network")
 plt.show()
ログイン後にコピー

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

上の図は、によって生成された視覚的なノードの埋め込みです。バーベル グラフには、node2vec、ディープ ウォーク、ランダム ウォークなど、ノードの埋め込みを計算するための多くの方法があります。ここではnode2vecが使用されます。

エッジ埋め込み

edges_embs = HadamardEmbedder(
keyed_vectors=mdl.wv
 )
 
 # visualize embeddings
 coordinates = [
edges_embs[(str(x[0]), str(x[1]))] for x in G.edges()
 ]
 
 plt.clf()
 plt.scatter(coordinates[0], coordinates[1])
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Edge Embeddings on Barbell Network")
 plt.show()
ログイン後にコピー

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

バーベル グラフによるエッジ埋め込みの視覚化を表示します。Hammard Embedder のソース コードはここにあります。 (https://github.com/eliorc/node2vec/blob/master/node2vec/edges.py#L91)。

グラフ埋め込み

n_graphs = 10
 Graphs = [
nx.fast_gnp_random_graph(
n = random.randint(5,15),
p = random.uniform(0,1)
) for x in range(n_graphs)
 ]
 
 g_mdl = Graph2Vec(dimensions=2)
 g_mdl.fit(Graphs)
 g_emb = g_mdl.get_embedding()
 
 x_coord = [vec[0] for vec in g_emb]
 y_coord = [vec[1] for vec in g_emb]
 
 plt.clf()
 plt.scatter(x_coord, y_coord)
 plt.xlabel("Dimension 1")
 plt.ylabel("Dimension 2")
 plt.title("2 Dimensional Representation of Graph Embeddings on Randomly Generated Networks")
 plt.show()
ログイン後にコピー

グラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装

これは、ランダムに生成されたグラフのグラフ埋め込み視覚化です。graph2vec アルゴリズムのソース コードは次のとおりです。ここで見つかります。 (https://karateclub.readthedocs.io/en/latest/_modules/karateclub/graph_embedding/graph2vec.html)

概要

埋め込みは、離散グラフをベクトル表現にマッピングする関数です。グラフ データ、ノード エンベディング、エッジ エンベディング、グラフ エンベディングからさまざまな形式のエンベディングを生成できます。 3 種類の埋め込みはすべて、グラフの初期構造と特徴を X 次元の数値にマッピングするベクトル表現を提供します。

以上がグラフ埋め込みの概要: ノード、エッジ、グラフの埋め込み方法と Python の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mysqlは支払う必要がありますか mysqlは支払う必要がありますか Apr 08, 2025 pm 05:36 PM

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

PSフェザーリングは、遷移の柔らかさをどのように制御しますか? PSフェザーリングは、遷移の柔らかさをどのように制御しますか? Apr 06, 2025 pm 07:33 PM

羽毛の鍵は、その漸進的な性質を理解することです。 PS自体は、勾配曲線を直接制御するオプションを提供しませんが、複数の羽毛、マッチングマスク、および細かい選択により、半径と勾配の柔らかさを柔軟に調整して、自然な遷移効果を実現できます。

インストール後にMySQLの使用方法 インストール後にMySQLの使用方法 Apr 08, 2025 am 11:48 AM

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

PSフェザーリングをセットアップする方法は? PSフェザーリングをセットアップする方法は? Apr 06, 2025 pm 07:36 PM

PSフェザーリングは、イメージエッジブラー効果であり、エッジエリアのピクセルの加重平均によって達成されます。羽の半径を設定すると、ぼやけの程度を制御でき、値が大きいほどぼやけます。半径の柔軟な調整は、画像とニーズに応じて効果を最適化できます。たとえば、キャラクターの写真を処理する際に詳細を維持するためにより小さな半径を使用し、より大きな半径を使用してアートを処理するときにかすんだ感覚を作成します。ただし、半径が大きすぎるとエッジの詳細を簡単に失う可能性があり、効果が小さすぎると明らかになりません。羽毛効果は画像解像度の影響を受け、画像の理解と効果の把握に従って調整する必要があります。

MySQLダウンロードファイルが破損しており、インストールできません。修復ソリューション MySQLダウンロードファイルが破損しており、インストールできません。修復ソリューション Apr 08, 2025 am 11:21 AM

mysqlダウンロードファイルは破損していますが、どうすればよいですか?残念ながら、MySQLをダウンロードすると、ファイルの破損に遭遇できます。最近は本当に簡単ではありません!この記事では、誰もが迂回を避けることができるように、この問題を解決する方法について説明します。それを読んだ後、損傷したMySQLインストールパッケージを修復するだけでなく、将来の行き詰まりを避けるために、ダウンロードとインストールプロセスをより深く理解することもできます。最初に、ファイルのダウンロードが破損した理由について話しましょう。これには多くの理由があります。ネットワークの問題は犯人です。ダウンロードプロセスの中断とネットワーク内の不安定性は、ファイル腐敗につながる可能性があります。ダウンロードソース自体にも問題があります。サーバーファイル自体が壊れており、もちろんダウンロードすると壊れています。さらに、いくつかのウイルス対策ソフトウェアの過度の「情熱的な」スキャンもファイルの破損を引き起こす可能性があります。診断問題:ファイルが本当に破損しているかどうかを判断します

MySQLはダウンロード後にインストールできません MySQLはダウンロード後にインストールできません Apr 08, 2025 am 11:24 AM

MySQLのインストール障害の主な理由は次のとおりです。1。許可の問題、管理者として実行するか、SUDOコマンドを使用する必要があります。 2。依存関係が欠落しており、関連する開発パッケージをインストールする必要があります。 3.ポート競合では、ポート3306を占めるプログラムを閉じるか、構成ファイルを変更する必要があります。 4.インストールパッケージが破損しているため、整合性をダウンロードして検証する必要があります。 5.環境変数は誤って構成されており、環境変数はオペレーティングシステムに従って正しく構成する必要があります。これらの問題を解決し、各ステップを慎重に確認して、MySQLを正常にインストールします。

MySQLインストール後にデータベースのパフォーマンスを最適化する方法 MySQLインストール後にデータベースのパフォーマンスを最適化する方法 Apr 08, 2025 am 11:36 AM

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? 高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? Apr 08, 2025 pm 06:03 PM

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

See all articles