16.2.6 Classification Versus Regression Models on Supervised GraphWise Models
When predicting a property, the loss function defines if the model will perform classification tasks or regression tasks.
For classification tasks, the Supervised GraphWise model will infer
labels. Even if the property is a number, the model will assign one label for each
value found and classify on it. The possible losses for classification tasks are
softmax cross entropy, sigmoid cross entropy,
and DevNet loss.
For regression tasks, the Supervised GraphWise model will infer values
for the property. The loss for regression tasks is the MSE
loss.
opg4j> import oracle.pgx.config.mllib.loss.LossFunctions
opg4j> var model = analyst.supervisedGraphWiseModelBuilder().
setVertexInputPropertyNames("vertex_features").
setEdgeInputPropertyNames("edge_features").
setVertexTargetPropertyName("scores").
setConvLayerConfigs(convLayerConfig).
setPredictionLayerConfigs(predictionLayerConfig).
setLossFunction(LossFunctions.MSELoss()).
setBatchGenerator(BatchGenerators.STRATIFIED_OVERSAMPLING).
build()import oracle.pgx.config.mllib.loss.LossFunctions;
SupervisedGraphWiseModel model = analyst.supervisedGraphWiseModelBuilder()
.setVertexInputPropertyNames("vertex_features")
.setEdgeInputPropertyNames("edge_features")
.setVertexTargetPropertyName("scores")
.setConvLayerConfigs(convLayerConfig)
.setPredictionLayerConfigs(predictionLayerConfig)
.setLossFunction(LossFunctions.MSELoss())
.setBatchGenerator(BatchGenerators.STRATIFIED_OVERSAMPLING)
.build();from pypgx.api.mllib import MSELoss
params = dict(edge_target_property_name="scores",
conv_layer_config=[conv_layer],
pred_layer_config=[pred_layer],
vertex_input_property_names=["vertex_features"],
edge_input_property_names=["edge_features"],
batch_gen='Stratified_Oversampling',
loss_fn=MSELoss())
model = analyst.supervised_graphwise_builder(**params)