タグ

graphとpythonに関するsh19910711のブックマーク (17)

  • 【論文紹介】 Node2Vecでネットワークのベクトル埋め込みを学習する。 - Qiita

    卒論のためにNode2Vecの論文を読んだので、この手法でネットワークの構造を学習する方法について解説します。数式を追わなくてもある程度理解できるようになっていると思います。 参考元 元論文: node2vec: Scalable Feature Learning for Networks PyTorch GeometricのNode2Vecモデル: torch_geometric.nn.models.Node2Vec 再現実装の際にPyTorch Geometric(PyG)のモデルを用いたので、論文に明記されていない学習方法などはこちらを参考にしました。 Node2Vecとは Node2Vecは、 ランダムウォークによってグラフの特徴が乗った系列を生成する 生成したウォークの系列をWord2VecのSkip-Gramモデルの入力とし、目的関数を最適化する という手順でグラフの分散表現を

    【論文紹介】 Node2Vecでネットワークのベクトル埋め込みを学習する。 - Qiita
    sh19910711
    sh19910711 2024/04/20
    "参考元 PyTorch GeometricのNode2Vecモデル / Node2Vec: 半教師あり学習によって計算速度と精度を両立 / Negative Samplingの論文やNCE(Noise Contrastive Estimation)などについて調べてみると良い" 2023
  • Bluesky のフォロー推薦モデルを書いた - HackMD

    Social Network を活用するには自分の興味にあったアカウントをフォローすることが大事です.そのために重要な役割を果たすのが「おすすめユーザ推薦 (friend recommendation)」です.

    Bluesky のフォロー推薦モデルを書いた - HackMD
    sh19910711
    sh19910711 2024/01/21
    "次数が期待的に閾値以下になるようにサンプリング / GraphSage のサンプリングをデータセット生成時点で行っている / 与えられたグラフの (source_id, target_id) を正例,target_id をシャッフルしたものを負例 + TripletMarginLoss"
  • igraph + Pythonによるネットワーク分析

    世の中の様々なシステムは、"グラフ"で表現することが可能だ。例えば、SNSにおける人の繋がりは、人を点(ノード)、人との関係を線(リンク)として、グラフが描ける。同様に、交通網、インターネット、プログラムのソースコード、脳内の神経回路なども、ノードとリンクでグラフとして表現することが出来る。 システムをグラフとして表現することで、グラフ理論の観点からシステムを解析・分析することが可能となる。その結果、何らかの新しい知見が得られる可能性がある。例えば、人の繋がりでは、最も発言力のある人間を、定量的に示すことが出来るし、交通網では渋滞などを迂回しつつ最短な経路を計算することも可能となる。 システムをグラフとして表現し、解析するためのプログラミングライブラリに、igraphがある。igraphは、2006年から開発・公開されている、C/Python/R用のグラフライブラリであり、現在、ハーバード

    igraph + Pythonによるネットワーク分析
    sh19910711
    sh19910711 2023/03/19
    2015: Python版あったのか / "igraph: 2006年から開発・公開されている、C/Python/R用のグラフライブラリ / ハーバード大学のGabor Csardi氏と、エトヴェシュ・ロラーンド大学のTamás Nepusz氏の二人によって、開発・保守が行われている"
  • PyTorch-BigGraph: A Large Scale Graph Embedding System

    Azure Arc x IoT Connect Gatewayを用いたIoTシステム / IoT Systems with Azure Arc x IoT Connect Gateway

    PyTorch-BigGraph: A Large Scale Graph Embedding System
    sh19910711
    sh19910711 2022/12/30
    2019 / "PyTorch-BigGraph: Billion-Trillionサイズのエッジを持つグラフに対してGraph Embeddings / torch.distributed.{send/recv}を利用 / SysML 19: Adam Lerer, Pytorch-BigGraph: A Large Scale Graph Embedding System"
  • 1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う - Qiita

    1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う TL;DR 大きな構造のグラフをグラフニューラルネットワークで学習する場合、メモリに乗り切らない可能性があるため、サンプリングして学習する必要があります。 今回、PyG; pytorch-geometicsのSamplerを利用して、1つのグラフをサブグラフに分割し学習を行ってみました。使用するSamplerは以下の通りです。 NeighborSampler データセットはみんな大好きKarateClubを利用しています。ノードが所属するクラスを推論するタスクです。 データの準備 from torch_geometric.datasets import TUDataset, KarateClub # dataset = TUDataset(root='/tmp/ENZYMES', name='

    1 つのグラフに対し、PyG の Sampler を利用してMini Batchによる学習を行う - Qiita
    sh19910711
    sh19910711 2022/09/25
    "pytorch-geometicsのSamplerを利用して、1つのグラフをサブグラフに分割し学習を行ってみました / データセットはみんな大好きKarateClub / from torch_geometric.loader import NeighborSampler"
  • PyG (PyTorch Geometric) で MetaPath2Vec して Node2Vec と比較 - Qiita

    グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、MetaPath2Vec を使うことがテーマです。Node2Vecとの比較も行ないました。 PyG (PyTorch Geometric) インストール PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。 import os import torch torch.manual_seed(0) os.environ['TORCH'] = torch.

    PyG (PyTorch Geometric) で MetaPath2Vec して Node2Vec と比較 - Qiita
    sh19910711
    sh19910711 2022/08/12
    "自作ネットワークを作成して、MetaPath2Vec でノードを潜在空間にプロットしたり、 Node2Vec と比較したりしました / torch_geometric.data.HeteroData / from torch_geometric.nn import MetaPath2Vec / torch_geometric.nn.Node2Vec"
  • PyG (PyTorch Geometric) のデータセットを自作する - Qiita

    グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、PyG (PyTorch Geometric)のデータセットを自作することがテーマです。自作ではなくベンチマーク用に用意してあるデータを用いる場合は過去記事をご覧ください。 日地図のデータ 題材として日地図のデータを用います。日語を matplotlib で表示するための準備をします。 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting japanize-matplotlib Downloading japanize-matplotlib-1.1.3.tar.gz (4.1

    PyG (PyTorch Geometric) のデータセットを自作する - Qiita
    sh19910711
    sh19910711 2022/07/22
    "日本地図のデータ: 各市町村から、何番目(top - 1 番目)に近い市町村までに辺(edge)を引いた / 座標データとネットワークの接続関係を入力として、その市町村が「何地方なのか」を予測"
  • Social NetworksのEDAとLink Prediction 備忘録 - Qiita

    概要 ソーシャルネット分析に含まれるLink Predictionについて、その精度がトポロジーに依存するだろうことを実験で確認する。 実施期間: 2022年3月 環境:Ubuntu20.04 LTS パケージ:scikit network, networkx 1. パケージ 使用するモデルにはDirected Graphを指定する。 ソーシャルネットは誰が誰をフォローしているだとか、どのサイトがどのサイトのリンクを張っているかだとか、どの論文がどの論文をciteしたか、方向があることが普通。 しかし馴染みのnetworkxや、いろんなアルゴリズムを実装したnetworkitはDirected Graphに対応していないAPIが多すぎて使えないので、ここではscikit networkで評価する。 importするパケージは下記となる。 import numpy as np import

    Social NetworksのEDAとLink Prediction 備忘録 - Qiita
    sh19910711
    sh19910711 2022/05/06
    "networksciencebook: Social-net界では重鎮のBarabasi先生が作成 / 講義は有名なStanfordのCS224Wと、最近公開されたロシア国立HSEが勉強になった。前者はGNNが最終目的で後者はGraph theory全般の講義"
  • TensorFlowに挫折した僕がPyTorchで圧倒的にシンプルなGCNを実装した話 - Qiita

    はじめに 化学構造を対象としたGraph Convolutional Network(GCN)に関して、Convolutional Networks on Graphs for Learning Molecular Fingerprints とい論文が広く知られている。2015年に発表された論文であるが、化合物系のGCNの論文には必ず引用されていると言っていい程、有名な論文である。 既に様々なライブラリに実装されているが、今回PyTorchの力を借りてこの論文を自力で実装したので詳細を共有したい。 モチベーション 論文の著者による実装コードは https://github.com/HIPS/neural-fingerprint で公開されている。 また、化合物によるディープラーニングライブラリとして DeepChem や Chainer Chemistry などいくつか存在するが、これらの

    TensorFlowに挫折した僕がPyTorchで圧倒的にシンプルなGCNを実装した話 - Qiita
    sh19910711
    sh19910711 2022/05/02
    "DeepChem は TensorFlow ベースということもあり、コードの理解が難しく挫折 / 実装した時は「シンプルすぎる!」と思ったが人に伝えるとなると中々大変で、この記事を書くだけで丸3日 / この論文を書いた人は本当にすごい"
  • グラフニューラルネットワークでQiitaのタグづけをレコメンドする - Qiita

    記事はNTTドコモR&Dアドベントカレンダー2021の8日目の記事です. こんにちは、NTTドコモの橋(@dcm_hashimotom)です. 業務ではレコメンド関連の技術開発・施策検討を行っており,主にPythonやBigQuery, Apache Sparkを触ってます. SNSなどで投稿したコンテンツの検索性を上げるためには,そのコンテンツへのタグ(またはハッシュタグ)の付与が重要です.Qiitaではタグは5つまで付与することができ,タグを指定した絞り込み検索や,マイページでのプロフィールに使われております.しかし,タグの付与はユーザ手動なものが多く(要出典),検索性が高いものを選択するためには,ドメイン知識が必要です.なので,タグを付ける際に「このタグがついた投稿では他にこんなタグもついてます」的なレコメンドがあれば有用そうです.また,レコメンドということですが,近年レコメンド

    グラフニューラルネットワークでQiitaのタグづけをレコメンドする - Qiita
    sh19910711
    sh19910711 2021/12/12
    "GNNを用いてQiitaタグをembeddingしたTech2Vecを作成 / DGLのチュートリアルに沿った形式で実装 / 「GNN」を入力してみましたが + 前処理で削られてしまって > もっとGNNの記事が必要"
  • Introducing TensorFlow Graph Neural Networks

    Posted by Sibon Li, Jan Pfeifer and Bryan Perozzi and Douglas Yarrington Today, we are excited to release TensorFlow Graph Neural Networks (GNNs), a library designed to make it easy to work with graph structured data using TensorFlow. We have used an earlier version of this library in production at Google in a variety of contexts (for example, spam and anomaly detection, traffic estimation, YouTub

    Introducing TensorFlow Graph Neural Networks
  • dash-cytoscapeで可視化する重みをつけた最短経路問題を書く

    3. グラフの定義 グラフ(ツリーグラフやDAG)は、ライブラリによって様々な記述方法があります(隣接行列表現など)が、今回dash-cytoscapeで使用する形式はオブジェクト形式で割と独自系です。 2 ~ 7行目でノードの定義。8行目以降で、ノードとノードを繋ぐ線(エッジ)の定義をしています。weightは、そのエッジの重みと言って、作業量などを考慮して最短経路問題など解く際に使用されます。 elements = [ {'data': {'id': 'A'}}, {'data': {'id': 'B'}}, {'data': {'id': 'C'}}, {'data': {'id': 'D'}}, {'data': {'id': 'E'}}, {'data': {'id': 'F'}}, {'data': {'id': 'AC', 'weight': 5, 'source': 'A'

    dash-cytoscapeで可視化する重みをつけた最短経路問題を書く
  • cuGraph でページランクを計算したら爆速だった - Taste of Tech Topics

    概要 こんにちは、機械学習エンジニアの古賀です。 最近、人の動きを時系列で解析するためにグラフデータを扱ったのですが、データ量が大きくなると解析に時間がかかってしまい、効率が悪いと感じることがありました。 そんな中、cuGraph という高速にグラフ分析ができるライブラリが あることを知ったので、どれくらい高速なのか、有名なページランクの計算を題材に他のライブラリと速度を比較してみました。 目次は以下です。 概要 グラフとは Python によるグラフデータの分析 cuGraphとは ページランクとは ページランク値の定義 ページランクとグラフ 検証 実行環境 cuGraph ライブラリのインストール ライブラリのインポート データセット 検証内容・結果 1. NetworkX のグラフ、NetworkX のアルゴリズムを用いてページランクを計算 2. NetworkX のグラフ、cuGr

    cuGraph でページランクを計算したら爆速だった - Taste of Tech Topics
    sh19910711
    sh19910711 2021/05/23
    Colab用のユーティリティが用意されてるのか
  • Python3.9の新機能(2) - Pythonで有向非巡回グラフのソートをする - Qiita

    はじめに 2020年10月にリリースが予定されているPython3.9で新たに加わる変更をPython3.9の新機能 (まとめ)という記事でまとめています。少し分量のありそうな話題を別記事にしていますが、これはその第二弾で、有向非巡回グラフのソートについてです。 有向非巡回グラフとトポロジカルソート まず、ここでいうグラフは折れ線グラフとか棒グラフとかデータを視覚的に表す図表のことではなく、グラフ理論のグラフです。グラフはデータ構造の一種で、ノード(頂点)とそれらを繋ぐエッジ(枝)で構成されています。ノードやエッジに何かしらの意味をもたせることによって、関連性を持つ情報を表すことができます。 グラフにもいくつか種類があり、その最初の分かれ道がエッジに方向があるかないか。方向があるものを有向グラフ(左側)、無いものを無向グラフ(右側)といいます。 エッジはノードを繋ぐものですが、繋がれたノー

    Python3.9の新機能(2) - Pythonで有向非巡回グラフのソートをする - Qiita
    sh19910711
    sh19910711 2020/10/19
    "from functools import TopologicalSorter"
  • 【組み合わせ最適化入門】カンファレンスのタイムテーブル決めをマッチング問題としてGoogle OR-Tools/Pulp/munkresで解く - フリーランチ食べたい

    PyCon JPの運営メンバーとして自分は、昨年度のPyCon JP 2018のタイムテーブル決めに組み合わせ最適化問題を用いました。ちなみに最終的なタイムテーブルはアルゴリズムで算出された結果を人間がレビューして調整しています。 昨年度は時間の制約があり、いくつか反省点があったので今年は改善したいと考えています。 pyconjp.blogspot.com そういうわけで事前調査も兼ねて、カンファレンスのタイムテーブル決めを組み合わせ最適化問題として考え、それをPythonのライブラリを使って解く方法を書きたいと思います。 解きたい問題 カンファレンスのタイムテーブル決めでは下図のように部屋と時間が決まっていて、そこのトークを割り当てていくことが一般的です。 このとき、部屋の大きさ、時間帯やトークの内容が全く同一であれば何も考えずに隅から配置していけば良いのですが、現実には以下のような条件

    【組み合わせ最適化入門】カンファレンスのタイムテーブル決めをマッチング問題としてGoogle OR-Tools/Pulp/munkresで解く - フリーランチ食べたい
  • [Python]NetworkXでQiitaのタグ関係図を描く

    はじめに Pythonのライブラリ、NetworkXの使い方を、Qiitaの投稿に付けられたタグの関係グラフの作成を例にして説明します。 NetworkXを使うと、下に示すような、ノードとエッジで構成されるグラフを描くことができます。 実行環境 Windows 10 Python 3.5.2 (Anaconda) Jupyter notebook 元データの取得 Qiitaは、投稿を取得するAPIを公開しているので、簡単に投稿を取得することができます。 JSON形式で返ってくるデータを下記コードでPythonの辞書に変換します。 なお、非認証の場合、1リクエストごとに最大100記事、1時間ごとに60回の制限があるので、 今回は、100*60 = 6000 記事を対象とします。 import requests import json items = [] params = {"page":1

    [Python]NetworkXでQiitaのタグ関係図を描く
  • ツイート中の頻出キーフレーズと連想語から関心事を可視化する実験: Twitter Streaming API→Yahoo API→各種補完API→Gephi - NO_WAIT_FOREVER

    Twitter Streaming APIを使用して自分のツイートを取得し、頻出語を調べることを思い立ちました。 Twitterアカウントを通して見た自分の関心事がどんなものであるかを調べ、 どれくらい当たっているかを見る遊びでしたが、結果は当たらずといえども遠からずといった程度でした。 既存のサービスを呼び出すだけのプログラミングであり、 簡単に実装できると思いきや、コード量は思ったより多くなり苦労しました。 この記事では、使用したライブラリやAPIの備忘録を兼ねて、プログラム例とツイートの解析結果可視化例を紹介します。 実験の概要 下記の流れで実験しました。自分のTweet中のキーフレーズだけでは面白くないので、 ちょっと血迷ってGoogleなどが提供する補完サービス(いわゆるサジェスト)の結果を 「連想語」として利用することを考えました。 Twitter Streaming API

    ツイート中の頻出キーフレーズと連想語から関心事を可視化する実験: Twitter Streaming API→Yahoo API→各種補完API→Gephi - NO_WAIT_FOREVER
  • 1