1 / 57

3 Kasım 2018 // İstanbul

Developing Machine Learning Applications with ML.NET. Emrah Uslu emrah.uslu@peakup.org. PEAKUP. .NET Yazılım Geliştirici Konferansı. 3 Kasım 2018 // İstanbul. Her şeyi geliştirebildiğimiz platform. MASAÜSTÜ. WEB. BULUT. MOB İL. OYUN. NESNELERİN İNTERNETİ. MAKİNE ÖĞRENMESİ. .NET.

edgarf
Télécharger la présentation

3 Kasım 2018 // İstanbul

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Developing Machine Learning Applications with ML.NET Emrah Usluemrah.uslu@peakup.org PEAKUP .NET Yazılım Geliştirici Konferansı 3 Kasım 2018 // İstanbul

  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… Ne kadar? Kaç tane? Nasıl bir dağılıma sahip? Bu A’mı B’mi? Regresyon Kümeleme Sınıflandırma

  6. .NET yazılım ekibi Makine Öğrenmesini nasıl kullanıyor?

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

  8. ML.NET NEDİR? 01 ML.NET kendi makine öğrenmesi modellerinizi oluşturmanızı sağlar.

  9. HazırML Modelleri (Azure Cognitive Services) • Örneğin Azure Cognitive servislerinikullanarak 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 Search Knowledge 96% pozitif Programlama Dilleri (C#, VB, F#) Full Control / Harder Easy / Less Control

  10. Hazır ML Modelleri (Azure Cognitive Services) • Örneğin Azure Cognitive servislerinikullanarak 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 Search Knowledge 9% pozitif Programlama Dilleri (C#, VB, F#) Full Control / Harder Easy / Less Control

  11. Kendi ML Modellerinizi Oluşturun Çalıştır Veriyi Hazırla Derle & Eğit 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 öğrenmesitemelleri ve kütüphaneleri bakımından yetersiz. • ML.NET, Azure Machine Learning ve CognitiveServices’in sağladığı deneyimi tamamlıyor. • Kendi modelini oluştur • Code First yaklaşımı • AppLocal Model ile Dağıtım Less Control / Easy

  13. ML.NET NEDİR? 02 ML.NET framework first Yaklaşımını benimsiyor.

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

  15. ML.NET NEDİR? 03 ML.NET, büyük ölçekli Microsoftürünlerinde kendini kanıtladı.

  16. Microsoft’daML.NET Kullanımı BingAds Excel Power Point Windows 10 + more!

  17. ML.NET NEDİR? 04 ML.NET Açık Kaynak Kodlu& Çoklu Platform Desteği

  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 Açık Kaynak Kodlu Yazılım Geliştirici Odaklı Kendini Kanıtlamış & Genişletilebilir https://github.com/dotnet/machinelearning

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

  20. GitHub Problem Etiketleme

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

  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ışı ML Pipeline etiketler + özellik vektörü etiketler + düz metin model

  28. Uçtan Uca Makine Öğrenmesi İş Akışı ML Pipeline • etiketler + özellik vektörü • etiketler + düz metin 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(16binkayı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) varpipeline=new LearningPipeline(); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

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

  32. Özellikleri Belirle (ML.NET’de Pipeline) varpipeline=new LearningPipeline();pipeline.Add(newTextLoader<CoreFxIssue>("../corefx_issues.tsv",useHeader:true)); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

  33. Özellikleri Belirle (ML.NET’de Pipeline) varpipeline=new LearningPipeline();pipeline.Add(newTextLoader<CoreFxIssue>("../corefx_issues.tsv",useHeader:true)); pipeline.Add(newDictionarizer(("Area","Label“))); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

  34. Özellikleri Belirle (ML.NET’de Pipeline) varpipeline=new LearningPipeline();pipeline.Add(newTextLoader<CoreFxIssue>("../corefx_issues.tsv",useHeader:true)); pipeline.Add(newDictionarizer(("Area","Label"))); pipeline.Add(newTextFeaturizer("Title","Title")); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

  35. Özellikleri Belirle (ML.NET’de Pipeline) varpipeline=new LearningPipeline();pipeline.Add(newTextLoader<CoreFxIssue>("../corefx_issues.tsv",useHeader:true)); pipeline.Add(newDictionarizer(("Area","Label"))); pipeline.Add(newTextFeaturizer("Title","Title")); pipeline.Add(newTextFeaturizer("Description","Description")); Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

  36. Özellikleri Belirle (ML.NET’de Pipeline) varpipeline=new LearningPipeline();pipeline.Add(newTextLoader<CoreFxIssue>("../corefx_issues.tsv",useHeader:true)); pipeline.Add(newDictionarizer(("Area","Label"))); pipeline.Add(newTextFeaturizer("Title","Title")); pipeline.Add(newTextFeaturizer("Description","Description")); pipeline.Add(newColumnConcatenator("Features","Title","Description")); 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. Veri Topla Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket pipeline.Add(newStochasticDualCoordinateAscentClassifier()); pipeline.Add(newPredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" });

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

  39. ModeliDeğerlendir • Model, yeni gelecek veriler için anlamlı olmalı (genelleştirme) • Testverisi ile değerlendir: Etiketlenmiş veri, test için kullanılmaz • Mikro-doğruluk: Test verisindeki örneklemin yüzde kaçı doğru tahmin edildi? Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket vartestData = newTextLoader<CoreFxIssue>(@“..\corefx_issues_test.tsv", useHeader: true); varevaluator=newClassificationEvaluator();ClassificationMetricsmetrics=evaluator.Evaluate(model,testData);Console.WriteLine("Micro-Accuracy is {0}",metrics.AccuracyMicro);

  40. Modeli Değerlendir • Mkro-doğruluk: ~73% Veriyi Yükle Özellikleri Belirle Modeli Eğit Modeli Değerlendir Modeli Tüket

  41. Model Consumption CoreFxIssue issue = newCoreFxIssue { ID = “7899", Title = "Failing network tests in the CI", Description = @"Of 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 ML Pipeline

  43. Modeli İyileştirmek “Programming the Unprogrammable” “Programming the Unprogrammable”

  44. Her yol Pipeline! (Taksi Ücreti)

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

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

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

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

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

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

More Related