17.6.8 異常の推測

トレーニングされたモデルを使用すると、次のコードで示すように、表示されないノードの異常スコアまたはラベルを推測してそれらをデータベースに格納できます。

opg4j>  var vertexScores = model.inferAnomalyScores(fullGraph, fullGraph.getVertices()).flattenAll()
opg4j> vertexScores.write().
    db().
    name("vertex scores").
    tablename("vertexScores").  
    overwrite(true).             
    store()
PgxFrame vertexScores = model.inferAnomalyScores(fullGraph,fullGraph.getVertices()).flattenAll();
vertexScores.write()
    .db()
    .name("vertex scores")
    .tablename("vertexScores") 
    .overwrite(true)            
    .store();
vertex_scores = model.infer_anomaly_scores(full_Graph,full_Graph.get_vertices()).flatten_all()
vertex_scores.write().db().table_name("table_name").name("vertex_scores").overwrite(True).store()

データの汚染要因がわかっている場合は、それを使用して適切なしきい値を探すことができます。

opg4j>  var vertexLabels = model.inferAnomalyScores(fullGraph, fullGraph.getVertices()).flattenAll()
opg4j> vertexLabels.write().
    db().
    name("vertex labels").
    tablename("vertexLabels").  
    overwrite(true).             
    store()
PgxFrame vertexLabels = model.inferAnomalyScores(fullGraph,fullGraph.getVertices()).flattenAll();
vertexLabels.write()
    .db()
    .name("vertex labels")
    .tablename("vertexLabels") 
    .overwrite(true)            
    .store();
vertex_labels = model.infer_anomaly_scores(full_Graph,full_Graph.get_vertices()).flatten_all()
vertex_labels.write().db().table_name("table_name").name("vertex_labels").overwrite(True).store()

前述のすべての例では、現在ログインしているデータベースでモデルの異常を推測することを前提としています。別のデータベースで異常を推測する必要がある場合は、usernamepasswordjdbcUrlなどのデータベース資格証明をinferAnomalyScoresメソッドにさらに指定する必要があります。

opg4j> vertexScores.write().
     db().
     name("vertex scores").
     tablename("vertexScores").         
     username("user").                   
     password("password").               
     jdbcUrl("jdbcUrl").                 
     overwrite(true).                    
     store()
vertexScores.write()
    .db()
    .name("vertex scores")
    .tablename("vertexScores")          
    .username("user")                   
    .password("password")              
    .jdbcUrl("jdbcUrl")                 
    .overwrite(true)                    
    .store();
vertex_scores.write().db().table_name("table_name") \
                           .name("vertex scores") \
                           .username("user") \      
                           .password("password") \  
                           .jdbc_url("jdbc_url") \
                           .overwrite(True) \
                           .store()