File: Prediction\ICalculateFeatureContribution.cs
Web Access
Project: src\src\Microsoft.ML.Data\Microsoft.ML.Data.csproj (Microsoft.ML.Data)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Microsoft.ML.Data;
 
namespace Microsoft.ML.Trainers
{
    /// <summary>
    /// Interface for mapping input values to corresponding feature contributions.
    /// This interface is commonly implemented by predictors.
    /// </summary>
    [BestFriend]
    internal interface IFeatureContributionMapper : IPredictor
    {
        /// <summary>
        /// Get a delegate for mapping Contributions to Features.
        /// Result will contain vector with topN positive contributions(if available) and
        /// bottomN negative contributions (if available).
        /// For example linear predictor will have both negative and positive contributions.
        /// For trees we will not have negative contributions, so bottom param will be ignored.
        /// If normalization is requested that resulting values will be normalized to [-1, 1].
        /// </summary>
        ValueMapper<TSrc, VBuffer<float>> GetFeatureContributionMapper<TSrc, TDst>(int top, int bottom, bool normalize);
    }
 
    /// <summary>
    /// Allows support for feature contribution calculation by model parameters.
    /// </summary>
    public interface ICalculateFeatureContribution
    {
        FeatureContributionCalculator FeatureContributionCalculator { get; }
    }
 
    /// <summary>
    /// Support for feature contribution calculation.
    /// </summary>
    public sealed class FeatureContributionCalculator
    {
        internal IFeatureContributionMapper ContributionMapper { get; }
        internal FeatureContributionCalculator(IFeatureContributionMapper contributionMapper) => ContributionMapper = contributionMapper;
    }
}