• Hakkımızda
  • Bize Katıl
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilişim - Teknoloji - Blog
  • 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ı | Bilişim - Teknoloji - Blog
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
SendTweet8Share2Share
Önceki Gönderi

Freelance Çalışmak İsteyenlere Tavsiyeler

Sonraki Gönderi

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

İlgili Yazılar

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...

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)

by Emre İnaç
Temmuz 26, 2021
0

Bu makale, YOLO v4 teknolojisini kullanarak özelleşmiş nesne algılama ve nesne sınıflandırma için izlenmesi gereken işlemleri adım adım anlatan bir...

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ı

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

  • 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
VGG-19 Transfer Learning ile Görüntü Sınıflandırma

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

Eylül 12, 2022
SOC Sistemler Üzerine Faydalı Notlar

SOC Sistemler Üzerine Faydalı Notlar

Eylül 2, 2022
Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

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

Ağustos 23, 2022
Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

Ağustos 4, 2022

Reklam

Yazılım Karavanı | Bilişim – Teknoloji – Blog

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.