Share via


使用排列特徵重要度解譯模型預測

使用排列特徵重要度 (PFI),了解如何解譯 ML.NET 機器學習模型預測。 PFI 可以給出每個特徵對預測結果的相對貢獻。

機器學習模型常被視為會接受輸入並產生輸出的黑箱。 很少有人了解影響輸出之功能間的中繼步驟或互動。 隨著更多日常生活層面引入機器學習 (例如醫療保健),了解機器學習模型所做決策的原因至關重要。 例如,如果診斷經由機器學習模型確立,醫護專業人員需要能夠查看確立該診斷的因素。 提供正確的診斷可能會對病患能否快速復原造成極大差異。 因此,模型的可解釋性層級愈高,醫護專業人員接受或拒絕模型決策的信賴度就愈高。

解釋模型的技巧各種各樣,PFI 是其中之一。 PFI 是用來解釋分類和迴歸模型的技巧,其靈感來自於 Breiman 的隨機樹系論文 (請參閱第 10 節)。 概括而言,它的運作方式是針對整個資料集一次一種特性地隨機打亂資料,計算感興趣的效能計量會降低多少。 變更愈大,該特性愈重要。

此外,透過醒目提示最重要的特性,模型產生器可以專注於使用可降低雜訊及定型時間之更有意義的部分特性。

載入資料

資料集用於此範例的特性位在 1-12 行。 目標是預測 Price

資料行 功能 描述
1 CrimeRate 人均犯罪率
2 ResidentialZones 城市住宅區
3 CommercialZones 城市非住宅區
4 NearWater 鄰水區
5 ToxicWasteLevels 毒性層級 (PPM)
6 AverageRoomNumber 家屋平均房間數
7 HomeAge 家屋年限
8 BusinessCenterDistance 最近商業區的距離
9 HighwayAccess 鄰近高速公路
10 TaxRate 房地產稅率
11 StudentTeacherRatio 學生與老師的比率
12 PercentPopulationBelowPoverty 生活在貧窮線以下的人口百分比
13 價格 住屋的價格

資料集範例如下所示:

1,24,13,1,0.59,3,96,11,23,608,14,13,32
4,80,18,1,0.37,5,14,7,4,346,19,13,41
2,98,16,1,0.25,10,5,1,8,689,13,36,12

此範例中的資料可由 HousingPriceData 等類別建立模型,並載入至 IDataView

class HousingPriceData
{
    [LoadColumn(0)]
    public float CrimeRate { get; set; }

    [LoadColumn(1)]
    public float ResidentialZones { get; set; }

    [LoadColumn(2)]
    public float CommercialZones { get; set; }

    [LoadColumn(3)]
    public float NearWater { get; set; }

    [LoadColumn(4)]
    public float ToxicWasteLevels { get; set; }

    [LoadColumn(5)]
    public float AverageRoomNumber { get; set; }

    [LoadColumn(6)]
    public float HomeAge { get; set; }

    [LoadColumn(7)]
    public float BusinessCenterDistance { get; set; }

    [LoadColumn(8)]
    public float HighwayAccess { get; set; }

    [LoadColumn(9)]
    public float TaxRate { get; set; }

    [LoadColumn(10)]
    public float StudentTeacherRatio { get; set; }

    [LoadColumn(11)]
    public float PercentPopulationBelowPoverty { get; set; }

    [LoadColumn(12)]
    [ColumnName("Label")]
    public float Price { get; set; }
}

定型模型

下列程式碼範例會示範定型線性迴歸模型的程序,預測房屋價格。

// 1. Get the column name of input features.
string[] featureColumnNames =
    data.Schema
        .Select(column => column.Name)
        .Where(columnName => columnName != "Label").ToArray();

// 2. Define training pipeline
IEstimator<ITransformer> sdcaEstimator =
    mlContext.Transforms.Concatenate("Features", featureColumnNames)
        .Append(mlContext.Transforms.NormalizeMinMax("Features"))
        .Append(mlContext.Regression.Trainers.Sdca());

// 3. Train machine learning model
var sdcaModel = sdcaEstimator.Fit(data);

說明具有 Permutation Feature Importance (PFI) 的模型

在 ML.NET 中,使用 PermutationFeatureImportance 方法處理您的個別工作。

// Use the model to make predictions
var transformedData = sdcaModel.Transform(data);

// Calculate feature importance
ImmutableArray<RegressionMetricsStatistics> permutationFeatureImportance =
    mlContext
        .Regression
        .PermutationFeatureImportance(sdcaModel, transformedData, permutationCount:3);

對定型資料集使用 PermutationFeatureImportance 的結果是 RegressionMetricsStatistics 物件的 ImmutableArrayRegressionMetricsStatistics 提供的摘要統計資料,例如 RegressionMetrics 多個觀察值的平均值和標準差,等於 permutationCount 參數指定的排列數目。

用來測量特徵重要度的計量取決於用來解決問題的機器學習工作。 例如,迴歸工作可能會使用常見的評估計量,例如 R 平方來測量重要度。 如需模型評估計量的詳細資訊,請參閱使用計量評估 ML.NET 模型

重要性,或在本例中為 PermutationFeatureImportance 所計算 R 平方計量的絕對平均下降,可以從最重要排至最不重要。

// Order features by importance
var featureImportanceMetrics =
    permutationFeatureImportance
        .Select((metric, index) => new { index, metric.RSquared })
        .OrderByDescending(myFeatures => Math.Abs(myFeatures.RSquared.Mean));

Console.WriteLine("Feature\tPFI");

foreach (var feature in featureImportanceMetrics)
{
    Console.WriteLine($"{featureColumnNames[feature.index],-20}|\t{feature.RSquared.Mean:F6}");
}

列印 featureImportanceMetrics 中每個特性的值會產生類似以下輸出。 請記住,您應該預期會看到不同的結果,因為這些值會隨著指定的資料而變化。

功能 變更為 R 平方
HighwayAccess -0.042731
StudentTeacherRatio -0.012730
BusinessCenterDistance -0.010491
TaxRate -0.008545
AverageRoomNumber -0.003949
CrimeRate -0.003665
CommercialZones 0.002749
HomeAge -0.002426
ResidentialZones -0.002319
NearWater 0.000203
PercentPopulationLivingBelowPoverty 0.000031
ToxicWasteLevels -0.000019

看一下此資料集中五個最重要的特性,此模型預測的房屋價格受到它們的影響:鄰近高速公路、地區學校的師生比、鄰近主要人才市場、房地產稅率和家屋平均房間數。

下一步