Yazılım

ML.NET ile AutoML ve ModelBuilder Kullanarak Taksi Ücreti Hesaplama

AutoML, yaşam döngüsünü otomatikleştirerek ve verileriniz için en uygun makine öğrenme modelini üretmeye çalışarak makine öğrenmesine yeni giriş yapan geliştiricilerin işlerini oldukça kolaylaştırır.

Özellikle AutoML otomatik olarak;

  • Eğitim verilerini bir SQL veya metin tabanlı kaynaktan yükler
  • Kategorilerin tespiti ve tahmin için kullanışlı olmayan alanların kaldırılması dahil, temel girdi verilerinin ön işlemesini gerçekleştirir.
  • Potansiyel algoritmaları ve parametreleri araştırır, modelleri tekrar tekrar eğitir ve her birinin girdi verilerinize göre etkinliğini değerlendirir
  • (CLI veya Model Builder ile kullanıldığında) Eğitimli optimal modeli oluşturmak için kod üretir ve tahmin oluşturmaya hazır hale gelir.

AutoML ( Install-Package Microsoft.ML.AutoML), bir komut satırından ( dotnet tool install -g mlnet) veya Visual Studio Uzantısı, Model Builder biçimindeki bir GUI aracıyla çağrılabilir.

Yazının bu bölümünden itibaren bir taksi ücretini tahmin edebilecek bir uygulama için ModelBuilder kullanmayı göreceğiz.

 Zaman, mesafe, yolcu sayısı ve ödeme şekli gibi girdilere dayanarak New York taksi ücretini öngören bir model oluşturacağız. Girdi olarak ML.NET örnek havuzundaki verileri kullanacağız.

Gereklilikler;

ModelBuilder eklentisi yükleyerek işlemlere başlayabiliriz.

Yükleme tamamlandıktan sonra Visual Studio açarak yeni bir .NET Core Console uygulaması başlatıyoruz.

Projemizi oluşturduktan sonra projemize Makine Öğrenmesi ekleyeceğiz bunun için proje üzerinde sağ tıklayarak Ekle ve Machine Learning tıklıyoruz. Buna tıkladıktan sonra ModelBuilder’ı çağırabiliriz.

Açılan ekranda bizden bir senaryo seçmemizi istiyor, taksi ücreti tahmin edeceğimiz için Price Prediction bizim için en uygunu olacaktır, seçerek devam ediyoruz.

Bir sonraki ekran da, eğitim için kullanmak istediğimiz verileri belirtmektir. Fiyat tahmini, tarihsel veri örnekleri gösterilerek tahminler yapmak için bir makine öğrenim modelinin eğitildiği bir denetimli öğrenme görevi örneğidir. Örnekler hem model girişlerini (bizim durumumuzda, zaman, mesafe ve yolcu sayısı gibi şeyler) hem de çıktı değerini (gerçek ücret) içerir. Daha sonra, bir ücret tahmin etmek istediğimizde, modelimiz yeni yolculuğumuzun ayrıntılarını alacak ve bunları bir eğitim tahmininde bulunmak için eğitim verilerinden elde ettiği veriler ile birlikte kullanarak tahminde bulunacaktır.

Bir makine öğrenim modelinin kalitesini değerlendirmek için, tipik olarak tarihsel verilerimizin bir kısmını eğitimden çıkarırız. Bu, modelimizin çıktılarını karşılaştırabileceğimiz bilinen bazı iyi giriş / çıkış kombinasyonlarının (modelimizin görmediği) olmasını sağlar. AutoML, bu amaçla verilerimizin bir kısmını otomatik olarak saklar, bu nedenle veriyi tam veri setimizle sağlayabiliriz. İsteğe bağlı ön koşulu tamamladıysanız, dosya seç alanında daha önce indirdiğimiz eğitim verisini seçerek yükleyebiliriz.

Dosyayı yükledikten sonra Model Builder, sütunları otomatik olarak algılar ve verilerin önizlemesini sağlar. Model Builder’a hangi alanı tahmin etmek istediğimizi söylememiz gerekir; Bizim durumumuzda bu ‘fare_amount‘ alanıdır.

ModelBuilder, seçenekleri araştırmak ve belirli bir veri kümesi için en uygun tahmin algoritmasını ve parametrelerini belirlemek için AutoML kullanır. Yineleme süresindeki üst sınır bize bağlıdır ve öncelikle eğitim veri kümesinin boyutundan etkilenmelidir.

ML.NET ekibinin, çeşitli veri kümesi boyutları için yineleme süreleriyle ilgili bazı kuralları vardır; Veri setimiz için (2,5 mb ve 5 mb arasında, test ve eğitim verilerini bir araya getirip getirmediğinize bağlı olarak) sadece on saniye yeterli olacaktır. ‘Start Train’ üzerine tıkladıktan sonra, Model Builder modellerde yinelenmeye ve ilerlemesiyle ilgili birkaç ayrıntı göstermeye başlar. Model Builder, eğittiği her modeli değerlendirir ve modelin R-Square puanını, bunları karşılaştırma mekanizması olarak kullanır.

Optimizasyon gerçekleştirildikten sonra, ModelBuilder, yineleme süresi içerisinde üretebileceği en iyi beş konfigürasyonun değerlendirme metrikleri de dahil olmak üzere prosese genel bir bakış sunar.

ModelBuilder, en iyi sonucu otomatik olarak seçse de, son ölçümleri incelemek için biraz zaman harcamaya değer. Seçilen modelin metrikleri iyi değilse, yeni girdilerde iyi performans göstermesi olası değildir. Böyle bir durumda, model eğitimi sürecini yinelemeniz gerekebilir. Seçenekler şunları içerebilir:

  • AutoML için keşif süresinin artırılması (daha iyi bir algoritma veya parametreler bulmasına izin verin)
  • Eğitim verisi miktarını artırmak (etki alanınızın değişkenliğini daha iyi gösteren daha fazla örnek verin)
  • Ön işleme eğitimi verileri (öngörülebilirliği artırabilecek yeni özellikler ortaya çıkarın)

Yukarıdaki örneğimizde, en iyi model LightGbmRegressioneğitici kullanılarak üretildi ve iyi performans göstermesi gereken R-kare puanı 0.94 olarak elde edildi.

Değerlendirmeden sonra, ModelBuilder, çözümünüze otomatik olarak iki yeni proje ekleyecektir. Bunlardan ilki, mevcut projeniz tarafından referans alınabilecek model ve giriş sınıflarını içeren bir kütüphanedir. İkincisi, modelin nasıl yükleneceğini ve kullanılacağını gösteren kodlu örnek bir konsol uygulamasıdır.

Oluşturulan bu iki proje ile modeli çalışırken görmeye hazırız. Örnek uygulama, model kullanımını göstermek için eğitim veri kümenizden kodlanmış tek bir girdi kullanır. Daha etkileşimli hale getirmek için, Program.cs içeriğini aşağıda ki ile değiştirerek etkileşimli seyahat bilgileri girmenize ve tahmini bir ücret almanıza olanak sağlar:

08-interaktif-tahmini

Ali UYSAL

IT alanında 16 sene önce donanım ile başlayan tecrübem, network ve sonrasında iş analizi, yazılım geliştirme ve proje yöneticiliği alanlarında devam etmiştir. Endüstriyel yazılımlar, sahadan veri toplama ve analizleri, otomatik etiketleme ve barkod sistemleri, otomatik tartım ve robotik konularında tecrübe sahibiyim. Sanayi 4.0 kapsamında imalat sanayinin dijital dönüşümünde çok fazla projenin hayata geçmesini sağladım.Open Source projelerle uzun süre ilgilendim, analiz ve implementasyonu konularında tecrübe edindim. Bunlar dışında hobi amacıyla başlasam da sonradan ürüne dönüşen, geliştirme kartları ile farklı çalışmalarım olmuştur.Raspberry Pi üzerinde yaptığım donanımsal ve yazılımsal işler ile çok farklı ürünler ortaya çıkartarak tecrübe edindim.

İlgili Makaleler

Bir Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu