R ile Derin Öğrenme – KDnuggets

Tarih:

R ile Derin Öğrenme
Bing Image Creator'dan Görüntü
 

Özellikle teknolojik gelişmeler kimleri eğlendirmedi? yapay zeka, Alexa'dan Tesla sürücüsüz arabalara ve sayısız başka yeniliğe? Her geçen gün gelişmelere hayret ediyorum ama daha da ilginç olan şey, bu yeniliklerin altında yatan şeyin ne olduğuna dair bir fikriniz olduğunda. Hoşgeldiniz Yapay Zeka ve sonsuz olasılıklara derin öğrenme. Ne olduğunu merak ettiyseniz, o zaman evdesiniz.

Bu eğitimde, terminolojiyi çözeceğim ve size R'de bir derin öğrenme görevinin nasıl gerçekleştirileceğini anlatacağım. makine öğrenme gibi kavramlar gerileme, sınıflandırma ve kümeleme.

Derin öğrenme kavramını çevreleyen bazı terminolojilerin tanımlarıyla başlayalım:

Derin öğrenme bilgisayarlara insan beyninin bilişsel işlevlerini taklit etmeyi öğreten bir makine öğrenimi dalıdır. Bu, veri kümelerindeki karmaşık kalıpları açmaya yardımcı olan yapay sinir ağlarının kullanılmasıyla elde edilir. Derin öğrenme ile bir bilgisayar sesleri, görüntüleri ve hatta metinleri sınıflandırabilir.

Derin öğrenmenin ayrıntılarına dalmadan önce, makine öğrenimi ve yapay zekanın ne olduğunu ve üç kavramın birbiriyle nasıl ilişkili olduğunu anlamak güzel olurdu.

Yapay zeka: Bu, işleyişi insan beynini taklit eden makinelerin geliştirilmesiyle ilgilenen bir bilgisayar bilimi dalıdır.

Makine öğrenme: Bu, bilgisayarların verilerden öğrenmesini sağlayan Yapay Zekanın bir alt kümesidir.

Yukarıdaki tanımlarla, artık derin öğrenmenin yapay zeka ve makine öğrenimi ile ne kadar ilişkili olduğuna dair bir fikrimiz var.

Aşağıdaki diyagram ilişkiyi göstermeye yardımcı olacaktır.

R ile Derin Öğrenme

R ile Derin Öğrenme

Derin öğrenme hakkında not edilmesi gereken iki önemli nokta şunlardır:

  • Büyük miktarda veri gerektirir
  • Yüksek performanslı bilgi işlem gücü gerektirir

Bunlar, derin öğrenme modellerinin yapı taşlarıdır. Adından da anlaşılacağı gibi, nöral kelimesi tıpkı insan beynindeki nöronlar gibi nöronlardan gelir. Aslında, derin sinir ağlarının mimarisi ilhamını insan beyninin yapısından alır.

Bir sinir ağının bir girdi katmanı, bir gizli katmanı ve bir de çıktı katmanı vardır. Bu ağa sığ sinir ağı denir. Birden fazla gizli katmanımız olduğunda, katmanların 100'e kadar çıkabileceği derin bir sinir ağı haline gelir.

Aşağıdaki resim bir sinir ağının nasıl göründüğünü göstermektedir.

R ile Derin Öğrenme

R ile Derin Öğrenme

Bu bizi R'de derin öğrenme modellerinin nasıl oluşturulacağı sorusuna getiriyor? Kera'ya girin!

keras makine öğreniminde sinir ağlarını kullanmayı kolaylaştıran açık kaynaklı bir derin öğrenme kitaplığıdır. Bu kitaplık, kullanan bir sarmalayıcıdır. TensorFlow bir arka uç motoru olarak. Ancak arka uç için Theano veya CNTK gibi başka seçenekler de var.

Şimdi ikisini de yükleyelim TensorFlow ve Keras.

Retiküle kullanarak sanal bir ortam oluşturmaya başlayın

library(reticulate)
virtualenv_create("virtualenv", python = "/path/to/your/python3") install.packages(“tensorflow”) #This is only done once! library(tensorflow) install_tensorflow(envname = "/path/to/your/virtualenv", version = "cpu") install.packages(“keras”) #do this once! library(keras) install_keras(envname = "/path/to/your/virtualenv") # confirm the installation was successful
tf$constant("Hello TensorFlow!")

 

Yapılandırmalarımız ayarlandığına göre, bir sınıflandırma problemini çözmek için derin öğrenmeyi nasıl kullanabileceğimize geçebiliriz.

Bu eğitim için kullanacağım veriler, tarafından yapılan devam eden bir Maaş Anketinden alınmıştır. https://www.askamanager.org.

Formda sorulan ana soru, ne kadar para kazandığınız ve sektör, yaş, deneyim yılı vb. gibi birkaç ayrıntı dahadır. Ayrıntılar, verileri aldığım bir Google sayfasında toplanır.

Verilerle çözmek istediğimiz sorun, yaş, cinsiyet, deneyim yılı ve en yüksek eğitim düzeyi gibi bilgiler verildiğinde, birinin potansiyel olarak ne kadar kazanabileceğini tahmin eden derin bir öğrenme modeli bulabilmektir.

İhtiyacımız olacak kütüphaneleri yükleyin.

library(dplyr)
library(keras)
library(caTools)

 

Verileri içeri aktarın

url - “https://raw.githubusercontent.com/oyogo/salary_dashboard/master/data/salary_data_cleaned.csv” salary_data - read.csv(url)

 

İhtiyacımız olan sütunları seçin

salary_data - salary_data %>% select(age,professional_experience_years,gender,highest_edu_level,annual_salary)

Bilgisayar bilimi GIGO konseptini hatırlıyor musunuz? (Çöp içeri çöp dışarı). Pekala, bu kavram diğer alanlarda olduğu gibi burada da mükemmel bir şekilde uygulanabilir. Eğitimimizin sonuçları büyük ölçüde kullandığımız verilerin kalitesine bağlı olacaktır. Herhangi bir işlemde kritik bir adım olan veri temizleme ve dönüştürmeyi getiren şey budur. Veri Bilim projesi.

Veri temizlemenin ele almaya çalıştığı temel sorunlardan bazıları; tutarlılık, eksik değerler, yazım sorunları, aykırı değerler ve veri türleri. Bu sorunların nasıl çözüldüğüne dair ayrıntılara girmeyeceğim ve bu, bu makalenin konusundan uzaklaşmak istemememin basit bir nedeni. Bu nedenle, verilerin temizlenmiş sürümünü kullanacağım ancak temizleme işleminin nasıl yapıldığını öğrenmekle ilgileniyorsanız, bu makaleye göz atın.

Yapay sinir ağları sadece sayısal değişkenleri kabul eder ve bazı değişkenlerimizin kategorik yapıda olduğunu görerek bunları sayılara kodlamamız gerekecektir. Bu, veri ön işleme Adım gereklidir, çünkü çoğu zaman modelleme için hazır olan verileri elde edemezsiniz.

# create an encoder function
encode_ordinal - function(x, order = unique(x)) { x - as.numeric(factor(x, levels = order, exclude = NULL))
} salary_data - salary_data %>% mutate( highest_edu_level = encode_ordinal(highest_edu_level, order = c("High School","College degree","Master's degree","Professional degree (MD, JD, etc.)","PhD")), professional_experience_years = encode_ordinal(professional_experience_years, order = c("1 year or less", "2 - 4 years","5-7 years", "8 - 10 years", "11 - 20 years", "21 - 30 years", "31 - 40 years", "41 years or more")), age = encode_ordinal(age, order = c( "under 18", "18-24","25-34", "35-44", "45-54", "55-64","65 or over")), gender = case_when(gender== "Woman" ~ 0, gender == "Man" ~ 1))

 

Bir sınıflandırmayı çözmek istediğimize göre, yanıt değişkeni olarak kullanmak için yıllık maaşı iki sınıfa ayırmamız gerekir.

salary_data - salary_data %>% mutate(categories = case_when( annual_salary = 100000 ~ 0, annual_salary > 100000 ~ 1)) salary_data - salary_data %>% select(-annual_salary)

Temel makine öğrenimi yaklaşımlarında olduğu gibi; regresyon, sınıflandırma ve kümeleme, verilerimizi eğitim ve test setlerine ayırmamız gerekecek. Bunu, eğitim için veri setinin %80'i ve test için %20'si olan 80-20 kurallarını kullanarak yapıyoruz. Uygun gördüğünüz herhangi bir bölme oranını kullanmaya karar verebileceğiniz için bu taşlara atılmaz, ancak eğitim setinin yüzdelerde iyi bir paya sahip olması gerektiğini unutmayın.

set.seed(123) sample_split - sample.split(Y = salary_data$categories, SplitRatio = 0.7)
train_set - subset(x=salary_data, sample_split == TRUE)
test_set - subset(x = salary_data, sample_split == FALSE) y_train - train_set$categories
y_test - test_set$categories
x_train - train_set %>% select(-categories)
x_test - test_set %>% select(-categories)

 

Keras, girdileri matrisler veya diziler biçiminde alır. Dönüşüm için as.matrix işlevini kullanıyoruz. Ayrıca, öngörücü değişkenleri ölçeklendirmemiz gerekiyor ve ardından yanıt değişkenini kategorik veri türüne dönüştürüyoruz.

x - as.matrix(apply(x_train, 2, function(x) (x-min(x))/(max(x) - min(x)))) y - to_categorical(y_train, num_classes = 2)

Modeli somutlaştır

Pipe operatörünü kullanarak üzerine katmanlar ekleyeceğimiz sıralı bir model oluşturun.

model = keras_model_sequential()

Katmanları Yapılandırın

The girdi_şekli giriş verilerinin şeklini belirtir. Bizim durumumuzda, bunu kullanarak elde ettik. Ncol fonksiyonu. etkinleştirme: Burada aktivasyon fonksiyonunu belirtiyoruz; çıktıyı bir sonraki katmana geçirmeden önce istenen doğrusal olmayan biçime dönüştüren matematiksel bir işlev.

birimleri: sinir ağının her katmanındaki nöron sayısı.

model %>% layer_dense(input_shape = ncol(x), units = 10, activation = "relu") %>% layer_dense(units = 10, activation = "relu") %>% layer_dense(units = 2, activation = "sigmoid")

Bunu yapmak için derleme yöntemini kullanıyoruz. İşlev üç bağımsız değişken alır;

iyileştirici : Bu nesne, eğitim prosedürünü belirtir. kayıp : Bu, optimizasyon sırasında simge durumuna küçültülecek işlevdir. Mevcut seçenekler mse (ortalama karesel hata), binary_crossentropy ve categorical_crossentropy'dir.

metrikleri : Eğitimi izlemek için kullandığımız şey. Sınıflandırma problemleri için doğruluk.

model %>% compile( loss = "binary_crossentropy", optimizer = "adagrad", metrics = "accuracy"
)

Artık Keras'ın fit yöntemini kullanarak modeli sığdırabiliriz. Fit'in kabul ettiği argümanlardan bazıları şunlardır:

devirler : Bir dönem, eğitim veri kümesi üzerinde bir yinelemedir.

Parti boyutu : Model, kendisine iletilen matrisi/diziyi, eğitim sırasında yinelediği daha küçük gruplara böler.

doğrulama_bölümü : Keras'ın, her dönem için model performansını değerlendirmek üzere kullanılacak bir doğrulama seti elde etmek için eğitim verilerinin bir bölümünü dilimlemesi gerekecektir.

karıştırmak : Burada, eğitim verilerinizi her çağdan önce karıştırmak isteyip istemediğinizi belirtirsiniz.

fit = model %>% fit( x = x, y = y, shuffle = T, validation_split = 0.2, epochs = 100, batch_size = 5
)

Modeli değerlendirin

Modelin doğruluk değerini elde etmek için aşağıdaki gibi değerlendirme işlevini kullanın.

y_test - to_categorical(y_test, num_classes = 2)
model %>% evaluate(as.matrix(x_test),y_test)

Tahmin

Yeni veriler hakkında tahminde bulunmak için aşağıdaki gibi keras kitaplığından tahmin_sınıfları işlevini kullanın.

model %>% predict(as.matrix(x_test))

Bu makale size R'de Keras ile derin öğrenmenin temellerini öğretti. Daha iyi anlamak için daha derine inebilir, parametrelerle oynayabilir, veri hazırlığıyla ellerinizi kirletebilir ve belki de güçten yararlanarak hesaplamaları ölçeklendirebilirsiniz. bulut bilişim.
 
 
Clinton Oyogo şirketinde writer Satürn Bulutu eyleme dönüştürülebilir içgörüler için verileri analiz etmenin günlük işinin çok önemli bir parçası olduğuna inanıyor. Veri görselleştirme, veri düzenleme ve makine öğrenimindeki becerileriyle, bir veri bilimcisi olarak yaptığı işten gurur duyuyor.

 
orijinal. İzinle yeniden yayınlandı.
 

spot_img

En Son İstihbarat

spot_img