Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【全7回】グラフはなぜ使われていない?どうやって使われている?グラフデータベース活用事例 #4

【全7回】グラフはなぜ使われていない?どうやって使われている?グラフデータベース活用事例 #4

今回は「リコメンデーションと機械学習」編!(オンライン開催)
Youtube: https://youtu.be/ZmMWAST3Y44

グラフデータベースと呼ばれる DBMS(正確さのために「グラフ DBMS」と表記します)は 10年以上前から市場に存在しており、今では多くの開発者がその概要、たとえばグラフという直感的なモデルや「辿る」処理の性能メリット、について見聞きしたことがあるかと思います。その一方で、実際のシステム、とりわけ可用性や安定性が求められるビジネス・クリティカルなシステムでグラフ DBMS が採用されている例は今まで非常に稀でした。

グラフというデータモデルは DBMS で扱うビジネス価値がないのでしょうか。または、長らく注目されているグラフのユースケース(金融の不正検知、製造のトレーサビリティ分析、犯罪や税の不正の調査など)には障壁があるのでしょうか。そんな懸念も持たれていましたが、この数年、一転して、いくつもの業種でグラフ DBMS の導入が検討されるようになりました。

このシリーズでは、最近のユースケースを掘り下げて見てみることで、なにがブレークスルーになっているのかを探っていきたいと思います。ご担当業種で今すぐ再利用いただけるネタ・デモなども共有する予定です。以前よりグラフ DBMS の用途を模索しながら悪戦苦闘してきた登壇者が、その失敗経験なども交えながら、まだまだ進化していくデータベースの面白さをお伝えします。

1 銀行送金の可視化と不正検知 11/17(木) 満員御礼
2 犯罪や税不正、利益相反の調査 12/08(木) 満員御礼
3 部品表とトレーサビリティ 01/12(木) 満員御礼
4 リコメンデーションと機械学習 02/09(木) 本ページ
5 仮)配送計画の最適化と見える化 03/09(木) 予定
6 仮)通話履歴の分析、詐欺の検出 04/13(木) 予定
7 仮)社員の協業の可視化と評価 05/11(木) 予定

oracle4engineer
PRO

February 09, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. グラフはなぜ使われていない?どうやって使われている?
    グラフデータベース活用事例まとめ
    #4「リコメンデーションと機械学習」編
    Ryota Yamanaka
    Product Manager Asia-Pacific
    Spatial and Graph, Product Development
    Feb 9, 2023

    View Slide

  2. ユースケース概要、顧客事例、デモコンテンツを紹介します
    • 第1回(11月17日)銀行送金の可視化と不正検知(金融)
    • 第2回(12月08日)犯罪や税不正、利益相反の調査(公共)
    • 第3回(01月12日)部品表とトレーサビリティ(製造)
    • 第4回(02月09日)リコメンデーションと機械学習(小売)
    • 第5回(03月09日)配送計画の最適化と見える化(物流) 航空機搭乗者の関係性の検出
    • 第6回(04月13日)通話履歴の分析、詐欺の検出(通信) 情報システムとクリティカルパス
    • 第7回(05月11日)社員の協業の可視化と評価(人事)
    対象:各インダストリでグラフデータベースの導入を検討されている方、
    グラフという技術に興味がある方(コンプするとグラフエキスパートになれる?)
    Agenda
    Copyright © 2023, Oracle and/or its affiliates
    2

    View Slide

  3. リソース
    • 日本語
    • このシリーズのスライドの公開先
    • https://oracle-code-tokyo-dev.connpass.com/event/265244/
    • CodeZine 記事「グラフ・データベースはなぜ使われてこなかったか、その展望とは」
    • https://codezine.jp/article/detail/16539
    • Qiita: https://qiita.com/tags/oraclegraph
    • Twitter: https://twitter.com/uraryotas
    • 英語
    • Medium: https://medium.com/tag/oracle-graph
    • LinkedIn: https://www.linkedin.com/groups/1848520/
    • YouTube: https://www.youtube.com/channel/UCZqBavfLlCuS0il6zNY696w
    Copyright © 2022, Oracle and/or its affiliates
    3

    View Slide

  4. Copyright © 2023, Oracle and/or its affiliates
    4
    ユースケース紹介

    View Slide

  5. 1. 購買記録から顧客と商品の二部グラフを作成
    Copyright © 2023, Oracle and/or its affiliates
    5
    • 表からグラフを定義
    • 顧客や商品のマスター(ディメン
    ション表)からノードを作成
    • 購買のトランザクション(ファク
    ト表)からエッジを作成
    • 分析の対象と手法によって、データ
    ウェアハウス内の必要なデータのみ
    をグラフに変換することが可能
    • ビュー(PG View)として保持す
    るためデータの複製は不要
    • アルゴリズム利用の際にはメモリ
    上にグラフをロード
    Customer Product
    Purchased
    Recommendation

    View Slide

  6. 2. アルゴリズムを用いてリコメンデーションを計算
    Copyright © 2023, Oracle and/or its affiliates
    6
    • Two approaches
    • Evaluate only the surrounding information
    (for on-the-fly, real-time recommendation)
    • Evaluate the entire graph (then, calculate the
    similarity scores between vertex vectors)

    View Slide

  7. 2. アルゴリズムを用いてリコメンデーションを計算
    Copyright © 2023, Oracle and/or its affiliates
    7
    • グラフ全体に対する処理が必要ないもの
    • PPR (Personalized PageRank): ランダムウォークを用いて関係性の高いノードを検出
    • SALSA (Stochastic Approach for Link-Structure Analysis): PPR の二部グラフへの拡張
    • 二部グラフでなく Twitter のような同質グラフの場合には Who-to-follow
    • グラフ全体に対する処理が必要なもの(ベクトル表現の類似度を利用)
    • 協調フィルタリング: 顧客数を次元数とした行列を Matrix Factorization で次元圧縮
    • DeepWalk: ランダムウォークの結果を文字列として word2vec に与えてノードのベクトル表現を取得
    • GraphWise: スケーラブルな Graph Neural Networks の実装で、ノードのプロパティの畳込みが可能
    *ボールド体で記載されたアルゴリズムは全て Graph Server にはじめから内蔵されており、
    必要に応じてカスタマイズも可能

    View Slide

  8. 3. リコメンデーションの取得と利用
    Copyright © 2023, Oracle and/or its affiliates
    8
    • 計算結果はグラフに格納できる
    • ノードのリコメンデーションスコア
    • ノードのベクトル表現
    • クエリによって制約条件を満たす優先度
    の高いリコメンデーションを検索
    • 以前に購買されていないものなど
    • 結果をデータベースに下記戻して永続化
    することで再利用することも可能
    • APEX アプリケーションなど

    View Slide

  9. 3. リコメンデーションの取得と利用
    Copyright © 2023, Oracle and/or its affiliates
    9

    View Slide

  10. Copyright © 2023, Oracle and/or its affiliates
    10
    顧客事例

    View Slide

  11. CaixaBank - 顧客 360 度分析
    Copyright © 2023, Oracle and/or its affiliates
    11
    • 関係性を加えて顧客データを充実させる
    • 顧客プロファイルの充実
    • リスク評価の向上
    • 情報源
    • 同じ時間、同じ場所でクレジットカードを利用
    • 関係性を示唆する銀行送金、e-Wallet 決済
    • ワークフロー
    • リレーショナルデータからメイングラフへの
    マッピング、サブグラフの抽出
    • メモリに移動し、アルゴリズムを実行
    • ビジネスアナリストによるインタラクティブな
    分析と結果を基にしたバッチ処理
    Images courtesy: Caixabank
    https://youtu.be/j_RlUmd6qps

    View Slide

  12. Copyright © 2023, Oracle and/or its affiliates
    12
    デモの内容

    View Slide

  13. 1. 購買記録から顧客と商品の二部グラフを作成
    Copyright © 2023, Oracle and/or its affiliates
    13
    • Moviestream データセット
    • 148,129 顧客
    • 3,800 映画タイトル
    • 956,730 購買履歴(2019-01)
    • こちらのワークショップからダウンロード
    • https://apexapps.oracle.com/pls/apex/r/dbp
    m/livelabs/view-workshop?wid=889
    • 他の顧客のレンタルの傾向から、顧客がまだ観
    ていない映画を推薦できるか
    CREATE PROPERTY GRAPH graph1
    VERTEX TABLES (
    customer
    KEY (cust_id) LABEL customer
    PROPERTIES (cust_id, first_name, last_name, email)
    , movie
    KEY (movie_id) LABEL movie
    PROPERTIES (movie_id, title, year)
    )
    EDGE TABLES (
    rental
    KEY (sales_id)
    SOURCE KEY(cust_id) REFERENCES customer
    DESTINATION KEY(movie_id) REFERENCES movie
    LABEL rented PROPERTIES (day_id)
    )

    View Slide

  14. 2. アルゴリズムを用いてリコメンデーションを計算
    Copyright © 2023, Oracle and/or its affiliates
    14

    View Slide

  15. 2. アルゴリズムを用いてリコメンデーションを計算
    Copyright © 2023, Oracle and/or its affiliates
    15

    View Slide

  16. 3. リコメンデーションの取得と利用
    Copyright © 2023, Oracle and/or its affiliates
    16

    View Slide

  17. Copyright © 2023, Oracle and/or its affiliates
    17
    デモ!

    View Slide

  18. Oracle Graph に関する情報 (再掲)
    • 日本語
    • このシリーズのスライドの公開先
    • https://oracle-code-tokyo-dev.connpass.com/event/265244/
    • CodeZine 記事「グラフ・データベースはなぜ使われてこなかったか、その展望とは」
    • https://codezine.jp/article/detail/16539
    • Qiita: https://qiita.com/tags/oraclegraph
    • Twitter: https://twitter.com/uraryotas
    • 英語
    • Medium: https://medium.com/tag/oracle-graph
    • LinkedIn: https://www.linkedin.com/groups/1848520/
    • YouTube: https://www.youtube.com/channel/UCZqBavfLlCuS0il6zNY696w
    Copyright © 2023, Oracle and/or its affiliates
    18

    View Slide

  19. View Slide