17.6.3 高度なハイパーパラメータ・カスタマイズ
豊富なハイパーパラメータ・カスタマイズを使用して、Unsupervised Anomaly Detection GraphWiseモデルを作成できます。
これは、次のコードに示すように、サブ構成クラスGraphWiseConvLayerConfig
およびGraphWiseEmbeddingConfig
を使用して実装されます。
この例では、過剰適合に打ち消すために、モデルに対して重み減衰パラメータ0.001
およびドロップ確率0.5
のドロップアウトも指定しています。Dominant埋込み層のアルファ値は0.6と指定され、フィーチャ再構築の重要性が若干向上します。
opg4j> var weightProperty = analyst.pagerank(trainGraph).getName()
opg4j> var convLayerConfig = analyst.graphWiseConvLayerConfigBuilder().
setNumSampledNeighbors(25).
setActivationFunction(ActivationFunction.TANH).
setWeightInitScheme(WeightInitScheme.XAVIER).
setWeightedAggregationProperty(weightProperty).
setDropoutRate(0.5).
build()
opg4j> var predictionLayerConfig = analyst.graphWisePredictionLayerConfigBuilder().
setHiddenDimension(8).
setActivationFunction(ActivationFunction.RELU).
build()
opg4j> var dominantConfig = analyst.graphWiseDominantLayerConfigBuilder().
setDecoderLayerConfigs(predictionLayerConfig).
setAlpha(0.6).
build()
opg4j> var model = analyst.unsupervisedAnomalyDetectionGraphWiseModelBuilder().
setVertexInputPropertyNames("vertex_features").
setConvLayerConfigs(convLayerConfig).
setEmbeddingConfig(dominantConfig).
setWeightDecay(0.001).
setEmbeddingDim(256).
setLearningRate(0.05).
setNumEpochs(30).
setSeed(42).
setShuffle(false).
setStandardize(true).
setBatchSize(64).
build()
String weightProperty = analyst.pagerank(trainGraph).getName()
GraphWiseConvLayerConfig convLayerConfig = analyst.graphWiseConvLayerConfigBuilder()
.setNumSampledNeighbors(25)
.setActivationFunction(ActivationFunction.TANH)
.setWeightInitScheme(WeightInitScheme.XAVIER)
.setWeightedAggregationProperty(weightProperty)
.setDropoutRate(0.5)
.build();
GraphWisePredictionLayerConfig predictionLayerConfig = analyst.graphWisePredictionLayerConfigBuilder()
.setHiddenDimension(8)
.setActivationFunction(ActivationFunction.RELU)
.build();
GraphWiseEmbeddingConfig dominantConfig = analyst.graphWiseDominantLayerConfigBuilder()
.setDecoderLayerConfigs(predictionLayerConfig)
.setAlpha(0.6)
.build();
UnsupervisedAnomalyDetectionGraphWiseModel model = analyst.unsupervisedAnomalyDetectionGraphWiseModelBuilder()
.setVertexInputPropertyNames("vertex_features")
.setEmbeddingConfig(dominantConfig)
.setConvLayerConfigs(convLayerConfig)
.setWeightDecay(0.001)
.setEmbeddingDim(256)
.setLearningRate(0.05)
.setNumEpochs(30)
.setSeed(42)
.setShuffle(false)
.setStandardize(true)
.setBatchSize(64)
.build();
weightProperty = analyst.pagerank(train_graph).name
conv_layer_config = dict(num_sampled_neighbors=25,
activation_fn='tanh',
weight_init_scheme='xavier',
neighbor_weight_property_name=weightProperty,
dropout_rate=0.5)
conv_layer = analyst.graphwise_conv_layer_config(**conv_layer_config)
dominant_config = dict(alpha=0.6)
dominant_layer = analyst.graphwise_dominant_layer_config(**dominant_config)
params = dict(conv_layer_config=[conv_layer],
embedding_config=dominant_layer,
vertex_input_property_names=["vertex_features"],
weight_decay=0.001,
layer_size=256,
learning_rate=0.05,
num_epochs=30,
seed=42,
standardize=true,
batch_size=64
)
model = analyst.unsupervised_anomaly_detection_graphwise_builder(**params)