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 Priceetmektir.

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 IDataViewyü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 . RegressionMetricsStatisticsparametresi 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.

Sonraki adımlar