ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.3 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://app.studyraid.com/en/read/14925/514380/evaluating-recommendation-quality |
| Last Crawled | 2026-04-08 04:18:15 (8 days ago) |
| First Indexed | 2025-03-13 11:52:12 (1 year ago) |
| HTTP Status Code | 200 |
| Meta Title | Understand evaluating recommendation quality |
| Meta Description | Key Metrics for Recommendation Evaluation Precision measures the proportion of relevant items in recommended lists. For top-K recommendations: $$ \text{Pre... |
| Meta Canonical | null |
| Boilerpipe Text | Precision
measures the proportion of
relevant
items in recommended lists. For top-K recommendations:
\text{Precision@K} = \frac{\text{Correct recommendations in top K}}{\text{Total recommendations in top K}}
Recall
quantifies how many relevant items were identified from all possible relevant items:
\text{Recall@K} = \frac{\text{Correct recommendations in top K}}{\text{Total relevant items}}
Normalized Discounted Cumulative Gain (NDCG) evaluates
ranking
quality by weighting item positions:
\text{NDCG@K} = \frac{\sum_{i=1}^K \frac{\text{Relevance}_i}{\log_2(i+1)}}{\text{Ideal DCG@K}}
Hit Rate
assesses whether at least one relevant item appears in recommendations:
\text{Hit Rate@K} = \frac{\text{Users with ≥1 relevant recommendation}}{\text{Total users}}
This code calculates Precision@K using
predictions
and
ground truth
. It compares top-K item IDs from predictions with actual user
interactions
:
python
def
precision_at_k
(
y_true
,
y_pred
,
k
=
10
)
:
top_k_preds
=
y_pred
.
groupby
(
'
user_id
'
)
[
'
item_id
'
]
.
apply
(
lambda
x
:
x
.
head
(
k
)
)
hits
=
top_k_preds
.
reset_index
(
)
.
merge
(
y_true
,
on
=
[
'
user_id
'
,
'
item_id
'
]
)
return
hits
.
shape
[
0
]
/
(
len
(
y_true
[
'
user_id
'
]
.
unique
(
)
)
*
k
)
This function computes NDCG@K by comparing predicted rankings with ideal rankings. It uses
relevance
scores (e.g., purchase counts) to calculate
discounted gains
:
python
import
numpy
as
np
def
ndcg_at_k
(
y_true_scores
,
y_pred_rank
,
k
=
10
)
:
dcg
=
sum
(
(
2
*
*
true_score
-
1
)
/
np
.
log2
(
pos
+
2
)
for
pos
,
true_score
in
enumerate
(
y_pred_rank
[
:
k
]
)
)
ideal_rank
=
sorted
(
y_true_scores
,
reverse
=
True
)
[
:
k
]
idcg
=
sum
(
(
2
*
*
score
-
1
)
/
np
.
log2
(
i
+
2
)
for
i
,
score
in
enumerate
(
ideal_rank
)
)
return
dcg
/
idcg
if
idcg
>
0
else
0
This Hit Rate implementation checks for overlap between recommendations and actual interactions. It returns 1 if any recommended item matches user history:
python
def
hit_rate
(
y_true
,
y_pred
,
k
=
10
)
:
user_hits
=
y_pred
.
groupby
(
'
user_id
'
)
[
'
item_id
'
]
.
apply
(
lambda
preds
:
len
(
set
(
preds
[
:
k
]
)
.
intersection
(
y_true
[
y_true
.
user_id
==
preds
.
name
]
)
)
return
(
user_hits
>
0
)
.
mean
(
)
Use CatBoost's
eval_metric
parameter
with custom metrics during model
validation
. Convert ranking
outputs
to item lists before applying evaluation functions. |
| Markdown | - [Create a course with AI](https://app.studyraid.com/en/generate)
- [Ask Question](https://app.studyraid.com/en/ask)
- [Create Your First CourseGet Started✨](https://app.studyraid.com/en/login)
[CatBoost Machine Learning: Python Implementation Guide](https://app.studyraid.com/en/courses/14925/catboost-machine-learning-python-implementation-guide)
19 sections • 76 chapters
***
0/4
#### Installing CatBoost for Python Projects
***
[1 Setting up your Python environment](https://app.studyraid.com/en/read/14925/514305/setting-up-your-python-environment)
[2 Installing CatBoost via pip](https://app.studyraid.com/en/read/14925/514306/installing-catboost-via-pip)
[3 Installing CatBoost from source](https://app.studyraid.com/en/read/14925/514307/installing-catboost-from-source)
[4 Verifying your CatBoost installation](https://app.studyraid.com/en/read/14925/514308/verifying-your-catboost-installation)
0/4
#### Understanding CatBoost's Key Features
***
[1 Gradient boosting fundamentals](https://app.studyraid.com/en/read/14925/514309/gradient-boosting-fundamentals)
[2 CatBoost vs other boosting algorithms](https://app.studyraid.com/en/read/14925/514310/catboost-vs-other-boosting-algorithms)
[3 Handling categorical features automatically](https://app.studyraid.com/en/read/14925/514311/handling-categorical-features-automatically)
[4 Advantages of ordered boosting](https://app.studyraid.com/en/read/14925/514312/advantages-of-ordered-boosting)
0/4
#### Loading and Formatting Data for CatBoost
***
[1 Converting data to CatBoost-compatible format](https://app.studyraid.com/en/read/14925/514313/converting-data-to-catboost-compatible-format)
[2 Creating Pool objects from DataFrames](https://app.studyraid.com/en/read/14925/514314/creating-pool-objects-from-dataframes)
[3 Specifying categorical features](https://app.studyraid.com/en/read/14925/514315/specifying-categorical-features)
[4 Handling missing values in your dataset](https://app.studyraid.com/en/read/14925/514316/handling-missing-values-in-your-dataset)
0/4
#### Data Preprocessing Techniques for CatBoost
***
[1 Feature scaling considerations](https://app.studyraid.com/en/read/14925/514317/feature-scaling-considerations)
[2 Encoding categorical features manually](https://app.studyraid.com/en/read/14925/514318/encoding-categorical-features-manually)
[3 Text feature preprocessing approaches](https://app.studyraid.com/en/read/14925/514319/text-feature-preprocessing-approaches)
[4 Creating feature groups for efficient training](https://app.studyraid.com/en/read/14925/514320/creating-feature-groups-for-efficient-training)
0/4
#### Training Classification Models with CatBoost
***
[1 Binary classification implementation](https://app.studyraid.com/en/read/14925/514321/binary-classification-implementation)
[2 Multi-class classification implementation](https://app.studyraid.com/en/read/14925/514322/multi-class-classification-implementation)
[3 Setting appropriate loss functions](https://app.studyraid.com/en/read/14925/514323/setting-appropriate-loss-functions)
[4 Monitoring training progress with metrics](https://app.studyraid.com/en/read/14925/514324/monitoring-training-progress-with-metrics)
0/4
#### Creating Regression Models with CatBoost
***
[1 Setting up regression tasks](https://app.studyraid.com/en/read/14925/514325/setting-up-regression-tasks)
[2 Choosing regression-specific parameters](https://app.studyraid.com/en/read/14925/514326/choosing-regression-specific-parameters)
[3 Implementing custom regression loss functions](https://app.studyraid.com/en/read/14925/514327/implementing-custom-regression-loss-functions)
[4 Evaluating regression model performance](https://app.studyraid.com/en/read/14925/514328/evaluating-regression-model-performance)
0/4
#### Configuring Key CatBoost Parameters
***
[1 Learning rate and iterations optimization](https://app.studyraid.com/en/read/14925/514329/learning-rate-and-iterations-optimization)
[2 Tree depth and leaf count settings](https://app.studyraid.com/en/read/14925/514330/tree-depth-and-leaf-count-settings)
[3 L1 and L2 regularization implementation](https://app.studyraid.com/en/read/14925/514331/l1-and-l2-regularization-implementation)
[4 Random seed and bootstrap type configuration](https://app.studyraid.com/en/read/14925/514332/random-seed-and-bootstrap-type-configuration)
0/4
#### Cross-Validation Strategies for CatBoost
***
[1 Implementing k-fold cross-validation](https://app.studyraid.com/en/read/14925/514333/implementing-k-fold-cross-validation)
[2 Using time-series cross-validation](https://app.studyraid.com/en/read/14925/514334/using-time-series-cross-validation)
[3 Custom cross-validation approaches](https://app.studyraid.com/en/read/14925/514335/custom-cross-validation-approaches)
[4 Analyzing cross-validation results](https://app.studyraid.com/en/read/14925/514336/analyzing-cross-validation-results)
0/4
#### Hyperparameter Optimization for CatBoost
***
[1 Grid search implementation](https://app.studyraid.com/en/read/14925/514337/grid-search-implementation)
[2 Random search techniques](https://app.studyraid.com/en/read/14925/514338/random-search-techniques)
[3 Bayesian optimization with CatBoost](https://app.studyraid.com/en/read/14925/514339/bayesian-optimization-with-catboost)
[4 Evaluating parameter importance](https://app.studyraid.com/en/read/14925/514340/evaluating-parameter-importance)
0/4
#### Measuring Model Performance Metrics
***
[1 Classification evaluation metrics](https://app.studyraid.com/en/read/14925/514341/classification-evaluation-metrics)
[2 Regression evaluation metrics](https://app.studyraid.com/en/read/14925/514342/regression-evaluation-metrics)
[3 Creating custom evaluation metrics](https://app.studyraid.com/en/read/14925/514343/creating-custom-evaluation-metrics)
[4 Visualizing performance with CatBoost](https://app.studyraid.com/en/read/14925/514344/visualizing-performance-with-catboost)
0/4
#### Feature Importance Analysis with CatBoost
***
[1 Calculating feature importances](https://app.studyraid.com/en/read/14925/514345/calculating-feature-importances)
[2 Visualizing feature contributions](https://app.studyraid.com/en/read/14925/514346/visualizing-feature-contributions)
[3 SHAP values implementation](https://app.studyraid.com/en/read/14925/514347/shap-values-implementation)
[4 Using feature importance for selection](https://app.studyraid.com/en/read/14925/514348/using-feature-importance-for-selection)
0/4
#### Handling Imbalanced Data in CatBoost
***
[1 Class weight adjustment strategies](https://app.studyraid.com/en/read/14925/514349/class-weight-adjustment-strategies)
[2 Implementing custom loss functions](https://app.studyraid.com/en/read/14925/514350/implementing-custom-loss-functions)
[3 Sampling techniques with CatBoost](https://app.studyraid.com/en/read/14925/514351/sampling-techniques-with-catboost)
[4 Evaluating models on imbalanced data](https://app.studyraid.com/en/read/14925/514352/evaluating-models-on-imbalanced-data)
0/4
#### GPU Acceleration for CatBoost Models
***
[1 Setting up GPU training environment](https://app.studyraid.com/en/read/14925/514353/setting-up-gpu-training-environment)
[2 Configuring GPU-specific parameters](https://app.studyraid.com/en/read/14925/514354/configuring-gpu-specific-parameters)
[3 Optimizing performance on GPU](https://app.studyraid.com/en/read/14925/514355/optimizing-performance-on-gpu)
[4 Comparing CPU vs GPU training speed](https://app.studyraid.com/en/read/14925/514356/comparing-cpu-vs-gpu-training-speed)
0/4
#### Saving and Loading CatBoost Models
***
[1 Serializing models to disk](https://app.studyraid.com/en/read/14925/514357/serializing-models-to-disk)
[2 Loading models for prediction](https://app.studyraid.com/en/read/14925/514358/loading-models-for-prediction)
[3 Converting models to different formats](https://app.studyraid.com/en/read/14925/514359/converting-models-to-different-formats)
[4 Version control for CatBoost models](https://app.studyraid.com/en/read/14925/514360/version-control-for-catboost-models)
0/4
#### Integrating CatBoost with Production Systems
***
[1 Creating REST APIs with CatBoost models](https://app.studyraid.com/en/read/14925/514361/creating-rest-apis-with-catboost-models)
[2 Batch prediction implementation](https://app.studyraid.com/en/read/14925/514362/batch-prediction-implementation)
[3 Optimizing inference speed](https://app.studyraid.com/en/read/14925/514363/optimizing-inference-speed)
[4 Monitoring model performance in production](https://app.studyraid.com/en/read/14925/514364/monitoring-model-performance-in-production)
0/4
#### Building CatBoost Pipelines
***
[1 Integrating with scikit-learn pipelines](https://app.studyraid.com/en/read/14925/514365/integrating-with-scikit-learn-pipelines)
[2 Creating custom pipeline components](https://app.studyraid.com/en/read/14925/514366/creating-custom-pipeline-components)
[3 Automating CatBoost workflows](https://app.studyraid.com/en/read/14925/514367/automating-catboost-workflows)
[4 Implementing A/B testing frameworks](https://app.studyraid.com/en/read/14925/514368/implementing-ab-testing-frameworks)
0/4
#### Time Series Forecasting with CatBoost
***
[1 Feature engineering for time series](https://app.studyraid.com/en/read/14925/514369/feature-engineering-for-time-series)
[2 Training models with temporal data](https://app.studyraid.com/en/read/14925/514370/training-models-with-temporal-data)
[3 Handling seasonality in CatBoost](https://app.studyraid.com/en/read/14925/514371/handling-seasonality-in-catboost)
[4 Evaluating time series prediction accuracy](https://app.studyraid.com/en/read/14925/514372/evaluating-time-series-prediction-accuracy)
0/4
#### Text Classification Using CatBoost
***
[1 Preprocessing text data for CatBoost](https://app.studyraid.com/en/read/14925/514373/preprocessing-text-data-for-catboost)
[2 Text feature extraction techniques](https://app.studyraid.com/en/read/14925/514374/text-feature-extraction-techniques)
[3 Combining NLP features with CatBoost](https://app.studyraid.com/en/read/14925/514375/combining-nlp-features-with-catboost)
[4 Optimizing text classification models](https://app.studyraid.com/en/read/14925/514376/optimizing-text-classification-models)
0/4
#### Recommendation Systems with CatBoost
***
[1 Building user-item matrices](https://app.studyraid.com/en/read/14925/514377/building-user-item-matrices)
[2 Feature engineering for recommendations](https://app.studyraid.com/en/read/14925/514378/feature-engineering-for-recommendations)
[3 Training ranking models with CatBoost](https://app.studyraid.com/en/read/14925/514379/training-ranking-models-with-catboost)
[4 Evaluating recommendation quality](https://app.studyraid.com/en/read/14925/514380/evaluating-recommendation-quality)
[Certification Get your certificate.](https://app.studyraid.com/en/certif/14925/catboost-machine-learning-python-implementation-guide)
[](https://app.studyraid.com/en/courses/14925/catboost-machine-learning-python-implementation-guide)
[CatBoost Machine Learning: Python Implementation Guide](https://app.studyraid.com/en/courses/14925/catboost-machine-learning-python-implementation-guide)
# Evaluating recommendation quality
Recommendation Systems with CatBoost
Quiz
Summary
Exam
Flashcards
Game
***
Generate with AI
Pro
Audio
Video
Illustration
## Key Metrics for Recommendation Evaluation
Precision measures the proportion of relevant items in recommended lists. For top-K recommendations:
\\text{Precision@K} = \\frac{\\text{Correct recommendations in top K}}{\\text{Total recommendations in top K}}
Recall quantifies how many relevant items were identified from all possible relevant items:
\\text{Recall@K} = \\frac{\\text{Correct recommendations in top K}}{\\text{Total relevant items}}
Normalized Discounted Cumulative Gain (NDCG) evaluates ranking quality by weighting item positions:
\\text{NDCG@K} = \\frac{\\sum\_{i=1}^K \\frac{\\text{Relevance}\_i}{\\log\_2(i+1)}}{\\text{Ideal DCG@K}}
Hit Rate assesses whether at least one relevant item appears in recommendations:
\\text{Hit Rate@K} = \\frac{\\text{Users with ≥1 relevant recommendation}}{\\text{Total users}}
## Implementing Metrics with CatBoost
This code calculates Precision@K using predictions and ground truth. It compares top-K item IDs from predictions with actual user interactions:
python
```
def precision_at_k(y_true, y_pred, k=10):
top_k_preds = y_pred.groupby('user_id')['item_id'].apply(lambda x: x.head(k))
hits = top_k_preds.reset_index().merge(y_true, on=['user_id', 'item_id'])
return hits.shape[0] / (len(y_true['user_id'].unique()) * k)
```
This function computes NDCG@K by comparing predicted rankings with ideal rankings. It uses relevance scores (e.g., purchase counts) to calculate discounted gains:
python
```
import numpy as np
def ndcg_at_k(y_true_scores, y_pred_rank, k=10):
dcg = sum((2**true_score - 1) / np.log2(pos + 2)
for pos, true_score in enumerate(y_pred_rank[:k]))
ideal_rank = sorted(y_true_scores, reverse=True)[:k]
idcg = sum((2**score - 1) / np.log2(i + 2)
for i, score in enumerate(ideal_rank))
return dcg / idcg if idcg > 0 else 0
```
This Hit Rate implementation checks for overlap between recommendations and actual interactions. It returns 1 if any recommended item matches user history:
python
```
def hit_rate(y_true, y_pred, k=10):
user_hits = y_pred.groupby('user_id')['item_id'].apply(
lambda preds: len(set(preds[:k]).intersection(y_true[y_true.user_id == preds.name]))
return (user_hits > 0).mean()
```
Use CatBoost's `eval_metric` parameter with custom metrics during model validation. Convert ranking outputs to item lists before applying evaluation functions.
On this page
- [Key Metrics for Recommendation Evaluation](https://app.studyraid.com/en/read/14925/514380/evaluating-recommendation-quality#key-metrics-for-recommendation-evaluation)
- [Implementing Metrics with CatBoost](https://app.studyraid.com/en/read/14925/514380/evaluating-recommendation-quality#implementing-metrics-with-catboost)
[✨Create your course with AIfor free on any topic](https://app.studyraid.com/en/generate)
***
Quiz
Summary
Exam
Flashcards
Game
Complete Course
CatBoost Machine Learning: Python Implementation Guide
Last Updated on 3/11/2025
Last Updated on 3/11/2025
*** |
| Readable Markdown | Precision measures the proportion of relevant items in recommended lists. For top-K recommendations:
\\text{Precision@K} = \\frac{\\text{Correct recommendations in top K}}{\\text{Total recommendations in top K}}
Recall quantifies how many relevant items were identified from all possible relevant items:
\\text{Recall@K} = \\frac{\\text{Correct recommendations in top K}}{\\text{Total relevant items}}
Normalized Discounted Cumulative Gain (NDCG) evaluates ranking quality by weighting item positions:
\\text{NDCG@K} = \\frac{\\sum\_{i=1}^K \\frac{\\text{Relevance}\_i}{\\log\_2(i+1)}}{\\text{Ideal DCG@K}}
Hit Rate assesses whether at least one relevant item appears in recommendations:
\\text{Hit Rate@K} = \\frac{\\text{Users with ≥1 relevant recommendation}}{\\text{Total users}}
This code calculates Precision@K using predictions and ground truth. It compares top-K item IDs from predictions with actual user interactions:
python
```
def precision_at_k(y_true, y_pred, k=10):
top_k_preds = y_pred.groupby('user_id')['item_id'].apply(lambda x: x.head(k))
hits = top_k_preds.reset_index().merge(y_true, on=['user_id', 'item_id'])
return hits.shape[0] / (len(y_true['user_id'].unique()) * k)
```
This function computes NDCG@K by comparing predicted rankings with ideal rankings. It uses relevance scores (e.g., purchase counts) to calculate discounted gains:
python
```
import numpy as np
def ndcg_at_k(y_true_scores, y_pred_rank, k=10):
dcg = sum((2**true_score - 1) / np.log2(pos + 2)
for pos, true_score in enumerate(y_pred_rank[:k]))
ideal_rank = sorted(y_true_scores, reverse=True)[:k]
idcg = sum((2**score - 1) / np.log2(i + 2)
for i, score in enumerate(ideal_rank))
return dcg / idcg if idcg > 0 else 0
```
This Hit Rate implementation checks for overlap between recommendations and actual interactions. It returns 1 if any recommended item matches user history:
python
```
def hit_rate(y_true, y_pred, k=10):
user_hits = y_pred.groupby('user_id')['item_id'].apply(
lambda preds: len(set(preds[:k]).intersection(y_true[y_true.user_id == preds.name]))
return (user_hits > 0).mean()
```
Use CatBoost's `eval_metric` parameter with custom metrics during model validation. Convert ranking outputs to item lists before applying evaluation functions. |
| Shard | 89 (laksa) |
| Root Hash | 11172267346150076889 |
| Unparsed URL | com,studyraid!app,/en/read/14925/514380/evaluating-recommendation-quality s443 |