• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Yapay Zeka

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ali Murat Çevik by Ali Murat Çevik
Ağustos 20, 2020
in Yapay Zeka
6 min read
0
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Merhaba arkadaşlar, bu yazımda Gini Index kullanarak karar ağacı oluşturulmasını bir örnek üzerinden adım adım gerçekleyeceğim. Karar ağacını oluştururken, yabancı kaynaklarda yaygın olarak kullanılmakta olan o malum tenis oynamak için oluşturulmuş hava durumu veri kümesini kullanacağım. Konuya başlamadan önce OMÜ, Bilgisayar Mühendisliği Bölümü, Makine Öğrenimine Giriş dersinde bizlere kattığı bilgi ve deneyimlerinden dolayı Prof. Dr. Erdal KILIÇ ve Arş. Gör. Zinnet Duygu Akşehir hocalarıma teşekkür ederim.

Gini Katsayısı kimdir?
İtalyan istatistikçi Corrado Gini ‘nin 1912 yılında geliştirdiği, kendi soyadını taşıyan Gini katsayısı, istatistik alanında çokça kullanılmaktadır. 0 ile 1 aralığında değişen katsayısıyla başarılı veya başarısız olma durumunu ifade eder. [1]


Şekil 1: Gini Katsayısı Formülü

Neler Yapacağız?
Bir örneği sınıflandırmak için kökten başlayıp testi gerçekleştirerek sonuca karşılık gelen kenarları takip edeceğiz. Takip sonucu ulaştığımız noktalarda testi gerçekleştirerek yaprakla ilişkili sonucu tahmin edeceğiz. Adım adım ifade edecek olursak:

  • Her bir öznitelik için ayrı ayrı Gini değerlerini hesaplayacağız.
  • Hesapladığımız Gini değerlerini küçükten büyüğe sıralayacağız
  • En düşük Gini değerine sahip özniteliği kök (root) olarak belirleyeceğiz.
  • Kök durumdaki özniteliğin her dallanması için ayrı ayrı Gini değerini hesaplayacağız.
  • Hesapladığımız yeni Gini değerlerini kendi içinde küçükten büyüğe sıralayıp tekrar yeni dallanma için bir düğüm belirleyeceğiz.
  • Aynı işlemi bütün dallanmalar için uygulayarak karar ağacımızı oluşturmuş olacağız.

Veri kümesini inceleyelim:
2hava durumu data seti
Şekil 2: Bhavesh Bhatt Hava Durumu Veri Kümesi

14 günün sonunda bugün ve yarın için havanın tenis oynamaya uygunluğunu tahmin etmeye çalışacağımız veri kümesi 5 öznitelikten oluşmaktadır. Havanın görünümü, sıcaklık, nem, rüzgâr ve tenis oynamaya uygunluk özniteliklerinin her biri için Gini değerlerini hesaplayalım.
Görünüm özniteliği için Gini hesaplanması:
3gorunum

Gini(Güneşli) = 1 – (2/5)^2 – (3/5)^2 = 1 – 0.16 – 0.36 = 0.48
Gini(Bulutlu) = 1 – (4/4)^2 – (0/4)^2 = 0
Gini(Yağmurlu) = 1 – (3/5)^2 – (2/5)^2 = 1-0.36-0.16 = 0.48
Gini(Görünüm) = (4/14) x 0 + (5/14) x 0.48 + (5/14) x 0.48 = 0 + 0.171 + 0.171 = 0.342

Sıcaklık özniteliği için Gini hesaplanması:
4sicaklik
Gini(Sıcak) = 1 – (2/4)^2 – (2/4)^2 = 0.5

Gini(Ilık) = 1 – (4/6)^2 – (2/6)^2 = 1 – 0.444 – 0.111 = 0.445
Gini(Serin) = 1 – (3/4)^2 – (1/4)^2 = 1 – 0.5625 – 0.0625 = 0.375
Gini(Sıcaklık) = (4/14) x 0.375 + (4/14) x 0.5 + (6/14) x 0.445 = 0.107 + 0.142 + 0.190 = 0.439

Nem özniteliği için Gini hesaplanması: 
5nem
Gini(Yüksek) = 1 – (3/7)2 – (4/7)2 = 1 – 0.183 – 0.326 = 0.491

Gini(Normal) = 1 – (6/7)2 – (1/7)2 = 1 – 0.734 – 0.0204 = 0.245
Gini(Nem) = (7/14) x 0.491 + (7/14) x 0.245 = 0.2455 + 0.1225 = 0.367

Rüzgâr özniteliği için Gini hesaplanması:
6ruzgar
Gini(Hafif) = 1 – (6/8)^2 – (2/8)^2 = 1 – 0.5625 – 0.0625 = 0.375

Gini(Güçlü) = 1 – (3/6)^2 – (3/6)^2 = 1 – 0.25 – 0.25 = 0.5
Gini(Rüzgar) = (8/14) x 0.375 + (6/14) x 0.5 = 0.214 + 0.214 = 0.428

Hesapladığımız Gini metriklerini küçükten büyüğe sıralayacak olursak Gini(Görünüm) < Gini(Nem) < Gini(Rüzgar) < Gini(Sıcaklık) şeklinde oluştuğunu görebiliriz. Bu durumda kök düğüm için en küçük Gini değerine sahip özniteliği seçmemiz gerekmektedir. Görünüm özniteliği kök düğüm olarak seçilir. Kök olarak seçilen görünüm özniteliğinin 3 dalı bulunmaktadır. Güneşli, yağmurlu ve bulutlu dalları için tekrar Gini index değerleri hesaplanacaktır. Güneşli dallanması için görünüm özniteliğinde yalnızca güneşli bilgisini içeren verilerle çalışılacaktır.
7gorunum
Örnekleyecek olursak, Güneşli dallanması için:
8dataset

Güneşli görünümün sıcaklık için gini indexi
Gini(Görünüm= Güneşli, Sıcaklık= Sıcak) = 1 – (2/2)2 – (0/2)2 = 0
Gini(Görünüm = Güneşli, Sıcaklık = Ilık) = 1 – (1/2)2 – (1/2)2 = 0.5
Gini(Görünüm = Güneşli, Sıcaklık = Serin) = 1 – (1/1)2 – (0/1)2 = 0
Gini(Görünüm = Güneşli, Sıcaklık) = (2/5) x 0 + (2/5) x 0.5 + (1/5) x 0 = 0.2

Aynı şekilde güneşli görünümün nem için gini indexi
Gini(Görünüm = Güneşli, Nem= Yüksek) = 1 – (3/3)2 – (0/3)2 = 0

Gini(Görünüm = Güneşli, Nem = Normal) = 1 – (2/2)2 – (0/2)2 = 0
Gini(Görünüm = Güneşli, Nem) = (3/5) x 0 + (2/5) x 0 = 0

Güneşli görünümün rüzgâr için gini indexi
Gini(Görünüm = Güneşli, Rüzgar = Weak) = 1 – (2/3)2 – (1/3)2 = 1 – 0.44 – 0.11 = 0.45
Gini(Görünüm = Güneşli, Rüzgar = Strong) = 1 – (1/2)2 – (1/2)2 = 1- 0.25 – 0.25 = 0.5
Gini(Görünüm = Güneşli, Rüzgar) = (3/5) x 0.45 + (2/5) x 0.5 = 0.27 + 0.2 = 0.47

Görünüm özniteliğinin güneşli dallanması için hesapladığımız Gini değerlerini küçükten büyüğe sıralayacak olursak Gini(Görünüm =Güneşli, Nem) < Gini(Görünüm = Güneşli, Sıcaklık) < Gini(Görünüm = Güneşli, Rüzgar) şeklinde oluştuğunu gözlemleyebiliriz. Nem en küçük gini değerine sahip olduğu için dallanmamıza nem ile devam edeceğiz.  Nemi yüksek olan dal hayır yaprağı ile biterken, nemi düşük olan dal ise evet yaprağı ile bitecektir. Geriye kalan yağmurlu durumu için aynı işlemleri tekrarlayacağız. Genel olarak mantığın anlaşıldığını düşündüğüm için direkt gini indexlerinin hesaplanmış halini yazacağım. Eğer bu konuda bir sorunuz olursa yorum olarak yazabilirsiniz.

Yağmurlu görünüm için gini indexleri:
Gini(Görünüm= Yağmurlu, Sıcaklık) = (3/5) x 0.45 + (2/5) x 0.5 = 0.27 + 0.2 = 0.47
Gini(Görünüm = Yağmurlu, Nem) = (2/5) x 0.5 + (3/5) x 0.45 = 0.2 + 0.27 = 0.47
Gini(Görünüm = Yağmurlu, Rüzgar) = (3/5) x 0 + (2/5) x 0 = 0
9nem gorunum
Yağmurlu dallanması için gini indexlerinin küçükten büyüğe sıralanması Gini(Görünüm= Yağmurlu, Rüzgar) < Gini(Görünüm = Yağmurlu, Sıcaklı) = Gini(Görünüm = Yağmurlu, Nem) şeklindedir. Yağmurlu dallanması görüldüğü üzere en küçük Gini indexine sahip olan rüzgar ile devam edecek ve rüzgar durumu Normal olanlar Evet ile, rüzgar durumu güçlü olanlar hayır ile sonlanacaktır.

10 ruzgar nem gorunum
Karar ağaçlarıyla ilgili başka yazılar ilerleyen zamanlarda gelecek 🤓 Sorularınızı yorum olarak veya iletişim kısmından iletebilirisiniz.
Hoşçakalın

Kaynaklar:
[1] https://veribilimcisi.com/2018/02/23/karar-agaclari-decision-trees
Şekil 2: GitHub, visualize-decision-tree, https://github.com/bhattbhavesh91/visualize-decision-tree/blob/master/tennis.csv

alim cevik
Tags: Karar AğacıMakine Öğrenimi
SendTweet9Share2Share
Önceki Gönderi

Freelance Çalışmak İsteyenlere Tavsiyeler

Sonraki Gönderi

CV Hazırlamak İçin Kullanışlı 5 Platform

İlgili Yazılar

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

by Ali Murat Çevik
Haziran 27, 2023
0

Son zamanların popüler araçlarının çoğunlukla yapay zeka tabanlı olduğunu görmekteyiz. Bu tür sistemlerle ilk defa tanışanlar henüz ChatGPT’ nin verdiği...

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

by Ali Murat Çevik
Eylül 12, 2022
0

VGG19 Nedir? VGG19, adını Oxford Üniversitesi’nde bulunan “Visual Geometry Group” isimli gruptan almaktadır. Sonda bulunan 19 ise katman sayısını belirtmektedir....

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

by Emre İnaç
Ağustos 23, 2022
0

CHATBOT NEDİR ? Chatbot, bir cihazda, (Siri, Alexa, Google Asistan vb.), uygulamada, web sitesinde veya diğer ağlarda bulunan yapay zeka...

Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

by Emre İnaç
Ağustos 4, 2022
0

Makine Öğrenimi (ML), Yapay Zeka(AI)’ nın bir alt sınıfıdır. Makine öğrenimi; insana ait akıllı karar verme ve tahmin davranışlarını taklit...

Makine Öğreniminde Aşırı Öğrenme (Overfitting) Durumu

Makine Öğreniminde Aşırı Öğrenme (Overfitting) Durumu

by Ali Murat Çevik
Eylül 10, 2021
0

Merhabalar, bu yazıda makine öğrenimi alanında sıkça karşılaşılan aşırı öğrenme (overfitting) - ezber problemine değineceğim. “Aşırı öğrenme (overfitting) nedir?”, “Nasıl...

Next Post
CV Hazırlamak İçin Kullanışlı 5 Platform

CV Hazırlamak İçin Kullanışlı 5 Platform

Ağaç Veri Yapısı

Ağaç Veri Yapısı

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Splash Screen Yapımı #Flutter

Splash Screen Yapımı #Flutter

Mayıs 25, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Haziran 27, 2023
Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS

Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS

Mayıs 11, 2023
Risk Yönetimi ve Tehdit Modelleme

Risk Yönetimi ve Tehdit Modelleme

Mayıs 5, 2023
Telefonlarımız Bizi Dinliyor Peki Ama Nasıl?

Telefonlarımız Bizi Dinliyor Peki Ama Nasıl?

Mayıs 5, 2023

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.