Uygulamalı Karar ağacı örneği

“myAvakadoo” internet uygulaması üzerinde hazırlanan karar ağacı uygulaması.

Engin Erol
7 min readMay 24, 2021

Üniversite uygulama projemi hazırlayıp buradan yayınlamak istedim. Bir veri işlem araçlarını, karar ağacı, KNN örnekleri veya ortalama kümeler yöntemleri çeşitli araçlar ile hazırlanıp sonuçları raporlar şeklinde belgeleniyor. Benim uygulamada hazırlamaya çalıştığım şeyler belirli bir uygulamanın içine nasıl aktarırız sorusuna cevap vermek amacıyla bu raporu hazırladım. Rapor içinde bulunan tüm algoritmalar github hesabım üzerinde yayınladım. Yazının sonunda bu kısmıda paylaşacam. Bahse konu olan web sitesinin ise gerçekle alakası bulunmamaktadır.

Avakadoo Web Uygulaması

Özet: Bu çalışmada hizmet veren firmalar ile bu firmaların hizmetlerine ulaşmak isteyen kullanıcılar arasında köprü görevi gören www.avakadoo.com internet sitesinin kullanıcıların davranışları ile firmaların verdikleri tepkiler incelenmiştir. Bu internet sitesine göre kullanıcılardan belirli alanda hizmet almak istedikleri iş kolu için öncelikle önceden oluşturulmuş bir soru formunu cevaplamalarını ve almak istedikleri hizmeti tarif etmeleri istenmektedir. Bu bir talep oluşturur. Oluşturulan bu talebe göre sisteme kayıtlı firmalar birer teklif ile karşılık verirler. Bu şekilde kullanıcılar en iyi, kaliteli hizmete kısa yoldan ve birçok alternatif ile ulaşabilirler. Avakadoo sistemi olarak gelen talepleri en hızlı şekilde firmalara ulaştırmak belirli bir işgücü ve maliyete sebep olmaktadır. Mevcut çalışmada, firmaların daha önceki taleplere verdikleri teklifleri değerlendirilip karar ağacı oluşturulması ve bu karar ağacı ile tahmin geliştirme üzerinde durulmuştur. Gelen taleplere firmaların verecekleri tepkileri önceden tahmin etmek, doğru işleri doğru firmalara yönlendirmek, kullanıcılara en uygun firmalar ile bağlantıya geçme olanağı verilmesini amaçlanmıştır. Tahmin algoritmaları arasından ID3 Karar ağaçları ile bir sınıflandırma ve kestirim yapılmaya çalışılmıştır.

Hakkında

Çalışmada bahsi geçen internet uygulaması gerçekte var olmayan bir uygulamadır. Avakadoo internet uygulaması üzerinden verdiğimiz bilgiler tamamen sentetik olarak oluşturulmuştur. Sistem tüm iş kollarını barındıran bir uygulama olsa da bu çalışma kapsamında sadece temizlik alanındaki faaliyetleri içermektedir.

1. Giriş — Avakadoo Sistemi

a. Avakadoo Sisteminin Tanıtımı:

Avakadoo günlük yaklaşık 200.000 kullanıcı ziyareti ve her beş saniyede bir iş talebinin oluşturulduğu bir internet üzerinden yayın yapan bir internet uygulamasıdır. Avakadoo internet uygulamasının amacı internet üzerinden insanların belirli hizmetler için o hizmeti veren firmalara kolay ve etkili bir şekilde ulaşmalarını sağlamaktır.

b. Kullanıcıların İçerikleri Oluşturması (Talep):

Kullanıcılar Avakadoo sisteminde belirli bir iş koluna ait bir soru listesini yanıtlayarak o hizmet ile ilgili bir talep oluştururlar. Bu soru listesi bu hizmeti tanımlayan çoklu seçenekli sorulardan ibarettir.

c. Firmaların Taleplere cevap vermesi (Teklif):

Oluşturulan bu talepler bir kontrol aşamasından geçip uygun olan işler uygun olan firmalara sms veya mail yolu ile iletilir. Bu sırada bir kontrolör bu talepleri değerlendirmesi ve uygun olanları onaylaması gerekmektedir. Bu onay ve iletim aşaması Avakadoo sistemi için belirli maliyetler oluşturmaktadır. Taleplerin firmalara iletilmesi için sms atılması veya mail atılması maddi olarak bir maliyet oluşturur. Burada amaç bu iletimlerden sonra mümkün olan en çok firmanın talebe cevap vermesidir. Çünkü firmalara bu talepleri satın alarak bir teklif oluşturabilirler. Her teklif sistem için bir gelir oluşturur. Taleplerin gönderimini minimuma gelen teklifleri de maksimuma yaklaştırmak gerekmektedir. Bu şekilde sistem kar/zarar oranını arttırmış olur.

Dataların Toplanması:

Oluşan taleplere cevap verilmesi için firmalar tekliflerini yazıp talep eden kullanıcıya gönderirler. Bu şekilde kullanıcı bir kaynaktan birçok teklif alır ve almak istediği hizmet için kendisine bir yol haritası belirlemiş olur.

Bu aşamada bir problem daha ortaya çıkmaktadır. Firma sayısının artması, teklif sayısının artmasına neden olacaktır. Belirli bir sayının üzerinde bir teklif sayısı ise Avakadoo sitesi için daha fazla kazanç anlamına gelse de kullanıcı memnuniyeti düşünülünce, sistemi kullanan kullanıcı için oldukça karışık bir duruma olacaktır. Burada asıl amaçlanan kullanıcıları aradıkları hizmete en kısa yoldan ulaşmak ilkesinin dışına çıkmaya çalışılacaktır. Bu karışıklık kısa vadede kazançlı gibi gözükse de karmaşadan hoşlanmayan kullanıcıların uzun vadede sistemden ayrılmasına neden olacaktır.

Uygulama içinde “setData.js” dosyası ile DB den ilgili verileri analiz edip çıktıları .csv dosya formatında /data klasörünün içeresine hazırlamaktadır.

2. Algoritma yapıları:

a. Karar Ağacı Algoritmaları:

Karar ağacı algoritmaları tanım olarak;

Bir işletme yönetimi tarafından tercihlerin, risklerin, kazançların, hedeflerin tanımlanmasında yardımcı olabilen ve birçok önemli yatırım alanında uygulanabilen, birbirini izleyen şansa bağlı olaylar ilgili arka çıkan çeşitli karar noktalarını incelemek için kullanılan bir tekniktir.

b. Entropi Kavramı:

Entropi veri madenciliği içerisinde kısaca veriler içindeki kaos-düzensizlik belirteci olarak algılanabilir. ID3 Karar ağacı algoritmasında düzgün ve düzensiz veriler arasındaki bağlantıları inceleyerek düzenli bir yapı oluşturulmaya çalışılmıştır.

3. Kullanılan Teknolojiler

a. Yazılım Teknolojileri:

Avakadoo web uygulamasındaki genel yazılım dili javascript olarak belirlenmiştir.

Avakadoo web uygulamasındaki genel teknoloji ise back-end yapısı Nodejs ile geliştirilmiş front-end yapısı için ReactJS kullanılmıştır.

Nodejs birçok alanda esneklik sağlamakla birlikte bu konuda birçok kütüphaneye erişim de sağlamaktadır.

Ancak uygulamada kullanılan karar ağacı algoritması yeniden tasarlanıp kendi uygulamamıza uygun geliştirilmiştir.

b. Web Teknolojileri:

Uygulamada kullanılan web teknolojileri ise React Framework ile hazırlanmıştır. React JSX — CSS ile hazırlanan kısımlar olsa da genel olarak CSS için Bootstrap kütüphanesinden yararlanılmıştır. React yapısı Nodejs ile hazırlanmış bir API JSON data formatı üzerinden bilgi alışverişi yapmaktadır. Uygulamanın Mobil versiyonu Android üzerinde hazırlanmaktadır.

c. DB Teknolojileri:

Database için NoSQL tabanlı MongoDB kullanılmıştır. MongoDB JSON veri kümelerini barındırabilmesi Uygulamada karar ağaçları için elde edeceğimiz data setlerini hazırlamada büyük kolaylıklar sağlamaktadır.

d. Uygulama Linkleri:

Üretilen Karar ağacı algoritması açık kaynaklı olarak yayınlanmaktadır.

https://github.com/codie1982/DecisionTree adresinden incelenebilir.

4. Karar Ağacının oluşturulması

a. Data setlerinin Elde edilmesi

Data Setleri hazırlanırken DB üzerinde girilen veriler dikkate alınmıştır. Kullanıcıların oluşturdu talepler ve firmaların verdikleri teklifler dikkate alınmıştır.

Uygulama içerisinde /data klasörünün içerisinde “.csv” formatında saklanmaktadır.

Mevcut çalışma temizlik iş koluna ait olduğunu başta belirtilmişti.

Bu kısımda her bir firma için data seti ayrı olarak oluşturulmuştur.

A Firması için oluşturulan Data seti adımları ve örneği aşağıdaki gibidir.

1. Aşamada ; Temizlik iş koluna ait talep formu üzerindeki sorular data setlerin başlıkları olarak kabul edilmiştir. Yaklaşık 20 farklı soru tipi üzerinden aşağıdaki gibi başlıkları oluşturulmuştur.

2. Aşamada oluşturulan talepleri data olarak eklemeye başlanmıştır.

3. Aşamada hedef olarak bu firmanın bu talebe cevap verip vermediğini incelenmiştir. Bu şekilde eğer cevap verdiyse veriyi “EVET” olarak eğer cevap vermediyse “HAYIR” olarak sınıflandırılmıştır.

4. Bu şekilde firmanın son 50 adet talebe verdiği tepkileri inceleyerek bir data set oluşturmuştur. Mevcut algoritmaya göre data üzerinde bir mapping işlemi yapılamasına gerek yoktur.

b. Algoritma Yapısı :

Karar ağacının oluşturulmasını sağlayan algoritma mevcut kaynaklardan elde edilen bilgiler ışığında hazırlanmıştır. Öncelikle Kök bileşenin bulunması için tüm veri içinde entropiler hesaplanmış.

Formülü ile hesaplanan entropi değerleri üzerinde kazançlar elde edilmiş ve en yük sek kazanç değerleri kök olarak belirlenmiştir.

Daha sonra veriler gruplandırılarak ve data seti güncellenerek entropi değerleri tekrar tekrar hesaplanmış ve alt dallanmalar bulunmuştur. Artık gruplanacak data kalmayana kadar algoritma tekrar edilmiştir. “EVET” hedef bileşeni farklı veriler içermediği anda ise dallanma bitirilmiştir.

Sonunda JSON temelli bir karar ağacı oluşturulmuştur.

Uygulama içerisinde decision.js dosyası ile /data klasörünün içerisinde hazırlanmış .csv dosyalarının incelenip /tree klasörü içeresine .tree uzantılı dosya olarak JSON formatında recusive bir yapı ile eğitilmiş model oluşturulur.

c. Algoritma Hataları:

Oluşturulan algoritma bazı durumlarda hataya düşmektedir. Bu hatalar genellikle aynı entropi değerine sahip veri kümelerinden oluşmaktadır. Aynı entropi değerlerine sahip veriler oluştuğunda en düşük entropi değerini seçemiyorsunuz ve dolayısıyla dallanma hatalı ilerliyor. Bu hatalı ilerleme ise herhangi bir sonuca varmıyor ve genel olarak “undefined” hatası ile sistem çökmeye uğruyor. Bu hatanın çözümünü mevcut kaynaklarda bulunmamıştır. Bu şekilde hata alındığında ise algoritma bir sonuca götürmemesi için dallanma boş bırakılmıştır. Bu algoritma gereği belirsizlik anlamına gelmektedir.

d. Karşılaşılan Sorunlar:

Karar ağacı algoritmasının sağlıklı karar alması için verinin kritik önemli olduğu biliniyor. Veri oluşturma aşamalarında verinin dengeli ve uyumlu olması gerekmektedir.

Öncelikle az sayıda talep ile karar ağacı oluşturulduğunda herhangi bir sonuç alınamadığını fark edilmiştir. Talep sayısını arttırdıkça karar ağacı dallanmaya başlamıştır.

Taleplerde sorulan sorular da ise seçenekler ne kadar fazla ise sonuçların o kadar kararlı oluşmasına neden olmaktadır. Bu sınıflandırma skorunu etkileyen diğer bir faktördür.

Üçüncü bir kriter olarak ise soru seçeneklerinin tüm sorular içinde ki oranları. Soru seçenekleri dengesiz olunca entropi değerleri doğal olarak az seçenekli olan sorularda daha düşük kalmaya başlıyor. Soru seçeneklerini ortalama 4–5 seçenek arasında tutarak bir data seti oluşturmaya dikkat etmek karar ağacı değerlerini dengeli ve daha başarılı olmasını sağlayacaktır.

5. Proje Sonuçları

a. Elde Edilen Sonuçlar:

Çalışma sonucunda firmalara ait karar ağacı modelleri elde edilmiştir. Bu şekilde elimizde eğitilmiş bir model bulunmaktadır. Bu eğitilmiş model ile bundan sonra gelen taleplere belirli tahminlerde bulunabiliriz.

Uygulama içinde guess.js dosyası DB ‘de bulunan henüz kapanmamış talepleri /tree klasörünün içerisinde firma isimlerine ait dosyaların karar ağacı modelleri ile karşılaştırıp bir tahminde bulunulabilir. Bu tahminler o firmanın o talebe cevap verip vermeyeceği ile ilgili olarak ;

tahminin “EVET” olmasına göre talebin firmaya ulaştırılması,

tahminin “HAYIR” olmasına göre herhangi bir listelemeye alınmaması şeklinde karar verilebilir. Bu şematik olarak gelen tüm taleplere uygulanabilir.

b. Yorumlar:

Elde edilen karar ağacı modeline göre firmaların taleplere teklif verip vermeyeceklerinin tahminleri uygulama içerisinde kullanıcıya gösterilebilir ve hangi firmaların talebe uygun olup olmadığı dinamik bir şekilde öğrenilebilir. Bu tahminlerin doğruluk oranları incelenebilir. Teklif vermeyecek firmalar için ise teklif vermelerini sağlayabilecek kampanyalar oluşturulabilir.

Bu şekilde taleplerin gönderim bedellerini optimize etmiş olur. Sistemi aktif kullanan üyeler ile aktif olmayan üyeleri birbirinden ayırıp daha iyi bir hedefleme mekanizması oluşturulabilir.

6. Projenin Genişletilmesi ve Faz 2 Çalışması için yapılabilecekler tartışması

Karar ağaçları modelleri ile oluşturulan başlangıç aşamasındaki yapay zekâ ve makine öğrenimi temalı çalışmaların devamı niteliğinde daha bakılacak birçok nokta olduğu ortaya çıkıyor.

Örnek olarak;

Taleplere cevap verecek firmaların hangi karar ağaçlarında uygun, hangi dallanma üzerinde ilerlediği hesaplanarak, kullanıcıya sorulacak soruları otomatik bir filtrelemeye tabi tutulabilir.

Taleplere cevap veren firmaların tekliflerine cevap veren kullanıcıların tepkileri araştırmaya eklenebilir ve kullanıcılar üzerinden bir karar ağacı da oluşturulabilir.

Gini veya C4.5 algoritmaları ile firmaların fiyat tahminleri daha hassas oluşturulabilir.

Sorular arasındaki yakınlık uzaklık etkileri incelenerek K-Means kümeleme algoritmaları ile sorular sınıflandırılabilir. KNN algoritmaları ile sisteme yeni giren firmaların sınıflandırılmaları irdelenebilir.

--

--