- プロパティ・グラフのグラフ開発者ガイド
- PGQLプロパティ・グラフ
- PGQLプロパティ・グラフを使用するためのクイック・スタート
- クイック・スタート: PGQLプロパティ・グラフでのグラフ機械学習の使用
11.3 クイック・スタート: PGQLプロパティ・グラフでのグラフ機械学習の使用
このチュートリアルは、PGQLプロパティ・グラフへのDeepWalk機械学習アルゴリズムの適用を開始するのに役立ちます。
この手順では、PGQLプロパティ・グラフがすでに現在のデータベースに存在していることを前提としています。
次のステップを実行して、DeepWalkモデルを構築して操作します。
- グラフ・サーバー(PGX)にPGQLプロパティ・グラフをロードします。
opg4j> var instance = GraphServer.getInstance("https://localhost:7007", "<username>", "<password>".toCharArray()) instance ==> ServerInstance[embedded=false,baseUrl=https://localhost:7007] opg4j> var session=instance.createSession("mySession") session ==> PgxSession[ID=5af9c362-10a3-4a7c-953c-602553d4606b,source=mySession] opg4j> var graph = session.readGraphByName("BANK_GRAPH",GraphSource.PG_VIEW) graph ==> PgxGraph[name=BANK_GRAPH,N=1000,E=4997,created=1684315831352]
ServerInstance instance = GraphServer.getInstance("https://localhost:7007", "<username>", "<password>".toCharArray()); PgxSession session = instance.createSession("my-session"); PgxGraph graph = session.readGraphByName("BANK_GRAPH",GraphSource.PG_VIEW);
>>> instance = graph_server.get_instance("https://localhost:7007","<username>","<password>") >>> session = instance.create_session("my_session") >>> graph = session.read_graph_by_name("BANK_GRAPH", "pg_view") >>> graph PgxGraph(name: BANK_GRAPH, v: 1000, e: 4997, directed: True, memory(Mb): 0)
- 次のようにカスタマイズされたハイパーパラメータを使用して、DeepWalkモデルを構築します。
opg4j> var model = session.createAnalyst().deepWalkModelBuilder(). ...> setMinWordFrequency(1). ...> setBatchSize(512). ...> setNumEpochs(1). ...> setLayerSize(100). ...> setLearningRate(0.05). ...> setMinLearningRate(0.0001). ...> setWindowSize(3). ...> setWalksPerVertex(6). ...> setWalkLength(4). ...> setNegativeSample(2). ...> setValidationFraction(0.01). ...> build() model ==> oracle.pgx.api.mllib.DeepWalkModel@6e0f259e
import oracle.pgx.api.mllib.DeepWalkModel; DeepWalkModel model= session.createAnalyst().deepWalkModelBuilder() .setMinWordFrequency(1) .setBatchSize(512) .setNumEpochs(1) .setLayerSize(100) .setLearningRate(0.05) .setMinLearningRate(0.0001) .setWindowSize(3) .setWalksPerVertex(6) .setWalkLength(4) .setNegativeSample(2) .setValidationFraction(0.01) .build();
>>> model = session.create_analyst().deepwalk_builder(min_word_frequency= 1, ... batch_size= 512, ... num_epochs= 1, ... layer_size= 100, ... learning_rate= 0.05, ... min_learning_rate= 0.0001, ... window_size= 3, ... walks_per_vertex= 6, ... walk_length= 4, ... negative_sample= 2, ... validation_fraction= 0.01)
- 次のようにDeepWalkモデルをトレーニングします。
- 次のようにloss値を取得します。
- 次のように類似頂点を計算します。
opg4j> var similars = model.computeSimilars("ACCOUNTS(280)",10) batchSimilars ==> oracle.pgx.api.frames.internal.PgxFrameImpl@308e465b opg4j> batchSimilars.print()
import oracle.pgx.api.frames.*; PgxFrame similars = model.computeSimilars("ACCOUNTS(280)", 10); similars.print();
>>> similars = model.compute_similars("ACCOUNTS(280)",10) >>> similars.print()
この例では、類似の出力が生成されます。
+-------------------------------------+ | dstVertex | similarity | +-------------------------------------+ | ACCOUNTS(280) | 1.0 | | ACCOUNTS(486) | 0.3253505229949951 | | ACCOUNTS(615) | 0.2806776463985443 | | ACCOUNTS(660) | 0.27348122000694275 | | ACCOUNTS(737) | 0.2734076678752899 | | ACCOUNTS(368) | 0.2707795202732086 | | ACCOUNTS(479) | 0.27019545435905457 | | ACCOUNTS(845) | 0.2618815004825592 | | ACCOUNTS(834) | 0.2543807625770569 | | ACCOUNTS(249) | 0.24260951578617096 | +-------------------------------------+
- 次のようにトレーニング済のすべてのベクトルを取得し、データベース表に格納します。
opg4j> var vertexVectors = model.getTrainedVertexVectors().flattenAll() vertexVectors ==> oracle.pgx.api.frames.internal.PgxFrameImpl@46cb9794 opg4j> vertexVectors.write().db().name("deepwalkframe").tablename("vertexVectors").overwrite(true).store()
PgxFrame vertexVectors = model.getTrainedVertexVectors().flattenAll(); vertexVectors.write() .db() .name("vertex vectors") .tablename("vertexVectors") .overwrite(true) .store();
>>> vertex_vectors = model.trained_vectors.flatten_all() >>> vertex_vectors.write().db(). \ ... table_name("vertex_vectors"). \ ... overwrite(True). \ ... store()
- 次のように、トレーニング済モデルをデータベースに格納します。
opg4j> model.export().db(). ...> modelstore("bank_model"). ...> modelname("model"). ...> description("DeepWalk Model for Bank data"). ...> store()
model.export().db() .modelstore("bank_model") .modelname("model2") .description("DeepWalk Model for Bank data") .store();
>>> model.export().db(model_store="bank_model", ... model_name="model", ... model_description="DeepWalk Model for Bank data")
- 次のように、データベースから事前トレーニング済モデルをロードします。
opg4j> session.createAnalyst().loadDeepWalkModel().db(). ...> modelstore("bank_model"). ...> modelname("model"). ...> load()
model = session.createAnalyst().loadDeepWalkModel().db() .modelstore("bank_model") .modelname("model") .load();
>>> model = session.create_analyst().get_deepwalk_model_loader().db(model_store="bank_model", ... model_name="model")
- 次のようにモデルを破棄します。
サポートされている機械学習アルゴリズムの詳細は、グラフ用の機械学習ライブラリ(PgxML)の使用を参照してください。