Permütasyon Özelliği Önemini Kullanarak Model Tahminlerini Yorumlama
Permütasyon Özelliği Önem Derecesi(PFI) kullanarak makine öğrenmesi modeli tahminlerini ML.NET yorumlamayı öğrenin. PFI, her özelliğin tahmine yaptığı göreli katkıyı verir.
Makine öğrenmesi modelleri genellikle giriş alan ve çıkış oluşturan opak kutular olarak düşünülmektedir. Çıkışı etkileyen özellikler arasındaki ara adımlar veya etkileşimler nadiren anlaşılır. Makine öğrenmesi, sağlık gibi günlük yaşamın daha önemli yönlerine sunulduğundan, makine öğrenmesi modelinin aldığı kararları neden yaptığını anlamak son derece önemlidir. Örneğin, tanılamalar bir makine öğrenmesi modeli tarafından yapılıyorsa, sağlık uzmanlarının bu tanılamayı yapmak için kullanılabilecek faktörleri araştırmak için bir yönteme ihtiyacı vardır. Doğru tanının sağlanması, hastanın hızlı bir iyileşmesi olup olmadığı konusunda büyük bir fark yaratabilir. Bu nedenle bir modeldeki açıklanabilirlik düzeyi ne kadar yüksek olursa, sağlık uzmanlarının model tarafından alınan kararları kabul etme veya reddetme konusunda o kadar fazla güveni vardır.
Modelleri açıklamak için çeşitli teknikler kullanılır ve bunlardan biri PFI'dır. PFI, Breiman'ın Rastgele Ormanlar makalesinde yer alan sınıflandırma ve regresyon modellerini açıklamak için kullanılan bir tekniktir (bkz. bölüm 10). Yüksek düzeyde, veri kümesinin tamamı için verileri bir kerede bir özelliği rastgele karıştırmak ve ilgi çekici performans ölçümünün ne kadar azaldığını hesaplamaktır. Değişiklik ne kadar büyük olursa bu özellik o kadar önemlidir.
Buna ek olarak, model oluşturucuları en önemli özellikleri vurgulayarak gürültü ve eğitim süresini azaltabilecek daha anlamlı özelliklerin bir alt kümesini kullanmaya odaklanabilir.
Verileri yükleme
Bu örnek için kullanılan veri kümesindeki özellikler 1-12 sütunlarında yer alır. Amaç tahmin Price
etmektir.
Sütun | Özellik | Açıklama |
---|---|---|
1 | Suç Oranı | Kişi başına suç oranı |
2 | Konut Alanları | Şehirdeki yerleşim bölgeleri |
3 | CommercialZones | Şehirde yerleşim dışı bölgeler |
4 | NearWater | Su gövdesine yakınlık |
5 | ToxicWasteLevels | Toksisite düzeyleri (PPM) |
6 | AverageRoomNumber | Evde ortalama oda sayısı |
7 | HomeAge | Ev yaşı |
8 | BusinessCenterDistance | En yakın iş bölgesine uzaklık |
9 | HighwayAccess | Otoyollara yakınlık |
10 | Vergi Oranı | Emlak vergisi oranı |
11 | StudentTeacherRatio | Öğrencilerin öğretmenlere oranı |
12 | PercentPopulationBelowPoverty | Yoksulluğun altında yaşayan nüfusun yüzdesi |
13 | Fiyat | Evin fiyatı |
Veri kümesinin bir örneği aşağıda gösterilmiştir:
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
Bu örnekteki veriler gibi HousingPriceData
bir sınıf tarafından modellenebilir ve içine IDataView
yüklenebilir.
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; }
}
Modeli eğitme
Aşağıdaki kod örneği, ev fiyatlarını tahmin etmek için doğrusal regresyon modelini eğitme sürecini göstermektedir.
// 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);
Permütasyon Özelliği Önem Derecesi (PFI) ile modeli açıklama
ML.NET içinde ilgili göreviniz için yöntemini kullanın 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);
Eğitim veri kümesinde kullanmanın PermutationFeatureImportance
sonucu nesnelerin bir ImmutableArray
sonucudur RegressionMetricsStatistics
. RegressionMetricsStatistics
parametresi tarafından permutationCount
belirtilen permütasyon sayısına eşit birden çok gözlem RegressionMetrics
için ortalama ve standart sapma gibi özet istatistikler sağlar.
Özellik önemini ölçmek için kullanılan ölçüm, sorununuzu çözmek için kullanılan makine öğrenmesi görevine bağlıdır. Örneğin, regresyon görevleri önem derecesini ölçmek için R karesi gibi yaygın bir değerlendirme ölçümü kullanabilir. Model değerlendirme ölçümleri hakkında daha fazla bilgi için bkz . ölçümlerle ML.NET modelinizi değerlendirme.
Önem derecesi veya bu durumda, tarafından hesaplanan PermutationFeatureImportance
R karesi ölçümündeki mutlak ortalama düşüş en önemliden en az önemliye doğru sıralanabilir.
// 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}");
}
içindeki featureImportanceMetrics
özelliklerin her biri için değerlerin yazdırılıyor olması, aşağıdakine benzer bir çıkış oluşturur. Bu değerler kendilerine verilen verilere göre farklılık gösterdiğinden farklı sonuçlar görmeyi beklemeniz gerektiğini unutmayın.
Özellik | R-Squared olarak değiştir |
---|---|
HighwayAccess | -0.042731 |
StudentTeacherRatio | -0.012730 |
BusinessCenterDistance | -0.010491 |
Vergi Oranı | -0.008545 |
AverageRoomNumber | -0.003949 |
Suç Oranı | -0.003665 |
CommercialZones | 0.002749 |
HomeAge | -0.002426 |
Konut Alanları | -0.002319 |
NearWater | 0.000203 |
PercentPopulationLivingBelowPoverty | 0.000031 |
ToxicWasteLevels | -0.000019 |
Bu veri kümesinin en önemli beş özelliğine göz atarak, bu model tarafından tahmin edilen bir evin fiyatı, otoyollara yakınlığı, bölgedeki okulların öğrenci öğretmen oranı, büyük istihdam merkezlerine yakınlığı, emlak vergisi oranı ve evdeki ortalama oda sayısından etkilenir.