| 310 | } |
| 311 | |
| 312 | static void InitializeSamplingStructures( |
| 313 | const TTrainingDataProviders& data, |
| 314 | TLearnContext* ctx) { |
| 315 | |
| 316 | const bool isPairwiseScoring = IsPairwiseScoring(ctx->Params.LossFunctionDescription->GetLossFunction()); |
| 317 | const int defaultCalcStatsObjBlockSize = static_cast<int>(ctx->Params.ObliviousTreeOptions->DevScoreCalcObjBlockSize); |
| 318 | |
| 319 | if (ctx->UseTreeLevelCaching()) { |
| 320 | ctx->SmallestSplitSideDocs.Create( |
| 321 | ctx->LearnProgress->Folds, |
| 322 | isPairwiseScoring, |
| 323 | data.EstimatedObjectsData.GetFeatureCount() != 0, |
| 324 | defaultCalcStatsObjBlockSize |
| 325 | ); |
| 326 | ctx->PrevTreeLevelStats.Create( |
| 327 | ctx->LearnProgress->Folds, |
| 328 | CountNonCtrBuckets( |
| 329 | *data.Learn->ObjectsData->GetFeaturesLayout(), |
| 330 | *data.Learn->ObjectsData->GetQuantizedFeaturesInfo(), |
| 331 | ctx->Params.CatFeatureParams->OneHotMaxSize), |
| 332 | static_cast<int>(ctx->Params.ObliviousTreeOptions->MaxDepth) |
| 333 | ); |
| 334 | } |
| 335 | ctx->SampledDocs.Create( |
| 336 | ctx->LearnProgress->Folds, |
| 337 | isPairwiseScoring, |
| 338 | data.EstimatedObjectsData.GetFeatureCount() != 0, |
| 339 | defaultCalcStatsObjBlockSize, |
| 340 | GetBernoulliSampleRate(ctx->Params.ObliviousTreeOptions->BootstrapConfig) |
| 341 | ); // TODO(espetrov): create only if sample rate < 1 |
| 342 | } |
| 343 | |
| 344 | static void LogThatStoppingOccured(const TErrorTracker& errorTracker) { |
| 345 | CATBOOST_NOTICE_LOG << "Stopped by overfitting detector " |
no test coverage detected