2017-08-10 6 views
0

Je suis une formation de mes données en utilisant le code suivant:prédictions Postgres-Madlib prend plus de temps que la formation

start_time := clock_timestamp(); 
    PERFORM madlib.create_nb_prepared_data_tables('nb_training', 
               'class', 
               'attributes', 
               'ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]', 
               57, 
               'categ_feature_probs', 
               'numeric_attr_params', 
               'class_priors' 
               ); 
    training_time := 1000* (extract(epoch FROM clock_timestamp()) - extract(epoch FROM start_time)); 

Et mon code de prédiction est la suivante:

start_time := clock_timestamp(); 
    PERFORM madlib.create_nb_probs_view('categ_feature_probs', 
             'class_priors', 
             'nb_testing', 
             'id', 
             'attributes', 
             57, 
             'numeric_attr_params', 
             'probs_view'); 

select * from probs_view 
prediction_time := 1000 * (extract(epoch FROM clock_timestamp()) - extract(epoch FROM start_time)); 

Les données de formation contenant 450000 dossiers étaient comme jeu de données de test contient 50000 enregistrements.

Cependant, mon temps d'entraînement moyen est d'environ 17173 ms, alors que l'heure de prédiction est de 26481 ms. Selon ma compréhension des bayes naïves, le paramètre prediction_time devrait être inférieur à training_time. Qu'est-ce que je fais mal ici?

Répondre

1

Naive Bayes classification est dans un premier temps pour MADlib ce qui signifie que l'interface et la mise en œuvre sont préliminaires à ce stade. Il y a un tas de open JIRAs qui me dit qu'il a besoin d'efforts avant d'être promu dans un module de haut niveau.