小さなグラフィックマイニング研究のためのスイスアーミーナイフ:学習空手クラブチャートPythonライブラリ


 

作者| ベネディクトRozemberczki

翻訳|彼Zebian |キャロル

制作| AI技術のベースキャンプ(ID:rgznai100)

       

空手クラブ(空手クラブ)NetworkX Pythonが教師なし機械学習の拡張機能をパッケージ化しています。詳細はこちらのマニュアルを参照してくださいすることができます:

https://github.com/benedekrozemberczki/karateclub。

空手クラブは、構造化されたデータに教師なし学習をマッピングするために高度な方法を使用します。要するに、それは小さなグラフィックマイニング研究のためのスイスアーミーナイフです。

まず、それは技術埋め込まれたネットワーク・ノード・レベルとレベルを提供します。第二に、それは様々なオーバーラップコミュニティの検出方法が含まれており、重複しません。幅広い覆う方法の実装されたネットワーク科学(NetSci、Complenet)を、データマイニング(ICDM、CIKM、KDD)、人工知能(AAAI、IJCAIを)と機械学習(NeurIPS、ICML、ICLR)はなりますミーティング、セミナー雑誌の名前

簡単な例

 

近代的な検出技術を利用するために空手クラブコミュニティは(:ここに付属のチュートリアルを参照してください非常に簡単になっていhttps://karateclub.readthedocs.io/en/latest/notes/introduction.html)。以下のコードセグメント検出アルゴリズムは、合成図と重なるコミュニティを使用します。    

       

設計の原則

  

究極のユーザーフレンドリーな機械学習ツールになるために - あなたは空手クラブを作成するとき、我々は、ビューの機械学習システムの設計点のためのAPIを使用します。APIのためのこの設計原理は、いくつかの簡単なアイデアが含まれています。このセクションでは、詳細に適切な例示的実施例を通じて、これらのアイデアとその明白な利点を説明します。

1)スーパーパッケージモデルパラメータとテスト

適切なコンストラクタPythonのオブジェクトモデルインスタンス空手クラブを使用して、教師なし作成します。コンストラクタのパラメータが適切に使用する既存のモデルを可能にするスーパーデフォルト設定を持ちます。単純に、エンドユーザーは、当社の枠組みの中で実施される方法を使用することができ、非常に詳細に内部モデルの仕組みを理解していないことを、この手段を置きます。

我々は、合理的なデフォルトのスーパーの学習と実行時のパフォーマンスを提供するために、これらのパラメータを設定します。モデルは、これらのスーパーモデルのパラメータを変更するために作成したときに必要に応じて、コンストラクタの適切なパラメータを使用します。そのような共通の属性などの超パラメータは、モデルが設定をチェックできるようにします。

              

私たちは、コードの断片上記パッケージのハイパーパラメータで示しています。NetworkXは、すべてのオルドス - レーニイマップファーストを生成し、我々は、標準の使用組み込みを作成するために設定したパラメータを超過します。

モデルを構築するとき、我々は以上のこれらのデフォルトパラメータを変更しないだろう、とあなたは、標準的なプリントスーパーサイズ・パラメータを設定することができます。我々は新しいモデル、まだ公的にアクセス可能な寸法ハイパーを作成したので、第二に、我々は、次元の異なる数を設定することができます。

 一貫2)と非拡散型 

モデルの空手クラブを学習各教師なしのマシンは、クラス見積もりから継承することを一つのクラスとして実装されています。我々は、特定の技術に関連したエンドユーザーのアルゴリズムの詳細は、特にに興味がないことを前提としていますので、これだけの数のパブリックメソッドは、当社の枠組みの中で実装されたアルゴリズム。 

入力(パターン特徴ノード)を受け入れ、プライベートまたは埋め込みクラスタを学習するための適切なメソッドを呼び出しフィット()フィッティングの方法を使用することによってすべてのモデル。クラスタメンバーシップは、()get_membershipsを呼び出すことによって取得されながらノードとインセット()メソッドは、公共get_embeddingを返します。

              

上記のコードセグメントでは、ランダムなグラフを作成し、超DeepWalkパラメータでデフォルトモデルを使用して、モデルを当てはめるの公開フィット()メソッドを使用して、埋め込まれた公開get_embedding()メソッドの戻りを呼び出すこと。

私たちは、この例では、モデルのコンストラクタに、最小限の労力で変化を導入することによって作成された組み込みwalkletを変更することができ、これらの変更は、次のコードになります。    

我々は唯一のいくつかの変更を加える必要があるため、これら2つのスニペットを見ると、API駆動設計の利点は、明らかです。まず、あなたがモデルに組み込まれたインポートを変更する必要があります。第二に、我々は、モデルの構造を変更する必要があり、デフォルトのスーパーパラメータを設定しています。

第三に、DeepWalk公共行動とWalkletsクラスの同じメソッド。()リターンをget_embeddingによる学習)(フィットを埋め込むことによって。特徴抽出は、迅速かつ最小限のコードを変更することができる教師なし上流の模範演奏に対する悪い場合。

3)正規化されたデータセットの抽出 

私たちは、モデルを当てはめたときに標準化されたデータセットを使用して抽出するために、空手クラブを設計しました。実際には、この手段同じ目的のアルゴリズムが同じデータ型モデルのトレーニングを使用していること。詳細は以下のとおりです。

  • 図単一NetworkXは、入力として、フィッティング技術の近隣ノード構成を埋め込むに基づきます。

  • 入力アレイ要素として属性ノードNetworkX図埋め込み処理はnumpyのscipyのダウンロードまたはスパース行列として表されます。これらのマトリックスでは、ノードに対応する行は、列が機能に対応します。

  • 図チャートステージは、入力NetworkX図の方法及び指紋のリストを埋め込みます。

  • 入力NetworkX図の方法の使用を検出するコミュニティ。

4)高性能機械モデル 

図マイニングアルゴリズムの基礎となるメカニズムは、広くライブラリは、オペレーティングシステムに依存しない、Pythonのライブラリ実装を使用し、他の外部ライブラリ(例えばTensorFlow又はPyTorch)の存在を必要としません。内蔵グラフィックス空手クラブはNetworkXの使用を表しています。

密な線形代数演算は、numpyのを使用して行われ、スパースは、他の操作scipyのダウンロードのために使用されています。行列分解技術GenSimパッケージ、および使用PyGSPの方法に依存したグラフィックデータを使用して暗黙的。

5)正規化された出力インターフェースを生成し

標準出力空手クラブは、同じ目的のために、常に出力の同じ型を返すために、データポイントの一貫したシーケンスとなっていることを教師なし学習アルゴリズム性を保証を生成しました。

この設計原理は非常に重要な意義を持っています。アルゴリズムの特定のタイプは、下流教師なしモデル出力から上流に使用されるコードを変更することなく、アルゴリズムの同じタイプによって置き換えられている場合。具体的には、私たちのフレームワークは、次のようなデータ構造を使用して出力を生成します:

  • get_embedding()メソッドを呼び出すとき、ノード埋め込みアルゴリズム(予約フィールド、プロパティおよび構造)は常にnumpyのフロートアレイを返します。アレイ内の行数は、頂点の数、常に頂点インデックスに対応する行のインデックスです。さらに、列の数は、埋め込み次元です。

  • get_embedding()メソッドを呼び出すとき、全体のグラフの埋め込み方法(スペクトル指紋、暗黙行列分解技術)がnumpyのフロートアレイを返します。図中の単一の位置に対応する行インデックスは、リストを入力します。同様に、列は、埋め込み次元を表します。

  • あなたはget_memberships()メソッドを呼び出すと、コミュニティ検出プロセスは、辞書を返します。ノードのインデックスは、キーで、キーはコミュニティメンバーの頂点に対応する値です。図クラスタ技術は、頂点クラスタを見つけるために、いくつかの組み込みのノードを作成します。numpyの浮動小数点の配列を返すコールget_embedding()メソッド。構造は、埋め込まれた配列アルゴリズム戻るのアレイのノードと同様です。

私たちは、生成し、プレゼンテーションコードを標準化し、出力インターフェースは、以下のスニペット。私たちは、クラスターランダムなグラフを作成し、戻っ辞書は、クラスタメンバーシップが含まれています。外部ライブラリのコミュニティを使用して、我々はこれらのモジュラークラスタを計算することができます。

これは、正規化された出力がより容易になり、外部インターフェース図マイニングや機械学習ライブラリを生成することを示します。       

 6)制限 

現在、空手クラブはいくつかの制限、私たちの入力仮定の設計があります。我々はNetworkX図は無向、単一組成の強連結成分によって仮定する。すべてのアルゴリズムは、inodeが連続的であると仮定し、ノードインデックス0を開始します。さらに、我々は、図は、マルチノードの一部ではないと仮定すると、均一であり、かつエッジが(各辺が単位重量を有する)非加重です。 

パターン全体のアルゴリズムを埋め込み、グラフィックの全ては、前述の入力に必要な濃度を変更しなければなりません。特徴を埋め込むベースWeisfeiler、リーマンは、単一の列を有するノードは、ファンクションキーにアクセスすることができる可能にします。このキーがなければ、機能の中央ノードとして、デフォルトのアルゴリズム。

ご質問やその他のフィードバックがある場合は、私たちに伝えるためにコメントしてください。

オリジナル:

https://hackernoon.com/karate-club-a-python-library-for-graph-representation-learning-05383yh9

【終わり】

フォース計画

「フォース計画[第二四半期] - 学習能力チャレンジ」開始!今から3月21日まで、原作者をサポートするために流れなければなりません!挑戦にあなたを待っ独占[全表示]メダル

推奨読書

    それぞれ「見た目」のあなたのポイント、真剣AIとしてI

リリース1350元の記事 ウォンの賞賛10000 + ビュー619万+

おすすめ

転載: blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/104787345