Makine öğrenmesi algoritmaları ve bu alandaki uzmanlara olan ihtiyaç hakkında çok fazla konuşuluyor. Hepimiz beceri gereksiniminde önemli bir boşluk olduğunu biliyoruz. H2O’nun amacı, uzman olmayanların da makine öğrenmesi üzerinde deneyler yapmasını kolaylaştıran bir platform sunmaktır.
H2O mimarisi, üst katmanda farklı API’lerin, alt katmanda ise H2O JVM’nin bulunduğu katmanlara ayrılabilir.
H2O’nun çekirdek kodu Java ile yazılmıştır ve bu sayede tüm çerçeve çoklu iş parçacığını destekler. Java ile yazılmış olsa da mimaride gösterildiği gibi R, Python ve birkaç diğer dil için arayüzler sağlar; böylece verimli şekilde kullanılabilir.
Özetle, H2O; bellek içi çalışan, dağıtık, hızlı ve ölçeklenebilir, açık kaynaklı bir makine öğrenmesi ve kestirimsel analitik platformudur ve makine öğrenmesi modellerinin geliştirilmesini kolaylaştırır.
Kurulum Süreci
R
H2O işlevlerini R içinde kullanmak istiyorsanız, install.packages("h2o") komutunu çalıştırarak H2O paketini doğrudan kurabilirsiniz.
##
## ----------------------------------------------------------------------
##
## Your next step is to start H2O:
## > h2o.init()
##
## For H2Opackage documentation, ask forhelp:
## >??h2o
##
## After starting H2O, you can use the Web UI at http://localhost:54321
## For more information visit http://docs.h2o.ai
##
## ----------------------------------------------------------------------
##
## Attaching package:'h2o'
## The following objects are masked from'package:stats':
##
## cor, sd,var
## The following objects are masked from'package:base':
##
## %*%,%in%,&&,||, apply,as.factor,as.numeric, colnames,
## colnames<-, ifelse, is.character, is.factor, is.numeric, log,
## log10, log1p, log2, round, signif, trunc
Altyapı:
## Connection successful!
##
## R is connected to the H2Ocluster:
## H2O cluster uptime:32 minutes 57 seconds
## H2O cluster timezone: Asia/Kolkata
## H2O data parsing timezone:UTC
## H2O cluster version:3.20.0.2
## H2O cluster version age:3 months and 22 days !!!
## H2O cluster name: H2O_started_from_R_NSingh1_wou076
## H2O cluster total nodes:1
## H2O cluster total memory:1.55GB
## H2O cluster total cores:4
## H2O cluster allowed cores:4
## H2O cluster healthy:TRUE
## H2O Connection ip: localhost
## H2O Connection port:54321
## H2O Connection proxy:NA
## H2O Internal Security:FALSE
## H2OAPIExtensions: Algos, AutoML, Core V3, Core V4
## RVersion:R version 3.5.1(2018-07-02)Altyapı:
H2O’yu başlatmak, 64 bit JDK yüklü değilse sisteminizde hata verebilir. Böyle bir durum oluşursa lütfen 64 bit en güncel JDK’yı kurun; sonrasında sorunsuz çalışacaktır.
Python
Python kullanıyorsanız, aynı yöntem burada da geçerlidir; komut satırından pip install -U h2o çalıştırdığınızda h2o Python ortamınıza kurulacaktır. H2O’yu başlatma süreci de aynıdır.
h2o.init() komutu oldukça akıllıdır ve pek çok işi halleder. Önce yeni bir örnek başlatmadan önce etkin bir h2o örneği arar; bir örnek yoksa yenisini başlatır.
Kaynakları h2o örneğine tahsis etmeye yardımcı olan bağımsız değişkenleri vardır; sık kullanılanlar şunlardır:
nthreads: Varsayılan olarak -1’dir; bu, örneğin CPU’nun tüm çekirdeklerini kullanabileceği anlamına gelir. Kullanılacak çekirdek sayısını bu bağımsız değişkene bir değer vererek ayarlayabilirsiniz.
max_mem_size: Bu bağımsız değişkene bir değer vererek örneğe ayrılan azami belleği kısıtlayabilirsiniz. Dize türündedir; 2 GB bellek için ‘2g’ veya ‘2G’ şeklinde, MB cinsinden ayrım yapmak istediğinizde de benzer şekilde parametre geçebilirsiniz.
Örnek oluşturulduktan sonra tarayıcınızda http://localhost:54321 yazarak Flow’a erişebilirsiniz. Flow, h2o’nun parçası olan web arayüzünün adıdır; ekstra kurulum gerektirmez ve CoffeeScript (JavaScript benzeri bir dil) ile yazılmıştır. Şu işlemler için kullanabilirsiniz:
Veriyi doğrudan yükleme
İstemci tarafından yüklenen veriyi görüntüleme
Doğrudan model oluşturma
Sizin veya istemcinizin oluşturduğu modelleri görüntüleme
tahminleri görüntüleme
Doğrudan tahmin çalıştırma
Arayüz oldukça kullanışlıdır ve uzman olmayanlara kullanım kolaylığı sağlar; denemenizi ve kendi deneylerinizi yapmanızı öneririm.
AutoML
Şimdi H2O’nun AutoML kısmından bahsedelim: AutoML, kullanıcı tarafından belirlenen bir süre sınırı içinde çok sayıda modelin otomatik olarak eğitilmesine ve ayarlanmasına yardımcı olur.
AutoML işlevinin mevcut sürümü; Bir Rastgele Orman, Bir Aşırı-Rastgele Orman, Rasgele bir Gradyan Artırmalı Makineler (GBM) ızgarası, rasgele bir Derin Sinir Ağları ızgarası eğitebilir ve ardından tüm modelleri kullanarak Birleşik Yığın (Stacked Ensemble) modeli kurar.
AutoML dediğimizde, veri hazırlama, model oluşturma ve topluluk (ensemble) yaklaşımlarını kapsamalı; ayrıca kullanıcıların daha az kafa karışıklığıyla işlem yapabilmesi için mümkün olduğunca az sayıda parametre sunmalıdır. H2O AutoML bu görevi, kullanıcıdan minimum parametre alarak rahatlıkla yerine getirir.
Hem R hem de Python API’lerinde aynı veriyle ilgili bağımsız değişkenler kullanılır: x, y, training_frame, validation frame. Bunlardan y ve training_frame zorunludur; diğerleri isteğe bağlıdır. Ayrıca max_runtime_sec ve max_models değerlerini yapılandırabilirsiniz; burada max_runtime_sec zorunludur, max_model ise isteğe bağlıdır; parametre geçmezseniz varsayılan olarak NULL alır.
x bağımsız değişkeni, training_frame içindeki kestiricilerin (predictor) vektörüdür; çerçevedeki tüm kestiricileri kullanmak istemiyorsanız, kullanmak istediklerinizi x ile belirtebilirsiniz.
Şimdi bazı isteğe bağlı ve çeşitli parametrelerden bahsedelim; bu parametreleri, hakkında bilginiz olmasa bile kurcalamaya çalışın; bu sayede ileri konularda bilgi kazanırsınız:
validation_frame: AutoML içindeki bireysel modellerin erken durdurulması için kullanılır. Bir modeli doğrulamak için ilettiğiniz bir veri çerçevesidir; siz iletmezseniz eğitim verisinin bir parçası olabilir.
leaderboard_frame: Geçirilirse, modeller çapraz doğrulama metrikleri yerine bu çerçevedeki değerlere göre puanlanır. Yine siz iletmezseniz eğitim verisinin bir parçası kullanılır.
nfolds: Varsayılan 5 olan K-katlı çapraz doğrulama; model performansını azaltmak için kullanılabilir.
fold_columns: Çapraz doğrulama için indeks belirtir.
weights_column: Belirli sütunlara ağırlık vermek isterseniz kullanabilirsiniz; 0 ağırlığı vermek sütunu hariç tuttuğunuz anlamına gelir.
ignored_columns: Yalnızca Python’da; x’in tersi gibidir.
stopping_metric: Izgara aramalarının ve modellerin erken durdurulması için bir metrik belirtir; sınıflandırma için varsayılan logloss, regresyon için deviance’tır.
sort_metric: Sondaki liderlik tablosu modellerini sıralamak için kullanılır. İkili sınıflandırma için varsayılan AUC, çok sınıflı sınıflandırma için sınıf başına ortalama hata (mean_per_class_error), regresyon için deviance’tır.
validation_frame ve leaderboard_frame, nfolds yani çapraz doğrulama parametresine bağlıdır.
Aşağıdaki senaryolar iki durumda oluşabilir:
AutoML içinde çapraz doğrulama kullanıyorsak: * Yalnızca training frame iletilirse - Veri, eğitim ve doğrulama olarak 80-20 oranında bölünür. * Eğitim ve leaderboard frame iletilirse - Eğitim ve doğrulama verilerindeki 80-20 bölünmede değişiklik olmaz. * Eğitim ve doğrulama frame iletilirse - Bölme yapılmaz. * Üç çerçeve de iletilirse - Bölme yapılmaz.
Çapraz doğrulama kullanılmıyorsa (nfolds = 0) bu durum leaderboard frame’i önemli ölçüde etkiler: * Yalnızca training frame iletilirse - Veri 80/10/10 olarak eğitim, doğrulama ve leaderboard şeklinde bölünür. * Eğitim ve leaderboard frame iletilirse - Veri eğitim ve doğrulama olarak 80-20 oranında bölünür. * Eğitim ve doğrulama frame iletilirse - validation_frame verisi 50-50 oranında doğrulama ve leaderboard olarak bölünür. * Üç çerçeve de iletilirse - Bölme yapılmaz.
R ve Python’da Uygulama
R
H2O, veriyi Frame olarak içe aktarır; bu, R ve Python’da çeşitli işlemler için kullandığımız data frame’den farklıdır.
y <-"response"
x <- setdiff(names(train), y)Altyapı:
Zorunlu parametreleri geçirerek bir AutoML nesnesi oluşturun. Yalnızca training frame iletiyoruz ve nfolds parametresi varsayılan değerinde kalıyor. Modelin çalışma süresini ihtiyacınıza göre artırabilirsiniz.
train[,y]<- as.factor(train[,y])
aml <- h2o.automl(x = x, y = y,
training_frame = train,
max_runtime_secs =30)Altyapı:
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
H2O’yu Tanımlama
Makine öğrenmesi algoritmaları ve bu alandaki uzmanlara olan ihtiyaç hakkında çok fazla konuşuluyor. Hepimiz beceri gereksiniminde önemli bir boşluk olduğunu biliyoruz. H2O’nun amacı, uzman olmayanların da makine öğrenmesi üzerinde deneyler yapmasını kolaylaştıran bir platform sunmaktır.
H2O mimarisi, üst katmanda farklı API’lerin, alt katmanda ise H2O JVM’nin bulunduğu katmanlara ayrılabilir.
H2O’nun çekirdek kodu Java ile yazılmıştır ve bu sayede tüm çerçeve çoklu iş parçacığını destekler. Java ile yazılmış olsa da mimaride gösterildiği gibi R, Python ve birkaç diğer dil için arayüzler sağlar; böylece verimli şekilde kullanılabilir.
Özetle, H2O; bellek içi çalışan, dağıtık, hızlı ve ölçeklenebilir, açık kaynaklı bir makine öğrenmesi ve kestirimsel analitik platformudur ve makine öğrenmesi modellerinin geliştirilmesini kolaylaştırır.
Kurulum Süreci
R
H2O işlevlerini R içinde kullanmak istiyorsanız,
install.packages("h2o")komutunu çalıştırarak H2O paketini doğrudan kurabilirsiniz.H2O’yu başlatmak, 64 bit JDK yüklü değilse sisteminizde hata verebilir. Böyle bir durum oluşursa lütfen 64 bit en güncel JDK’yı kurun; sonrasında sorunsuz çalışacaktır.
Python
Python kullanıyorsanız, aynı yöntem burada da geçerlidir; komut satırından
pip install -U h2oçalıştırdığınızda h2o Python ortamınıza kurulacaktır. H2O’yu başlatma süreci de aynıdır.h2o.init()komutu oldukça akıllıdır ve pek çok işi halleder. Önce yeni bir örnek başlatmadan önce etkin bir h2o örneği arar; bir örnek yoksa yenisini başlatır.Kaynakları h2o örneğine tahsis etmeye yardımcı olan bağımsız değişkenleri vardır; sık kullanılanlar şunlardır:
nthreads: Varsayılan olarak -1’dir; bu, örneğin CPU’nun tüm çekirdeklerini kullanabileceği anlamına gelir. Kullanılacak çekirdek sayısını bu bağımsız değişkene bir değer vererek ayarlayabilirsiniz.
max_mem_size: Bu bağımsız değişkene bir değer vererek örneğe ayrılan azami belleği kısıtlayabilirsiniz. Dize türündedir; 2 GB bellek için ‘2g’ veya ‘2G’ şeklinde, MB cinsinden ayrım yapmak istediğinizde de benzer şekilde parametre geçebilirsiniz.
Örnek oluşturulduktan sonra tarayıcınızda http://localhost:54321 yazarak Flow’a erişebilirsiniz. Flow, h2o’nun parçası olan web arayüzünün adıdır; ekstra kurulum gerektirmez ve CoffeeScript (JavaScript benzeri bir dil) ile yazılmıştır. Şu işlemler için kullanabilirsiniz:
Arayüz oldukça kullanışlıdır ve uzman olmayanlara kullanım kolaylığı sağlar; denemenizi ve kendi deneylerinizi yapmanızı öneririm.
AutoML
Şimdi H2O’nun AutoML kısmından bahsedelim: AutoML, kullanıcı tarafından belirlenen bir süre sınırı içinde çok sayıda modelin otomatik olarak eğitilmesine ve ayarlanmasına yardımcı olur.
AutoML işlevinin mevcut sürümü; Bir Rastgele Orman, Bir Aşırı-Rastgele Orman, Rasgele bir Gradyan Artırmalı Makineler (GBM) ızgarası, rasgele bir Derin Sinir Ağları ızgarası eğitebilir ve ardından tüm modelleri kullanarak Birleşik Yığın (Stacked Ensemble) modeli kurar.
AutoML dediğimizde, veri hazırlama, model oluşturma ve topluluk (ensemble) yaklaşımlarını kapsamalı; ayrıca kullanıcıların daha az kafa karışıklığıyla işlem yapabilmesi için mümkün olduğunca az sayıda parametre sunmalıdır. H2O AutoML bu görevi, kullanıcıdan minimum parametre alarak rahatlıkla yerine getirir.
Hem R hem de Python API’lerinde aynı veriyle ilgili bağımsız değişkenler kullanılır:
x,y,training_frame,validation frame. Bunlardanyvetraining_framezorunludur; diğerleri isteğe bağlıdır. Ayrıcamax_runtime_secvemax_modelsdeğerlerini yapılandırabilirsiniz; buradamax_runtime_seczorunludur,max_modelise isteğe bağlıdır; parametre geçmezseniz varsayılan olarak NULL alır.xbağımsız değişkeni,training_frameiçindeki kestiricilerin (predictor) vektörüdür; çerçevedeki tüm kestiricileri kullanmak istemiyorsanız, kullanmak istediklerinizixile belirtebilirsiniz.Şimdi bazı isteğe bağlı ve çeşitli parametrelerden bahsedelim; bu parametreleri, hakkında bilginiz olmasa bile kurcalamaya çalışın; bu sayede ileri konularda bilgi kazanırsınız:
validation_frame: AutoML içindeki bireysel modellerin erken durdurulması için kullanılır. Bir modeli doğrulamak için ilettiğiniz bir veri çerçevesidir; siz iletmezseniz eğitim verisinin bir parçası olabilir.
leaderboard_frame: Geçirilirse, modeller çapraz doğrulama metrikleri yerine bu çerçevedeki değerlere göre puanlanır. Yine siz iletmezseniz eğitim verisinin bir parçası kullanılır.
nfolds: Varsayılan 5 olan K-katlı çapraz doğrulama; model performansını azaltmak için kullanılabilir.
fold_columns: Çapraz doğrulama için indeks belirtir.
weights_column: Belirli sütunlara ağırlık vermek isterseniz kullanabilirsiniz; 0 ağırlığı vermek sütunu hariç tuttuğunuz anlamına gelir.
ignored_columns: Yalnızca Python’da;
x’in tersi gibidir.stopping_metric: Izgara aramalarının ve modellerin erken durdurulması için bir metrik belirtir; sınıflandırma için varsayılan logloss, regresyon için deviance’tır.
sort_metric: Sondaki liderlik tablosu modellerini sıralamak için kullanılır. İkili sınıflandırma için varsayılan AUC, çok sınıflı sınıflandırma için sınıf başına ortalama hata (mean_per_class_error), regresyon için deviance’tır.
validation_frameveleaderboard_frame,nfoldsyani çapraz doğrulama parametresine bağlıdır.Aşağıdaki senaryolar iki durumda oluşabilir:
AutoML içinde çapraz doğrulama kullanıyorsak: * Yalnızca training frame iletilirse - Veri, eğitim ve doğrulama olarak 80-20 oranında bölünür. * Eğitim ve leaderboard frame iletilirse - Eğitim ve doğrulama verilerindeki 80-20 bölünmede değişiklik olmaz. * Eğitim ve doğrulama frame iletilirse - Bölme yapılmaz. * Üç çerçeve de iletilirse - Bölme yapılmaz.
Çapraz doğrulama kullanılmıyorsa (nfolds = 0) bu durum leaderboard frame’i önemli ölçüde etkiler: * Yalnızca training frame iletilirse - Veri 80/10/10 olarak eğitim, doğrulama ve leaderboard şeklinde bölünür. * Eğitim ve leaderboard frame iletilirse - Veri eğitim ve doğrulama olarak 80-20 oranında bölünür. * Eğitim ve doğrulama frame iletilirse -
validation_frameverisi 50-50 oranında doğrulama ve leaderboard olarak bölünür. * Üç çerçeve de iletilirse - Bölme yapılmaz.R ve Python’da Uygulama
R
H2O, veriyi Frame olarak içe aktarır; bu, R ve Python’da çeşitli işlemler için kullandığımız data frame’den farklıdır.
Kestiricileri ve yanıtı (response) ayarlama.
Zorunlu parametreleri geçirerek bir AutoML nesnesi oluşturun. Yalnızca training frame iletiyoruz ve nfolds parametresi varsayılan değerinde kalıyor. Modelin çalışma süresini ihtiyacınıza göre artırabilirsiniz.
Farklı modellerin liderlik tablosunu görüntüleme.
Python
Python’da daha fazla öğrenmek isterseniz, DataCamp’in Dask ile Paralel Hesaplama kursunu inceleyin.