Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Developing Machine Learning Applications with ML.NET

Benzer bir sunumlar


... konulu sunumlar: "Developing Machine Learning Applications with ML.NET"— Sunum transkripti:

1 Developing Machine Learning Applications with ML.NET
7/25/2019 4:51 PM Developing Machine Learning Applications with ML.NET Emrah Uslu PEAKUP .NET Yazılım Geliştirici Konferansı 3 Kasım // İstanbul © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

2 Her şeyi geliştirebildiğimiz platform
MASAÜSTÜ WEB BULUT MOBİL OYUN NESNELERİN İNTERNETİ MAKİNE ÖĞRENMESİ .NET

3 Makine Öğrenmesi “Programlanamayanı Programla”
{ { T-Shirt’ün Fiyatı? Bu bir yüz mü? f(x) f(x) “Harika düğmeleri var… uzun kollu …hem gündelik hayatta hem işe giderken için giyilebilir”

4 Makine Öğrenmesi “Programlanamayanı Programla”
{ Makine Öğrenmesi veriyi kullanarak Yüz Yüz f(x) Model Yüz değil Yüz değil oluşturur

5 Bazı Makine Öğrenmesi Görevleri…
Bu A’mı B’mi? Ne kadar? Kaç tane? Nasıl bir dağılıma sahip? Sınıflandırma Regresyon Kümeleme

6 .NET yazılım ekibi Makine Öğrenmesini nasıl kullanıyor?
7/25/2019 4:51 PM .NET yazılım ekibi Makine Öğrenmesini nasıl kullanıyor? © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

7 Problemlerin Sınıflandırılması
şu 3 problemi çözüyor Bildirilen Problemlerin Sınıflandırılması Uçuş Gecikmeleri Satış Tahmini

8 ML.NET kendi makine öğrenmesi modellerinizi oluşturmanızı sağlar.
7/25/2019 4:51 PM ML.NET NEDİR? 01 ML.NET kendi makine öğrenmesi modellerinizi oluşturmanızı sağlar. © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

9 Hazır ML Modelleri (Azure Cognitive Services)
Örneğin Azure Cognitive servislerini kullanarak Metinsel Duygu Analizi TextAnalyticsAPI client = new TextAnalyticsAPI(); client.AzureRegion = AzureRegions.Westus; client.SubscriptionKey = "1bf33391DeadFish"; client.Sentiment( new MultiLanguageBatchInput( new List<MultiLanguageInput>() { new MultiLanguageInput("en","0", "This is a great vacuum cleaner") })); Vision Speech Language Labs Knowledge Search 96% pozitif Programlama Dilleri (C#, VB, F#) Easy / Less Control Full Control / Harder

10 Hazır ML Modelleri (Azure Cognitive Services)
Örneğin Azure Cognitive servislerini kullanarak Metinsel Duygu Analizi TextAnalyticsAPI client = new TextAnalyticsAPI(); client.AzureRegion = AzureRegions.Westus; client.SubscriptionKey = "1bf33391DeadFish"; client.Sentiment( new MultiLanguageBatchInput( new List<MultiLanguageInput>() { new MultiLanguageInput("en","0", "This vacuum cleaner sucks so much dirt") })); Vision Speech Language Labs Knowledge Search 9% pozitif Programlama Dilleri (C#, VB, F#) Easy / Less Control Full Control / Harder

11 Kendi ML Modellerinizi Oluşturun
Veriyi Hazırla Derle & Eğit Çalıştır Full Control / Harder Easy / Less Control

12 Kendi ML Modellerinizi Oluşturun
Var olan Çözümler Python ve R, Makine Öğrenmesi ve Veri Bilimi için ideal ve harika diller ML.NET, bunu alıştığımız araçlar ile yapmanın başka bir yolunu sunuyor. .NET, şu anda makine öğrenmesi temelleri ve kütüphaneleri bakımından yetersiz. ML.NET, Azure Machine Learning ve Cognitive Services’in sağladığı deneyimi tamamlıyor. Kendi modelini oluştur Code First yaklaşımı AppLocal Model ile Dağıtım Less Control / Easy

13 Yaklaşımını benimsiyor.
7/25/2019 4:51 PM ML.NET NEDİR? 02 ML.NET framework first Yaklaşımını benimsiyor. © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

14 Makine Öğrenmesi için Yazılım Geliştirici dostu API’ler
ML.NET, framework first yaklaşımını benimsiyor Makine Öğrenmesi için Yazılım Geliştirici dostu API’ler Eğitim Tüketim Extensions Transforms Learners Misc. Natural Text Linear ML Data framework Schema Boosted Trees Evaluators Missing values Svm Calibrators Categorical K-Means Data loaders Normalization Feature Selection

15 ML.NET, büyük ölçekli Microsoft ürünlerinde kendini kanıtladı.
7/25/2019 4:51 PM ML.NET NEDİR? 03 ML.NET, büyük ölçekli Microsoft ürünlerinde kendini kanıtladı. © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

16 Microsoft’da ML.NET Kullanımı
Bing Ads Excel Power Point Windows 10 + more!

17 Açık Kaynak Kodlu & Çoklu Platform Desteği
7/25/2019 4:51 PM ML.NET NEDİR? 04 ML.NET Açık Kaynak Kodlu & Çoklu Platform Desteği © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

18 ML.NET 0.6 (Ön İzleme) .NET Yazılım Geliştiriciler için yapılmış Makine Öğrenmesi Framework’ü Windows, Linux ve macOS Desteği Kendi Modelini Geliştir Yazılım Geliştirici Odaklı Kendini Kanıtlamış & Genişletilebilir Açık Kaynak Kodlu

19 https://github.com/dotnet/machinelearning/

20 GitHub Problem Etiketleme 7/25/2019 4:51 PM
© Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

21 GitHub Problem Etiketleme (Sınıflandırma Problemi)
A’mı B’mi? Bildirilen bu problem, hangi etiket ile işaretlenmeli?

22 ML Modelleri (GitHub Problem Sınıflandırma)

23 ML Modelleri (GitHub Problem Sınıflandırma)
Özellikler Başlık Açıklama

24 ML Modelleri (GitHub Problem Sınıflandırma)
Etiketler

25 ML Modelleri (GitHub Problem Sınıflandırma)
Modelin Eğitilmesi Özellikler Başlık Açıklama Eğit() Model Etiketler

26 ML Modelleri (GitHub Problem Sınıflandırma)
Tahminleme Model.Tahminle() Özellikler Tahmin Edilen Etiket Başlık Açıklama

27 Uçtan Uca Makine Öğrenmesi İş Akışı
Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket ML Pipeline etiketler + düz metin etiketler + özellik vektörü model

28 Uçtan Uca Makine Öğrenmesi İş Akışı
Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket ML Pipeline etiketler + düz metin etiketler + özellik vektörü model Vee... LearningPipelines! ML.NET’de

29 Veri Yükle (ML.NET’de Pipeline)
GitHub kayıtlarını C# ile API kullanarak topla corefx_issues.tsv (16bin kayıtları, Ağustos 2014 – Nisan 2018) Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

30 Veri Yükle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

31 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); class CoreFxIssue { [Column(ordinal: "0")] public string ID; [Column(ordinal: "1")] public string Area; [Column(ordinal: "2")] public string Title; [Column(ordinal: "3")] public string Description; } Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

32 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); ID Area Title Description 7899 area-System.Net Failing network tests in the CI Of the past dozen or so PRs I’ve … Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

33 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); pipeline.Add(new Dictionarizer(("Area", "Label“))); ID Area Title Description Label 7899 area-System.Net Failing network tests in the CI Of the past dozen or so PRs I’ve … 5 Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

34 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); pipeline.Add(new Dictionarizer(("Area", "Label"))); pipeline.Add(new TextFeaturizer("Title", "Title")); ID Area Title Description Label 7899 area-System.Net Failing network tests in the CI Of the past dozen or so PRs I’ve … 5 <0.45,0.34, …> Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

35 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); pipeline.Add(new Dictionarizer(("Area", "Label"))); pipeline.Add(new TextFeaturizer("Title", "Title")); pipeline.Add(new TextFeaturizer("Description", "Description")); ID Area Title Description Label 7899 area-System.Net Failing network tests in the CI Of the past dozen or so PRs I’ve … 5 <0.45,0.34, …> <0.27, 0.54, … > Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

36 Özellikleri Belirle (ML.NET’de Pipeline)
var pipeline = new LearningPipeline(); pipeline.Add(new TextLoader<CoreFxIssue>("../corefx_issues.tsv", useHeader: true)); pipeline.Add(new Dictionarizer(("Area", "Label"))); pipeline.Add(new TextFeaturizer("Title", "Title")); pipeline.Add(new TextFeaturizer("Description", "Description")); pipeline.Add(new ColumnConcatenator("Features", "Title", "Description")); ID Area Title Description Label Features 7899 area-System.Net Failing network tests in the CI Of the past dozen or so PRs I’ve … 5 <0.45,0.34, …> <0.27, 0.54, … > <0.45,0.34, …, 0.27, 0.54, …> Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

37 Modeli Eğit (ML.NET’de Pipeline)
Eğitim modeli etiket ile özellikleri parametre alır ve Model nesnesi oluşturur. pipeline.Add(new StochasticDualCoordinateAscentClassifier()); pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" }); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

38 Modeli Eğit (ML.NET’de Pipeline)
Eğitim modeli etiket ile özellikleri parametre alır ve Model nesnesi oluşturur. pipeline.Add(new StochasticDualCoordinateAscentClassifier()); pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" }); PredictionModel<CoreFxIssue, CoreFxIssuePrediction> model = pipeline.Train<CoreFxIssue, CoreFxIssuePrediction>(); public class CoreFxIssuePrediction { [ColumnName("PredictedLabel")] public string Area; } Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

39 Modeli Değerlendir Model, yeni gelecek veriler için anlamlı olmalı (genelleştirme) Test verisi ile değerlendir: Etiketlenmiş veri, test için kullanılmaz Mikro-doğruluk: Test verisindeki örneklemin yüzde kaçı doğru tahmin edildi? var testData = new useHeader: true); var evaluator = new ClassificationEvaluator(); ClassificationMetrics metrics = evaluator.Evaluate(model, testData); Console.WriteLine("Micro-Accuracy is {0}", metrics.AccuracyMicro); Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

40 Modeli Değerlendir Mkro-doğruluk: ~73% Etiket Doğruluk area-System.Net
0.9691 area-System.Data 0.9163 area-System.Linq 0.8930 area-Serialization 0.8799 area-System.IO 0.8755 area-System.Numerics 0.7588 area-System.Threading 0.7184 area-System.Reflection 0.6514 area-System.Globalization 0.6494 area-Meta 0.2325 Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

41 Model Consumption CoreFxIssue issue = new CoreFxIssue { ID = “7899",
Title = "Failing network tests in the CI", Description the past dozen or so PRs …" }; CoreFxIssuePrediction prediction = model.Predict(issue); Console.WriteLine("Area-Tag is " + prediction.Area); Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

42 Makine Öğrenmesi, İteratiftir
Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket ML Pipeline

43 Daha fazla/farklı veri
Modeli İyileştirmek Daha geniş veri seti Kullanıcı Profilleri Farklı veri setleri Daha fazla/farklı veri Farklı öğrenici Farklı dönüştürücü Farklı hiper parametreler Farklı pipeline “Programming the Unprogrammable” “Programming the Unprogrammable”

44 Her yol Pipeline! (Taksi Ücreti) 7/25/2019 4:51 PM
© Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

45 Pipeline Oyunları ! 1 2 3 4 5 6 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new FastTreeRegressor()); pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

46 Pipeline Oyunları ! 2 3 4 5 6 1 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new FastTreeRegressor()); pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

47 Pipeline Oyunları ! 3 4 5 6 1 2 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); 2 pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new FastTreeRegressor()); pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

48 Pipeline Oyunları ! 4 5 6 1 2 3 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); 2 pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new FastTreeRegressor()); 3 pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

49 Pipeline Oyunları ! 5 6 1 4 2 3 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); 4 pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); 2 pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new FastTreeRegressor()); 3 pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

50 Pipeline Oyunları ! 6 1 4 2 5 3 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); 4 pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); 2 pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); 5 pipeline.Add(new FastTreeRegressor()); 3 pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

51 Pipeline Oyunları ! 1 6 4 2 5 3 var pipeline = new LearningPipeline();
pipeline.Train<TaxiTrip, TaxiTripFarePrediction>(); 4 pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); 2 pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); 5 pipeline.Add(new FastTreeRegressor()); 3 pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type"));

52 Pipeline Oyunları ! var pipeline = new LearningPipeline();
pipeline.Add(new TextLoader<TaxiTrip> (DataPath, useHeader: true, separator: ",")); pipeline.Add(new CategoricalOneHotVectorizer ("vendor_id", "rate_code", "payment_type")); pipeline.Add(new ColumnConcatenator("Features", "vendor_id", "rate_code", …); pipeline.Add(new FastTreeRegressor()); pipeline.Train<TaxiTrip, TaxiTripFarePrediction>();

53 Akıllı Yolculuklar (Uçuş Duyarlılığı & Gecikmeler) 7/25/2019 4:51 PM
© Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

54 Uçuş Gecikmelerini Tahminlemek
Uçuş Veri Seti Ne Tahmin Ediyoruz? (Etiket) En Alakalı Veri (Özellikler) 108 Orijinal veri setindeki özellikler 9 En etkili özellikler Havayolu Kalkış havaalanı İniş havaalanı Tahmin edilen kalkış saati Mesafe Ay Gün Haftanın günü. Eylül 2017 to Ocak (2 milyon kayıt) Kalkış Zamanı

55 Uçuş Gecikmelerini Tahminlemek

56 Uçuş Gecikmelerini Tahminlemek
Tahminleri İyileştirme Yolları Eksik Veri ile Çalışmaktan Kaçının Az gerçekleşen uçuşları kaldırın. Regresyon, tekrarlanan senaryolarla daha iyi sonuç verir. Daha Fazla Boyut (Kolon) Ekleyin Hava durumu verisi, havayolu firması bilgileri vb. Aşırı Durumlardan Kaçının Aşırı uzun gecikmeler ve arıza, kaza gibi tahmin edilemeyen olaylarla ilgili gecikmeleri kaldırın. Veri Setini Büyütün (Daha Fazla Satır) Daha uzun aralıklı veri setleri kullanın.

57 7/25/2019 4:51 PM Satış Tahmini © Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


"Developing Machine Learning Applications with ML.NET" indir ppt

Benzer bir sunumlar


Google Reklamları