src.fairreckitlib.evaluation.metrics.metric_factory

This module contains functionality to create and resolve metric factories.

Functions:

create_metric_params_k: create metric config parameters with a K param.
create_accuracy_metric_factory: create metric category factory for accuracy metrics.
create_coverage_metric_factory: create metric category factory for coverage metrics.
create_rating_metric_factory: create metric category factory for rating metrics.

This program has been developed by students from the bachelor Computer Science at Utrecht University within the Software Project course. © Copyright Utrecht University (Department of Information and Computing Sciences)

 1"""This module contains functionality to create and resolve metric factories.
 2
 3Functions:
 4
 5    create_metric_params_k: create metric config parameters with a K param.
 6    create_accuracy_metric_factory: create metric category factory for accuracy metrics.
 7    create_coverage_metric_factory: create metric category factory for coverage metrics.
 8    create_rating_metric_factory: create metric category factory for rating metrics.
 9
10This program has been developed by students from the bachelor Computer Science at
11Utrecht University within the Software Project course.
12© Copyright Utrecht University (Department of Information and Computing Sciences)
13"""
14
15from ...core.core_constants import DEFAULT_TOP_K
16from ...core.config.config_factories import Factory, create_factory_from_list
17from ...core.config.config_parameters import ConfigParameters
18from .lenskit import lenskit_accuracy_metric, lenskit_rating_metric
19from .rexmex import rexmex_coverage_metric, rexmex_rating_metric
20from .metric_constants import KEY_METRIC_PARAM_K, MetricCategory, Metric
21
22
23def create_metric_params_k() -> ConfigParameters:
24    """Create the parameters of a metric that utilizes the K param.
25
26    Returns:
27        the configuration parameters of the metric.
28    """
29    params = ConfigParameters()
30    params.add_number(KEY_METRIC_PARAM_K, int, DEFAULT_TOP_K, (1, DEFAULT_TOP_K))
31    return params
32
33
34def create_accuracy_metric_factory() -> Factory:
35    """Create the factory with Accuracy metrics.
36
37    Returns:
38        the factory with all available metrics.
39    """
40    return create_factory_from_list(MetricCategory.ACCURACY.value, [
41        (Metric.HIT_RATIO.value, lenskit_accuracy_metric.create_hit_ratio, create_metric_params_k),
42        (Metric.NDCG.value, lenskit_accuracy_metric.create_ndcg, create_metric_params_k),
43        (Metric.PRECISION.value, lenskit_accuracy_metric.create_precision, create_metric_params_k),
44        (Metric.RECALL.value, lenskit_accuracy_metric.create_recall, create_metric_params_k),
45        (Metric.MRR.value, lenskit_accuracy_metric.create_mean_recip_rank, None),
46    ])
47
48
49def create_coverage_metric_factory() -> Factory:
50    """Create the factory with Coverage metrics.
51
52    Returns:
53        the factory with all available metrics.
54    """
55    return create_factory_from_list(MetricCategory.COVERAGE.value, [
56        (Metric.ITEM_COVERAGE.value, rexmex_coverage_metric.create_item_coverage, None),
57        (Metric.USER_COVERAGE.value, rexmex_coverage_metric.create_user_coverage, None)
58    ])
59
60
61def create_rating_metric_factory() -> Factory:
62    """Create the factory with Rating metrics.
63
64    Returns:
65        the factory with all available metrics.
66    """
67    return create_factory_from_list(MetricCategory.RATING.value, [
68        (Metric.MAE.value, lenskit_rating_metric.create_mae, None),
69        (Metric.MAPE.value, rexmex_rating_metric.create_mape, None),
70        (Metric.MSE.value, rexmex_rating_metric.create_mse, None),
71        (Metric.RMSE.value, lenskit_rating_metric.create_rmse, None)
72    ])
def create_metric_params_k() -> src.fairreckitlib.core.config.config_parameters.ConfigParameters:
24def create_metric_params_k() -> ConfigParameters:
25    """Create the parameters of a metric that utilizes the K param.
26
27    Returns:
28        the configuration parameters of the metric.
29    """
30    params = ConfigParameters()
31    params.add_number(KEY_METRIC_PARAM_K, int, DEFAULT_TOP_K, (1, DEFAULT_TOP_K))
32    return params

Create the parameters of a metric that utilizes the K param.

Returns: the configuration parameters of the metric.

def create_accuracy_metric_factory() -> src.fairreckitlib.core.config.config_factories.Factory:
35def create_accuracy_metric_factory() -> Factory:
36    """Create the factory with Accuracy metrics.
37
38    Returns:
39        the factory with all available metrics.
40    """
41    return create_factory_from_list(MetricCategory.ACCURACY.value, [
42        (Metric.HIT_RATIO.value, lenskit_accuracy_metric.create_hit_ratio, create_metric_params_k),
43        (Metric.NDCG.value, lenskit_accuracy_metric.create_ndcg, create_metric_params_k),
44        (Metric.PRECISION.value, lenskit_accuracy_metric.create_precision, create_metric_params_k),
45        (Metric.RECALL.value, lenskit_accuracy_metric.create_recall, create_metric_params_k),
46        (Metric.MRR.value, lenskit_accuracy_metric.create_mean_recip_rank, None),
47    ])

Create the factory with Accuracy metrics.

Returns: the factory with all available metrics.

def create_coverage_metric_factory() -> src.fairreckitlib.core.config.config_factories.Factory:
50def create_coverage_metric_factory() -> Factory:
51    """Create the factory with Coverage metrics.
52
53    Returns:
54        the factory with all available metrics.
55    """
56    return create_factory_from_list(MetricCategory.COVERAGE.value, [
57        (Metric.ITEM_COVERAGE.value, rexmex_coverage_metric.create_item_coverage, None),
58        (Metric.USER_COVERAGE.value, rexmex_coverage_metric.create_user_coverage, None)
59    ])

Create the factory with Coverage metrics.

Returns: the factory with all available metrics.

def create_rating_metric_factory() -> src.fairreckitlib.core.config.config_factories.Factory:
62def create_rating_metric_factory() -> Factory:
63    """Create the factory with Rating metrics.
64
65    Returns:
66        the factory with all available metrics.
67    """
68    return create_factory_from_list(MetricCategory.RATING.value, [
69        (Metric.MAE.value, lenskit_rating_metric.create_mae, None),
70        (Metric.MAPE.value, rexmex_rating_metric.create_mape, None),
71        (Metric.MSE.value, rexmex_rating_metric.create_mse, None),
72        (Metric.RMSE.value, lenskit_rating_metric.create_rmse, None)
73    ])

Create the factory with Rating metrics.

Returns: the factory with all available metrics.