// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_PRELOADING_PRELOADING_PREDICTION_H_ #define CONTENT_BROWSER_PRELOADING_PRELOADING_PREDICTION_H_ #include <optional> #include <string_view> #include "base/timer/elapsed_timer.h" #include "content/browser/preloading/preloading_confidence.h" #include "content/public/browser/preloading_data.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "url/gurl.h" namespace content { // PreloadingPrediction keeps track of every preloading prediction associated // with various predictors as defined in content/public/preloading.h // (please see for more details); whether the prediction is accurate or not; // whether the prediction is confident enough or not. class PreloadingPrediction { … }; // The output of many predictors is a logit/probability score. To use this score // for binary classification, we compare it to a threshold. If the score is // above the threshold, we classify the instance as positive; otherwise, we // classify it as negative. Threshold choice affects classifier precision and // recall. There is a trade-off between precision and recall. If we set the // threshold too low, we will have high precision but low recall. If we set the // threshold too high, we will have high recall but low precision. To choose the // best threshold, we can use ROC curves, precision-recall curves, or // logit-precision and logit-recall curves. `ExperimentalPreloadingPrediction` // helps us collect the UMA data required to achieve this. class ExperimentalPreloadingPrediction { … }; // Stores data relating to a prediction made by the preloading ML model. Once // the outcome of whether the prediction is accurate is known, the provided // callback is invoked. class ModelPredictionTrainingData { … }; } // namespace content #endif // CONTENT_BROWSER_PRELOADING_PRELOADING_PREDICTION_H_