Spark ML’e Kategori Değişkenlerini Belirtme

Mar 08 2017 Published by under machine learning, scala, software development

Spark ML’de sınıflandırma algoritmalarını kullanırken iki tip değişkeniniz vardır: Sürekli Değişkenler ve Kategori Değişkenleri. Sürekli değişkenler, değerin kendisinin ve değişimlerinin (artma veya azalma) sizin için önemli olduğu değişkenlerdir. Kategori değişkenleri ise sınıfsal değişkenlerdir.  (maksimum x farklı değer alabilirler.)

Algoritmanızı geliştirirken sürekli değişkenler ve kategori değişkenlerini birbirinden ayırmanız gerekmektedir. Bunun için Spark ML’de VectorIndexer sınıfı kullanılır.

İlk olarak kategori değişkenlerinizi bir Vector’de tutarsınız:

Ardından maksimum alacakları değer çeşitliliğine göre VectorIndexer sınıfını kullanarak bu değerlerinizi index’ler ve maksimum değer sayısını Indexer’a parametre olarak verebilirsiniz.

Bu alanlar artık kategori değerleri olarak index’lenmiştir ve Spark Pipeline’ına ekleyebilirsiniz:

Referans:

https://spark.apache.org/docs/latest/ml-features.html#vectorindexer

Comments are off for this post

PredictionIO kullanırken Spark’a Parametre Geçmek

Oct 25 2016 Published by under machine learning, scala

Apache PredictionIO bir çok şeyi kolaylaştıran açık kaynak kodlu bir “Machine Learning” sunucusudur. Alt yapısında SparkML ve Spark kullanır. PredictionIO ile modeli eğitirken veya test ederken Spark’a parametre geçmek için — işaretini ilgili parametrelerin başına aşağıdaki gibi koymak yeterlidir. spark-submit’e verilen değerler parametre olarak geçer:

Örnek:

 

 

Comments are off for this post

Spark 2.0 – MLLib Yenilikleri

Aug 16 2016 Published by under machine learning

Spark 2.0 ile birlikte MLLib’te (Spark’ın machine learning kütüphanesi) önemli geliştirmeler yayına alındı. Aynı zamanda MLLib’e en fazla kodun ve özelliğin gönderildiği sürüm olma özelliğini taşıyor:

Screen Shot 2016-08-17 at 09.42.49

 

Spark 2.0 ile birlikte yayına alınan en temel MLLib özellikleri ise şu şekilde:

  • DataFrame arayüzü temel arayüz olarak kullanılmaya başlandı. Spark MLLib’in başından beri varolan RDD arayüzü (spark.mllib paketindeki) ise rafa kalktı. Artık RDD arayüzüne yeni geliştirme yapılmayacak. Sadece hataları giderilecek.Bu geliştirmenin temel sebepleri DataFrame’in daha kullanıcı dostu arayüzü olması ve sorgu iyileştirmeleri olarak görünüyor. DataFrame ve RDD’nin temel farklarını daha detaylı okumak için: http://www.adsquare.com/comparing-performance-of-spark-dataframes-api-to-spark-rdd/
  • DataFrame arayüzü kullanılarak oluşturulan Machine Learning modelini kaydetme ve okuma özelliği geldi. Bu özellik Scala, Java, Python ve R arayüzü kullanılarak geliştirilebiliyor. Detaylar için: https://databricks.com/blog/2016/05/31/apache-spark-2-0-preview-machine-learning-model-persistence.html
  • SparkR’a yeni MLLib algoritmaları eklendi. (naive bayes, k-means clustering, survival regression..vs.)
  • Python ile desteklenen MLLib algoritmalarına yenileri eklendi. (LDA, Gaussian Mixture Model, Generalized Linear Regression..vs.)
  • DataFrame arayüzüne yeni algoritmalar ve arayüzler eklendi. (Bisecting K-Means clustering, Gaussian Mixture Model, MaxAbsScaler feature transformer)
  • DataFrame ile kaydedilen vektör ve matrisler daha etkin bir “serialization” yöntemi kullanmaya başladı. Bu sayede MLLib algoritmalarını çağırırken ortaya çıkan performans maliyeti azaldı.

Referanslar:

http://spark.apache.org/docs/2.0.0/ml-guide.html

https://spark-summit.org/2016/events/apache-spark-mllib-20-preview-data-science-and-production/

 

 

Comments are off for this post