Yapay Sinir Ağları (YSA) Kullanan Sınıflandırma Modeli

Yayınlanan: 2020-12-01

Makine öğrenimi terminolojisinde Sınıflandırma, girdi verilerinin önceden tanımlanmış etiketli sınıflardan biri olarak sınıflandırıldığı bir tahmine dayalı modelleme problemini ifade eder. Örneğin, çıktı sayısı iki etiketle sınırlı olduğundan, Evet veya Hayır, Doğru veya Yanlış tahmini, İkili Sınıflandırma kategorisine girer.

Benzer şekilde, farklı yaş gruplarını sınıflandırmak gibi birden çok sınıfa sahip çıktılara çok sınıflı sınıflandırma problemleri denir. Sınıflandırma problemleri, çeşitli kullanım durumlarında kullanılabilecek en yaygın olarak kullanılan veya tanımlanmış ML problem türlerinden biridir. Sınıflandırma problemleri için kullanılabilecek çeşitli Machine Learning modelleri vardır.

Torbalamadan Güçlendirme tekniklerine kadar, ML sınıflandırma kullanım durumlarını ele alma kapasitesinden daha fazla olsa da, Sinir Ağları, modelin performansını desteklemek için yüksek miktarda çıktı sınıfına ve yüksek miktarda veriye sahip olduğumuzda ortaya çıkar. İleride, Keras'ta (Python) Sinir Ağlarını kullanarak bir Sınıflandırma Modelini nasıl uygulayabileceğimize bakacağız.

Dünyanın En İyi Üniversitelerinden Yapay Zeka Kursunu Öğrenin . Kariyerinizi hızlandırmak için Master, Executive PGP veya Advanced Certificate Programları kazanın.

İçindekiler

Nöral ağlar

Sinir ağları, insan beyninin öğrenmesini gevşek bir şekilde temsil eder. Bir Yapay Sinir Ağı, sırayla katmanlar oluşturmaktan sorumlu olan Nöronlardan oluşur. Bu Nöronlar, ayarlanmış parametreler olarak da bilinir.

Her katmanın çıktısı bir sonraki katmana iletilir. Her katman için, öğrenme sürecine ve her katmanın çıktısına yardımcı olan farklı doğrusal olmayan etkinleştirme işlevleri vardır. Çıkış katmanı, terminal nöronlar olarak da bilinir.

Kaynak: Vikipedi

Nöronlarla ilişkili ve genel tahminlerden sorumlu olan ağırlıklar her çağda güncellenir. Öğrenme oranı, çeşitli optimize ediciler kullanılarak optimize edilir. Her Sinir Ağı, öğrenme devam ettikçe en aza indirilen bir maliyet fonksiyonu ile sağlanır. Daha sonra maliyet fonksiyonunun en iyi sonuçları verdiği en iyi ağırlıklar kullanılır.

Okuyun: Yeni Başlayanlar İçin TensorFlow Nesne Algılama Eğitimi

Sınıflandırma Problemi

Bu makale için, Sinir Ağı oluşturmak için Keras'ı kullanacağız. Keras, aşağıdaki komutlar kullanılarak doğrudan python'a aktarılabilir.

tensorflow'u tf olarak içe aktar

tensorflow ithalat keralarından

keras.models'den sıralı içe aktar

keras.layers'dan Yoğun içe aktar

Veri Kümesi ve Hedef değişken

Aşağıdaki özelliklere sahip olacak Diyabet veri setini kullanacağız:

Girdi Değişkenleri (X):

  • Gebelikler: Hamile kalma sayısı
  • Glikoz: Plazma glikoz konsantrasyonu, bir oral glikoz tolerans testinde 2 saat
  • Tansiyon: Diyastolik kan basıncı (mm Hg)
  • SkinThickness: Triceps deri kıvrım kalınlığı (mm)
  • İnsülin: 2 saatlik serum insülini (mu U/ml)
  • BMI: Vücut kitle indeksi (kg cinsinden ağırlık/(m cinsinden boy)^2)
  • DiabetesPedigreeFunction: Diyabet soyağacı işlevi
  • Yaş: Yaş (yıl)

Çıkış Değişkenleri (y):

Sonuç: Sınıf değişkeni (0 veya 1) [Hasta Şeker hastası olsun veya olmasın]

# veri kümesini yükle

df= loadtxt('pima-indians-diabetes.csv', sınırlayıcı=',')

# Verileri X (giriş) ve Y (çıkış) olarak ayırın

X = veri kümesi[:,0:8]

y = veri kümesi[:,8]

Keras Modelini Tanımlayın

Sıralı modeller kullanarak sinir ağını oluşturmaya başlayabiliriz. Bu yukarıdan aşağıya yaklaşım, bir Sinir ağı mimarisi oluşturmaya ve şekil ve katmanlarla oynamaya yardımcı olur. İlk katman, input_dim kullanılarak düzeltilebilecek özellik sayısına sahip olacaktır. Bu durumda 8'e ayarlayacağız.

Sinir Ağları oluşturmak çok kolay bir süreç değildir. İyi bir model inşa edilmeden önce yapılan birçok deneme ve hata vardır. Keras'ta Dense sınıfını kullanarak Tam Bağlantılı bir ağ yapısı oluşturacağız. Nöron, yoğun katmana sağlanacak ilk argüman olarak sayılır.

Aktivasyon fonksiyonu, aktivasyon argümanı kullanılarak ayarlanabilir. Bu durumda aktivasyon fonksiyonu olarak Rektifiye Doğrusal Birimi kullanacağız. Sigmoid veya TanH gibi başka seçenekler de var, ancak RELU çok genelleştirilmiş ve daha iyi bir seçenektir.

# keras modelini tanımlayın

model = Sıralı()

model.add(Yoğun(12, input_dim=8, activation='relu'))

model.add(Yoğun(8, aktivasyon='relu'))

model.add(Yoğun(1, aktivasyon='sigmoid'))

Keras Modelini Derleyin

Modelin derlenmesi, model tanımlamasından sonraki adımdır. Model derleme için Tensorflow kullanılır. Derleme, model eğitimi ve tahminler için parametrelerin ayarlandığı süreçtir. Arka planda CPU/GPU veya dağıtılmış bellekler kullanılabilir.

Farklı katmanlar için ağırlıkları değerlendirmek için kullanılan bir kayıp fonksiyonu belirlememiz gerekiyor. Optimize edici, öğrenme oranını ayarlar ve çeşitli ağırlık setlerinden geçer. Bu durumda kayıp fonksiyonu olarak İkili Çapraz Entropiyi kullanacağız. Optimize edici durumunda, verimli bir stokastik gradyan iniş algoritması olan ADAM'ı kullanacağız.

Ayar için çok popüler olarak kullanılır. Son olarak, bu bir sınıflandırma problemi olduğu için, metrik argümanı ile tanımlanan sınıflandırma doğruluğunu toplayacak ve raporlayacağız. Bu durumda doğruluk kullanacağız.

# keras modelini derle

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['doğruluk'])

Model uyumu ve Değerlendirme

Modeli uydurmak esasen model eğitimi olarak bilinir. Modeli derledikten sonra, model verileri verimli bir şekilde gözden geçirmeye ve kendini eğitmeye hazırdır. Model eğitimi süreci için Keras'ın fit() işlevi kullanılabilir. Model eğitiminden önce kullanılan iki ana parametre şunlardır:

  1. Dönemler: Tüm veri kümesinden bir geçiş.
  2. Parti Boyutu: Ağırlıklar her parti boyutunda güncellenir. Dönemler, eşit olarak dağıtılmış veri gruplarından oluşur.

# keras modelini veri kümesine sığdır

model.fit(X, y, dönemler=150, batch_size=10)

Bu işlemde bir GPU veya CPU kullanılır. Eğitim, dönemlere, parti boyutuna ve en önemlisi Veri boyutuna bağlı olarak çok uzun bir süreç olabilir.

Ayrıca, değerlendirme() işlevini kullanarak eğitim veri kümesindeki modeli değerlendirebiliriz. Veriler eğitim ve test setlerine bölünebilir ve X ve Y testleri model değerlendirmesi için kullanılabilir.

Bu, her girdi ve çıktı çifti için bir tahmin üretecek ve ortalama kayıp ve hassasiyet gibi kurduğumuz tüm ölçümler dahil puanları toplayacaktır.

Değerlendirme() işlevi tarafından iki değerden oluşan bir liste döndürülür. Birincisi veri setindeki model kaybı, ikincisi ise modelin veri setindeki doğruluğu olacaktır. Biz sadece raporun doğruluğu ile ilgileniyoruz, bu yüzden kaybın önemini göz ardı edeceğiz.

# keras modelini değerlendir

_, doğruluk = model.evaluate(Xtest, ytest)

print('Doğruluk: %.2f' % (doğruluk*100))

Ayrıca Okuyun: Sinir Ağı Modeline Giriş

Çözüm

Sınıflandırma tabanlı bir Sinir Ağı oluşturduk ve değerlendirdik. Bu durumda kullanılan veriler küçük olmasına rağmen, Sinir ağları çoğunlukla büyük sayısal veri kümeleri için uygundur.

UpGrad'ın Makine Öğrenimi ve NLP'deki Gelişmiş Sertifika Programına göz atın. Bu kurs, Makine Öğrenimi ile ilgilenen, 1-1 mentorluk ve çok daha fazlasını sunan çeşitli öğrenciler göz önünde bulundurularak hazırlanmıştır.

Sinir ağları sınıflandırma için nasıl kullanılabilir?

Sınıflandırma, nesneleri gruplara ayırmakla ilgilidir. Bir sınıflandırma türü, birden çok sınıfın tahmin edildiği yerdir. Sinir ağlarında, sinir birimleri katmanlar halinde düzenlenir. İlk katmanda girdi işlenir ve çıktı üretilir. Bu çıktı daha sonra nihai çıktıyı üretmek için kalan katmanlardan gönderilir. Aynı girdi, farklı çıktılar üretmek için katman boyunca işlenir. Bu, çok katmanlı bir algılayıcı ile temsil edilebilir. Sınıflandırma için kullanılan sinir ağının türü veri setine bağlıdır, ancak sınıflandırma problemleri için sinir ağları kullanılmıştır.

Yapay sinir ağları neden sınıflandırma için iyidir?

Bu soruyu cevaplamak için sinir ağlarının temel prensibini ve sinir ağlarının çözmek için tasarlandığı problemi anlamamız gerekiyor. Adından da anlaşılacağı gibi, sinir ağları insan beyninin biyolojik olarak esinlenilmiş bir modelidir. Temel fikir, bir nöronu matematiksel bir fonksiyon olarak modellemek istediğimizdir. Her nöron diğer nöronlardan girdi alır ve bir çıktı hesaplar. Sonra bu nöronları beyindeki sinir ağını taklit edecek şekilde bağlarız. Amaç, bazı verileri alabilen ve uygun bir çıktı üretebilen bir ağ öğrenmektir.

Yapay Sinir Ağlarını ne zaman kullanmalıyız?

Yapay Sinir Ağları, canlı organizmaların performansını kopyalamaya veya verilerdeki kalıpları tespit etmeye çalıştığınız durumlarda kullanılır. Tıbbi teşhisler, konuşmayı tanıma, verileri görselleştirme ve el yazısı rakamları tahmin etme, bir YSA için iyi kullanım durumlarıdır. Girdiler ve çıktılar arasındaki karmaşık ilişkileri anlamaya ihtiyaç duyulduğunda yapay sinir ağları kullanılır. Örneğin değişkenlerde çok fazla gürültü olabilir ve bu değişkenler arasındaki ilişkileri anlamak zor olabilir. Bu nedenle, Yapay Sinir Ağlarının kullanılması, bilgi ve verilerin saklanması için yaygın bir uygulamadır.