使用排列特徵重要度解譯模型預測
使用排列特徵重要度 (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
物件的 ImmutableArray
。 RegressionMetricsStatistics
提供的摘要統計資料,例如 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 |
看一下此資料集中五個最重要的特性,此模型預測的房屋價格受到它們的影響:鄰近高速公路、地區學校的師生比、鄰近主要人才市場、房地產稅率和家屋平均房間數。