@@ -961,13 +961,15 @@ std::size_t CBoostedTreeImpl::maximumTreeSize(std::size_t numberRows) const {
961
961
const std::size_t CBoostedTreeImpl::PACKED_BIT_VECTOR_MAXIMUM_ROWS_PER_BYTE{256 };
962
962
963
963
namespace {
964
+ const std::string VERSION_7_5_TAG{" 7.5" };
965
+
964
966
const std::string BAYESIAN_OPTIMIZATION_TAG{" bayesian_optimization" };
965
967
const std::string BEST_FOREST_TAG{" best_forest" };
966
968
const std::string BEST_FOREST_TEST_LOSS_TAG{" best_forest_test_loss" };
967
969
const std::string BEST_HYPERPARAMETERS_TAG{" best_hyperparameters" };
968
970
const std::string CURRENT_ROUND_TAG{" current_round" };
969
971
const std::string DEPENDENT_VARIABLE_TAG{" dependent_variable" };
970
- const std::string ENCODER_TAG{" encoder_tag " };
972
+ const std::string ENCODER_TAG{" encoder " };
971
973
const std::string ETA_GROWTH_RATE_PER_TREE_TAG{" eta_growth_rate_per_tree" };
972
974
const std::string ETA_OVERRIDE_TAG{" eta_override" };
973
975
const std::string ETA_TAG{" eta" };
@@ -1034,6 +1036,7 @@ void CBoostedTreeImpl::SHyperparameters::acceptPersistInserter(core::CStatePersi
1034
1036
}
1035
1037
1036
1038
void CBoostedTreeImpl::acceptPersistInserter (core::CStatePersistInserter& inserter) const {
1039
+ core::CPersistUtils::persist (VERSION_7_5_TAG, " " , inserter);
1037
1040
core::CPersistUtils::persist (BAYESIAN_OPTIMIZATION_TAG, *m_BayesianOptimization, inserter);
1038
1041
core::CPersistUtils::persist (BEST_FOREST_TEST_LOSS_TAG, m_BestForestTestLoss, inserter);
1039
1042
core::CPersistUtils::persist (CURRENT_ROUND_TAG, m_CurrentRound, inserter);
@@ -1120,89 +1123,97 @@ bool CBoostedTreeImpl::SHyperparameters::acceptRestoreTraverser(core::CStateRest
1120
1123
}
1121
1124
1122
1125
bool CBoostedTreeImpl::acceptRestoreTraverser (core::CStateRestoreTraverser& traverser) {
1123
- do {
1124
- const std::string& name = traverser.name ();
1125
- RESTORE_NO_ERROR (BAYESIAN_OPTIMIZATION_TAG,
1126
- m_BayesianOptimization =
1127
- std::make_unique<CBayesianOptimisation>(traverser))
1128
- RESTORE (BEST_FOREST_TEST_LOSS_TAG,
1129
- core::CPersistUtils::restore (BEST_FOREST_TEST_LOSS_TAG,
1130
- m_BestForestTestLoss, traverser))
1131
- RESTORE (CURRENT_ROUND_TAG,
1132
- core::CPersistUtils::restore (CURRENT_ROUND_TAG, m_CurrentRound, traverser))
1133
- RESTORE (DEPENDENT_VARIABLE_TAG,
1134
- core::CPersistUtils::restore (DEPENDENT_VARIABLE_TAG,
1135
- m_DependentVariable, traverser))
1136
- RESTORE_NO_ERROR (ENCODER_TAG,
1137
- m_Encoder = std::make_unique<CDataFrameCategoryEncoder>(traverser))
1138
- RESTORE (ETA_GROWTH_RATE_PER_TREE_TAG,
1139
- core::CPersistUtils::restore (ETA_GROWTH_RATE_PER_TREE_TAG,
1140
- m_EtaGrowthRatePerTree, traverser))
1141
- RESTORE (ETA_TAG, core::CPersistUtils::restore (ETA_TAG, m_Eta, traverser))
1142
- RESTORE (FEATURE_BAG_FRACTION_TAG,
1143
- core::CPersistUtils::restore (FEATURE_BAG_FRACTION_TAG,
1144
- m_FeatureBagFraction, traverser))
1145
- RESTORE (FEATURE_DATA_TYPES_TAG,
1146
- core::CPersistUtils::restore (FEATURE_DATA_TYPES_TAG,
1147
- m_FeatureDataTypes, traverser));
1148
- RESTORE (FEATURE_SAMPLE_PROBABILITIES_TAG,
1149
- core::CPersistUtils::restore (FEATURE_SAMPLE_PROBABILITIES_TAG,
1150
- m_FeatureSampleProbabilities, traverser))
1151
- RESTORE (MAXIMUM_ATTEMPTS_TO_ADD_TREE_TAG,
1152
- core::CPersistUtils::restore (MAXIMUM_ATTEMPTS_TO_ADD_TREE_TAG,
1153
- m_MaximumAttemptsToAddTree, traverser))
1154
- RESTORE (MAXIMUM_OPTIMISATION_ROUNDS_PER_HYPERPARAMETER_TAG,
1155
- core::CPersistUtils::restore (
1156
- MAXIMUM_OPTIMISATION_ROUNDS_PER_HYPERPARAMETER_TAG,
1157
- m_MaximumOptimisationRoundsPerHyperparameter, traverser))
1158
- RESTORE (MAXIMUM_TREE_SIZE_MULTIPLIER_TAG,
1159
- core::CPersistUtils::restore (MAXIMUM_TREE_SIZE_MULTIPLIER_TAG,
1160
- m_MaximumTreeSizeMultiplier, traverser))
1161
- RESTORE (MISSING_FEATURE_ROW_MASKS_TAG,
1162
- core::CPersistUtils::restore (MISSING_FEATURE_ROW_MASKS_TAG,
1163
- m_MissingFeatureRowMasks, traverser))
1164
- RESTORE (NUMBER_FOLDS_TAG,
1165
- core::CPersistUtils::restore (NUMBER_FOLDS_TAG, m_NumberFolds, traverser))
1166
- RESTORE (NUMBER_ROUNDS_TAG,
1167
- core::CPersistUtils::restore (NUMBER_ROUNDS_TAG, m_NumberRounds, traverser))
1168
- RESTORE (NUMBER_SPLITS_PER_FEATURE_TAG,
1169
- core::CPersistUtils::restore (NUMBER_SPLITS_PER_FEATURE_TAG,
1170
- m_NumberSplitsPerFeature, traverser))
1171
- RESTORE (NUMBER_THREADS_TAG,
1172
- core::CPersistUtils::restore (NUMBER_THREADS_TAG, m_NumberThreads, traverser))
1173
- RESTORE (RANDOM_NUMBER_GENERATOR_TAG, m_Rng.fromString (traverser.value ()))
1174
- RESTORE (REGULARIZATION_TAG,
1175
- core::CPersistUtils::restore (REGULARIZATION_TAG, m_Regularization, traverser))
1176
- RESTORE (REGULARIZATION_OVERRIDE_TAG,
1177
- core::CPersistUtils::restore (REGULARIZATION_OVERRIDE_TAG,
1178
- m_RegularizationOverride, traverser))
1179
- RESTORE (ROWS_PER_FEATURE_TAG,
1180
- core::CPersistUtils::restore (ROWS_PER_FEATURE_TAG, m_RowsPerFeature, traverser))
1181
- RESTORE (TESTING_ROW_MASKS_TAG,
1182
- core::CPersistUtils::restore (TESTING_ROW_MASKS_TAG, m_TestingRowMasks, traverser))
1183
- RESTORE (MAXIMUM_NUMBER_TREES_TAG,
1184
- core::CPersistUtils::restore (MAXIMUM_NUMBER_TREES_TAG,
1185
- m_MaximumNumberTrees, traverser))
1186
- RESTORE (TRAINING_ROW_MASKS_TAG,
1187
- core::CPersistUtils::restore (TRAINING_ROW_MASKS_TAG, m_TrainingRowMasks, traverser))
1188
- RESTORE (TRAINING_PROGRESS_TAG,
1189
- core::CPersistUtils::restore (TRAINING_PROGRESS_TAG, m_TrainingProgress, traverser))
1190
- RESTORE (BEST_FOREST_TAG,
1191
- core::CPersistUtils::restore (BEST_FOREST_TAG, m_BestForest, traverser))
1192
- RESTORE (BEST_HYPERPARAMETERS_TAG,
1193
- core::CPersistUtils::restore (BEST_HYPERPARAMETERS_TAG,
1194
- m_BestHyperparameters, traverser))
1195
- RESTORE (ETA_OVERRIDE_TAG,
1196
- core::CPersistUtils::restore (ETA_OVERRIDE_TAG, m_EtaOverride, traverser))
1197
- RESTORE (FEATURE_BAG_FRACTION_OVERRIDE_TAG,
1198
- core::CPersistUtils::restore (FEATURE_BAG_FRACTION_OVERRIDE_TAG,
1199
- m_FeatureBagFractionOverride, traverser))
1200
- RESTORE (MAXIMUM_NUMBER_TREES_OVERRIDE_TAG,
1201
- core::CPersistUtils::restore (MAXIMUM_NUMBER_TREES_OVERRIDE_TAG,
1202
- m_MaximumNumberTreesOverride, traverser))
1203
- RESTORE (LOSS_TAG, restoreLoss (m_Loss, traverser))
1204
- } while (traverser.next ());
1205
- return true ;
1126
+ if (traverser.name () == VERSION_7_5_TAG) {
1127
+ do {
1128
+ const std::string& name = traverser.name ();
1129
+ RESTORE_NO_ERROR (BAYESIAN_OPTIMIZATION_TAG,
1130
+ m_BayesianOptimization =
1131
+ std::make_unique<CBayesianOptimisation>(traverser))
1132
+ RESTORE (BEST_FOREST_TEST_LOSS_TAG,
1133
+ core::CPersistUtils::restore (BEST_FOREST_TEST_LOSS_TAG,
1134
+ m_BestForestTestLoss, traverser))
1135
+ RESTORE (CURRENT_ROUND_TAG,
1136
+ core::CPersistUtils::restore (CURRENT_ROUND_TAG, m_CurrentRound, traverser))
1137
+ RESTORE (DEPENDENT_VARIABLE_TAG,
1138
+ core::CPersistUtils::restore (DEPENDENT_VARIABLE_TAG,
1139
+ m_DependentVariable, traverser))
1140
+ RESTORE_NO_ERROR (ENCODER_TAG,
1141
+ m_Encoder = std::make_unique<CDataFrameCategoryEncoder>(traverser))
1142
+ RESTORE (ETA_GROWTH_RATE_PER_TREE_TAG,
1143
+ core::CPersistUtils::restore (ETA_GROWTH_RATE_PER_TREE_TAG,
1144
+ m_EtaGrowthRatePerTree, traverser))
1145
+ RESTORE (ETA_TAG, core::CPersistUtils::restore (ETA_TAG, m_Eta, traverser))
1146
+ RESTORE (FEATURE_BAG_FRACTION_TAG,
1147
+ core::CPersistUtils::restore (FEATURE_BAG_FRACTION_TAG,
1148
+ m_FeatureBagFraction, traverser))
1149
+ RESTORE (FEATURE_DATA_TYPES_TAG,
1150
+ core::CPersistUtils::restore (FEATURE_DATA_TYPES_TAG,
1151
+ m_FeatureDataTypes, traverser));
1152
+ RESTORE (FEATURE_SAMPLE_PROBABILITIES_TAG,
1153
+ core::CPersistUtils::restore (FEATURE_SAMPLE_PROBABILITIES_TAG,
1154
+ m_FeatureSampleProbabilities, traverser))
1155
+ RESTORE (MAXIMUM_ATTEMPTS_TO_ADD_TREE_TAG,
1156
+ core::CPersistUtils::restore (MAXIMUM_ATTEMPTS_TO_ADD_TREE_TAG,
1157
+ m_MaximumAttemptsToAddTree, traverser))
1158
+ RESTORE (MAXIMUM_OPTIMISATION_ROUNDS_PER_HYPERPARAMETER_TAG,
1159
+ core::CPersistUtils::restore (
1160
+ MAXIMUM_OPTIMISATION_ROUNDS_PER_HYPERPARAMETER_TAG,
1161
+ m_MaximumOptimisationRoundsPerHyperparameter, traverser))
1162
+ RESTORE (MAXIMUM_TREE_SIZE_MULTIPLIER_TAG,
1163
+ core::CPersistUtils::restore (MAXIMUM_TREE_SIZE_MULTIPLIER_TAG,
1164
+ m_MaximumTreeSizeMultiplier, traverser))
1165
+ RESTORE (MISSING_FEATURE_ROW_MASKS_TAG,
1166
+ core::CPersistUtils::restore (MISSING_FEATURE_ROW_MASKS_TAG,
1167
+ m_MissingFeatureRowMasks, traverser))
1168
+ RESTORE (NUMBER_FOLDS_TAG,
1169
+ core::CPersistUtils::restore (NUMBER_FOLDS_TAG, m_NumberFolds, traverser))
1170
+ RESTORE (NUMBER_ROUNDS_TAG,
1171
+ core::CPersistUtils::restore (NUMBER_ROUNDS_TAG, m_NumberRounds, traverser))
1172
+ RESTORE (NUMBER_SPLITS_PER_FEATURE_TAG,
1173
+ core::CPersistUtils::restore (NUMBER_SPLITS_PER_FEATURE_TAG,
1174
+ m_NumberSplitsPerFeature, traverser))
1175
+ RESTORE (NUMBER_THREADS_TAG,
1176
+ core::CPersistUtils::restore (NUMBER_THREADS_TAG, m_NumberThreads, traverser))
1177
+ RESTORE (RANDOM_NUMBER_GENERATOR_TAG, m_Rng.fromString (traverser.value ()))
1178
+ RESTORE (REGULARIZATION_TAG,
1179
+ core::CPersistUtils::restore (REGULARIZATION_TAG, m_Regularization, traverser))
1180
+ RESTORE (REGULARIZATION_OVERRIDE_TAG,
1181
+ core::CPersistUtils::restore (REGULARIZATION_OVERRIDE_TAG,
1182
+ m_RegularizationOverride, traverser))
1183
+ RESTORE (ROWS_PER_FEATURE_TAG,
1184
+ core::CPersistUtils::restore (ROWS_PER_FEATURE_TAG, m_RowsPerFeature, traverser))
1185
+ RESTORE (TESTING_ROW_MASKS_TAG,
1186
+ core::CPersistUtils::restore (TESTING_ROW_MASKS_TAG,
1187
+ m_TestingRowMasks, traverser))
1188
+ RESTORE (MAXIMUM_NUMBER_TREES_TAG,
1189
+ core::CPersistUtils::restore (MAXIMUM_NUMBER_TREES_TAG,
1190
+ m_MaximumNumberTrees, traverser))
1191
+ RESTORE (TRAINING_ROW_MASKS_TAG,
1192
+ core::CPersistUtils::restore (TRAINING_ROW_MASKS_TAG,
1193
+ m_TrainingRowMasks, traverser))
1194
+ RESTORE (TRAINING_PROGRESS_TAG,
1195
+ core::CPersistUtils::restore (TRAINING_PROGRESS_TAG,
1196
+ m_TrainingProgress, traverser))
1197
+ RESTORE (BEST_FOREST_TAG,
1198
+ core::CPersistUtils::restore (BEST_FOREST_TAG, m_BestForest, traverser))
1199
+ RESTORE (BEST_HYPERPARAMETERS_TAG,
1200
+ core::CPersistUtils::restore (BEST_HYPERPARAMETERS_TAG,
1201
+ m_BestHyperparameters, traverser))
1202
+ RESTORE (ETA_OVERRIDE_TAG,
1203
+ core::CPersistUtils::restore (ETA_OVERRIDE_TAG, m_EtaOverride, traverser))
1204
+ RESTORE (FEATURE_BAG_FRACTION_OVERRIDE_TAG,
1205
+ core::CPersistUtils::restore (FEATURE_BAG_FRACTION_OVERRIDE_TAG,
1206
+ m_FeatureBagFractionOverride, traverser))
1207
+ RESTORE (MAXIMUM_NUMBER_TREES_OVERRIDE_TAG,
1208
+ core::CPersistUtils::restore (MAXIMUM_NUMBER_TREES_OVERRIDE_TAG,
1209
+ m_MaximumNumberTreesOverride, traverser))
1210
+ RESTORE (LOSS_TAG, restoreLoss (m_Loss, traverser))
1211
+ } while (traverser.next ());
1212
+ return true ;
1213
+ }
1214
+ LOG_ERROR (<< " Input error: unsupported state serialization version. Currently supported version: "
1215
+ << VERSION_7_5_TAG);
1216
+ return false ;
1206
1217
}
1207
1218
1208
1219
bool CBoostedTreeImpl::restoreLoss (CBoostedTree::TLossFunctionUPtr& loss,
0 commit comments