Download as pdf or txt
Download as pdf or txt
You are on page 1of 118

T.C.

BAHÇEŞEHİR ÜNİVERSİTESİ

BANKA VERİLERİYLE ÜRÜN ÖNERİ SİSTEMİ

Yüksek Lisans Tezi

EKİN ERDOĞDU

İSTANBUL, 2020
T.C.
BAHÇEŞEHİR ÜNİVERSİTESİ

FEN BİLİMLERİ ENSTİTÜSÜ


BİLGİ TEKNOLOJİLERİ

BANKA VERİLERİYLE ÜRÜN ÖNERİ


SİSTEMİ

Yüksek Lisans Tezi

EKİN ERDOĞDU

Tez Danışmanı: DR. ÖĞR. ÜYESİ ÖZGE YÜCEL KASAP

İSTANBUL, 2020
T.C.
BAHÇEŞEHİR ÜNİVERSİTESİ

FEN BİLİMLERİ ENSTİTÜSÜ


BİLGİ TEKNOLOJİLERİ

Tezin Adı: Banka Verileriyle Ürün Öneri Sistemi


Öğrencinin Adı Soyadı: Ekin ERDOĞDU
Tez Savunma Tarihi: 24.06.2020

Bu tezin Yüksek Lisans tezi olarak gerekli şartları yerine getirmiş olduğu Fen Bilimleri
Enstitüsü tarafından onaylanmıştır.

Doç. Dr. Burak KÜNTAY


Enstitü Müdürü

Bu tezin Yüksek Lisans tezi olarak gerekli şartları yerine getirmiş olduğunu onaylarım.

Bu Tez tarafımızca okunmuş, nitelik ve içerik açısından bir Yüksek Lisans tezi olarak
yeterli görülmüş ve kabul edilmiştir.

Jüri Üyeleri __ İmzalar

Tez Danışmanı ------------------------------------


Dr. Öğr. Üyesi Özge Yücel KASAP

Üye ------------------------------------
Dr. Öğr. Üyesi Betül Erdoğdu ŞAKAR

Üye ------------------------------------
Dr. Öğr. Üyesi Can RAZBONYALI
TEŞEKKÜR

Çalışma süresince bilgisi, yönlendirmesi ve yaklaşımıyla bana her zaman destek olan
değerli hocam Dr. Özge Yücel Kasap'a sonsuz teşekkürlerimi sunarım.
Çalışma hayatımda bana yön veren değerli arkadaşım Celal Bilici'ye, dostluğuyla her
zaman yanımda olan Meryem Akgül'e, çalışmam boyunca bana her zaman yardımcı
olan Fatih Erdoğdu’ya, beni motive eden arkadaşlarıma, yöneticilerime
Ve hayatımın her alanında desteklerini benden hiçbir zaman esirgemeyen en kıymetli
hazinem olan aileme teşekkürlerimle...

İstanbul, 2020 Ekin ERDOĞDU


ÖZET

BANKA VERİLERİYLE ÜRÜN ÖNERİ SİSTEMİ

Ekin ERDOĞDU

Bilgi Teknolojileri

Tez Danışmanı: Dr. Öğr. Üyesi Özge YÜCEL KASAP

Haziran 2020, 72 sayfa

Günümüzde internet kullanımının yaygınlaşması ve teknolojinin her geçen gün


ilerlemesiyle birlikte saniyeler içinde binlerce terabyte lık bilgi akışına erişebilmemiz
mümkün olmaktadır.

Bu bilgi yığınının içinde kaybolan kararsız müşteriler için karar vermek bir hayli
zorlaşmaktadır. Bu durumun bilincinde olan firmalar müşterilerini kaybetmemek ve
sektördeki rakiplerine karşı güçlü olabilmek için ürün tavsiye sistemlerini kullanmaya
başlamıştır. Ürün önerme sistemleri müşterilerin davranışlarını inceleyerek gelecekte
alabileceği ürün hakkında tahminler üretmeye çalışır. Şirketler için müşteri
memnuniyeti önemli bir konudur çünkü uzun vadede gelecek müşteri portföyü için bir
yatırım aracıdır.

Bu çalışma kapsamında ürün öneri sistemi Bankacılık sektörü alanında


değerlendirilmiştir. Bankacılık sektörünün rekabete açık bir alan olduğu göz önünde
bulundurulduğunda müşteri deneyimi, üzerinde yoğunlaşılması gereken bir konu
olarak karşımıza çıkmaktadır. Son zamanlarda popülerliği artan yapay zeka alanındaki
gelişmeler de bu konuya yeni bir bakış açısı kazandırıp, bankanın müşterilerine daha
kişiselleştirilmiş bir hizmet sunmalarına yardımcı olmuştur.

Çalışma sonucunda bir müşterinin aldığı ürünlere bakıp benzer davranışlara sahip diğer
müşterime hangi ürünleri önerebilirim sorusunun cevabı aranmaktadır.

Anahtar Kelimeler: Makine Öğrenmesi, Apriori, İşbirlikçi Filtreleme, Tavsiye


Sistemleri, Sankey Diyagram

iv
ABSTRACT

PRODUCT RECOMMENDATION SYSTEM WITH BANK DATA

Ekin ERDOĞDU

Information Technologies

Thesis Supervisor: Assist. Prof. Dr. Özge YÜCEL KASAP

June 2020, 72 pages

Today, with the widespread use of the internet and the advancement of technology, it
is possible to access thousands of terabytes of information within seconds.

For unstable customers who are lost in this pile of information, it becomes very difficult
to decide. Companies that are aware of this situation have started to use product
recommendation systems in order to avoid losing their customers and to be strong
against their competitors in the sector. Product suggestion systems examine the
behavior of customers and try to produce predictions about the future product.
Customer satisfaction is an important issue for companies because it is an investment
tool for the future customer portfolio in the long run.

Within the scope of this study, the product suggestion system has been evaluated in the
field of Banking sector. Considering that the banking sector is an area open to
competition, customer experience emerges as an issue to be focused on. The
developments in the field of artificial intelligence, which have gained popularity
recently, have also helped the bank to offer a more personalized service to its
customers.

As a result of the study, the answer to the question of which products can I recommend
to my other customer with similar behaviors is sought.

Keywords: Machine Learning, Apriori, Collaborative Filtering, Recommendation


System, Sankey Diagram.

v
İÇİNDEKİLER

TABLOLAR ................................................................................................................... ix
ŞEKİLLER ...................................................................................................................... x
KISALTMALAR .......................................................................................................... xii
SEMBOLLER .............................................................................................................. xiii
1.GİRİŞ ............................................................................................................................ 1
2.LITERATUR TARAMASI ......................................................................................... 6
2.1 ÜRÜN TAHMİNLEMEYLE İLGİLİ YAPILAN ÇALIŞMALAR……………..6
3. VERİ VE YÖNTEM ................................................................................................. 14

3.1 MAKİNE ÖĞRENMESİ ........................................................................................ 14


3.1.1 Gözetimli Öğrenme ( Supervised Learning) ...................................................... 15
3.1.2 Gözetimsiz Öğrenme ( Unsupervised Learning) ............................................... 15
3.1.3 Pekiştirmeli Öğrenme ( Reinforcement Learning) ........................................... 16

3.2 VERİ MADENCİLİĞİ ........................................................................................... 16


3.2.1 Verinin Toplanması ............................................................................................. 17
3.2.2 Verileri İşleme ...................................................................................................... 17
3.2.2.1 Anaconda Navigator…………………………………………………………..17
3.2.2.2 NumPy, Pandas, Scikit-Learn, MatPlotLib, Plotly Kütüphaneleri………..18
3.3 VERİ MADENCİLİĞİNDE KULLANILAN MODELLER VE TEKNİKLER
………………………………………………………………………………………… 19
3.3.1 İlişkilendirme Analizi ve Birliktelik Kuralları………………………………. 19
3.3.2 Pazar Sepet Analizi……………………………………………………………. 22
3.3.3 Birliktelik Kuralları Ölçütleri………………………………………………... 22
3.3.4 Birliktelik Kurallarının Belirlenmesi İçin Kullanılan Algoritmalar………. 23

3.3.4.1 Apriori Algoritması…………………………………………………………. 23

3.3.4.2 Apriori Algoritması Tanımlamaları……………………………………….. 25

3.4 TAVSİYE SİSTEMLERİNDE MAKİNE ÖĞRENMESİ……………………. 26

3.4.1 İçeriğe Dayalı Filtreleme Sistemleri (Content-Based Filtering Systems)….. 27

vi
3.4.2 İşbirliğine Dayalı Filtreleme Sistemleri (Collaborative Filtering Systems) .. 29
3.4.3 Hibrit Tavsiye Sistemleri ..................................................................................... 33
3.4.4 Popülarite Tabanlı Tavsiye Sistemleri ............................................................... 33
3.5 TAVSİYE SİSTEMLERİNDE KARŞILAŞILAN ZORLUKLAR…………… 33
3.6 TAVSİYE SİSTEMLERİNDE UZUN KUYRUK ( LONG TAIL)…………… 35
3.7 WEKA…………………………………………………………………………….. 36
4.UYGULAMA .............................................................................................................. 41

4.1 İŞİN VE VERİNİN ANLAŞILMASI .................................................................... 42

4.2 VERİNİN HAZIRLANMASI ................................................................................ 42

4.3 WEKA İLE APRİORİ ALGORİTMASININ UYGULANMASI…………….. 46

4.4 İŞBİRLİKÇİ FİLTRELEME ................................................................................ 51

4.5 APRİORİ ALGORİTMASI ................................................................................... 53

4.6 VERİ GÖRSELLEŞTİRME .................................................................................. 54


5.BULGULAR ............................................................................................................... 56
5.1 HİBRİT SİSTEMİN SONUÇLARI…..…………………………………...……. 56
5.2 HİBRİT SİSTEMİN ÖLÇÜM METRİKLERİ………………………………... 61
5.3 WEKA İLE APRİORİ ALGORİTMASI UYGULANAN SİSTEMİN
SONUÇLARI ……………………………..…...…………………………………….. 65
5.4 SANKEY DİYAGRAMI İLE VERİ GÖRSELLEŞTİRME………………….. 70
6.TARTIŞMA VE SONUÇ………………………………………………………….. 71

KAYNAKÇA…………………………………………………………………………. 73
EKLER
Ek A.1 min_support değerinin hesaplanması........................................... 82
Ek A.2 Ürün 14’e benzeyen 15 adet ürün................................................. 83
Ek A.3 Cosine Similarity benzerliğinden yararlanılarak bulunan
benzer müşteriler.......................................................................................... 84
Ek A.4 Benzer ürünleri alan müşteriler için verinin Apriori
algoritmasına uygun hale getirilmesi.......................................................... 86
Ek A.5 Hibrit model için min_support değerinin hesaplanması............ 87
Ek A.6 Apriori algoritması......................................................................... 88
Ek A.7 Sankey diyagramı........................................................................... 89

vii
Ek A.8 Hibrit sistemin test müşterisi için performansı.......................... 93
Ek A.9 %30 Test verisiyle hibrit sistemin doğruluk oranı
Performansı……………………………………………………………...... 94
Ek A.10 %30 Test verisiyle hibrit sistemin hassasiyet oranı
performansı ................................................................................................. 95
Ek A.11 %30 Test verisiyle hibrit sistemin hatırlama oranı
performansı……………………………………………………………….. 96
Ek A.12 %30 Test verisiyle hibrit sistemin f1-score oranı
performansı……………………………………………………………...... 97
Ek A.13 Weka Apriori algoritmasının test müşterisi için
performansı……………………………………………………………….. 98
Ek A.14 %30 Test verisiyle Weka Apriori algoritmasının
performansı……………………………………………………………..… 99
Ek A.15 %30 Test verisiyle Weka Apriori algoritmasının
hassasiyet oranı performansı…………………………………………… 100
Ek A.16 %30 Test verisiyle Weka Apriori algoritmasının
hatırlama oranı performansı………………………………………….... 101
Ek A.17 %30 Test verisiyle Weka Apriori algoritmasının
f1-score oranı performansı……………………………………………... 102

ÖZGEÇMİŞ……………..……………………………………………………….... 103

viii
TABLOLAR

Tablo 3.1: Tabular Veri Set…………………………….……...……………………….24


Tablo 3.2: Transactional Veri Seti……………………………....……………...……….25
Tablo 4.1: Her Bir Ürün İçin Bulunan min_support Değerleri………...………………..47
Tablo 4.2: min_support Değerinin Üzerinde Kalan Ürünler……………...………...…..48
Tablo 4.3: Ürünlerin Toplamı…………………………………………..……………....49
Tablo 4.4: Ürün14’e Benzeyen Ürünler……………………..………………………....52
Tablo 4.5: Hibrit Modelde Her Bir Ürün İçin Bulunan min_support Değerleri……........53
Tablo 4.6: Hibrit Model İçin min_support Değerinin Üzerinde Kalan Ürünler……........54
Tablo 5.1: Test Müşterisi 272479359’un Aldığı Ürünler………………………......…...57
Tablo 5.2: Test Müşterisi 272479359 İçin Confusion Matrix…………………...………61

ix
ŞEKİLLER

Şekil 3.1: Anaconda Navigator arayüzü...................................................................... 18


Şekil 3.2: Amazon’un kullandığı tavsiye sistemi örneği ............................................ 21
Şekil 3.3: Apriori algoritması flow chart diyagramı ................................................... 23
Şekil 3.4: Tavsiye sistemlerinin sınıflandırılması ....................................................... 27
Şekil 3.5: İçeriğe dayalı filtreleme sistemleri çalışma prensibi .................................. 28
Şekil 3.6: İşbirliğine dayalı filtreleme sistemleri çalışma prensibi ............................. 30
Şekil 3.7: Uzun kuyruk grafiği .................................................................................... 35
Şekil 3.8: Weka ana menü........................................................................................... 37
Şekil 3.9: Preprocess panel ......................................................................................... 38
Şekil 3.10: Experimenter panel ................................................................................... 38
Şekil 3.11: Knowledgeflow panel ............................................................................... 39
Şekil 3.12: Workbench panel ...................................................................................... 40
Şekil 3.13: Simple CLI panel ...................................................................................... 40
Şekil 4.1: CRISP-DM adımları ve akışı ...................................................................... 41
Şekil 4.2: Veritabanına data import etme işlemi ......................................................... 43
Şekil 4.3: Banka verilerinin içeriği ............................................................................. 44
Şekil 4.4: Sorgu sonucu oluşturulan yapı.................................................................... 45
Şekil 4.5: WEKA’da görünüm .................................................................................... 50
Şekil 4.6: WEKA’da metriklerin yazılması ................................................................ 51
Şekil 5.1: Müşteri benzerliği için yapılan Cosine Similarity sonuçlarının bir
kısmı………………………………………………………………………..………..57
Şekil 5.2: Hibrit Sistemin Test Müşterisi 272479359 İçin Performans Metrikleri ..... 63
Şekil 5.3: Confusion Matris ........................................................................................ 63
Şekil 5.4: Hibrit Sistemin Test Seti İçin Performans Metrikleri ................................. 64
Şekil 5.5: Hibrit Sistemin Test Seti İçin Toplam Hassasiyet Oranı (Precision) ......... 64
Şekil 5.6: Hibrit Sistemin Test Seti İçin Toplam Hatırlama Oranı (Recall) ............... 64
Şekil 5.7: Hibrit Sistemin Test Seti İçin Toplam F1-Score Oranı (Recall) ................ 65
Şekil 5.8: Weka’da Bulunan Kurallar ......................................................................... 66
Şekil 5.9: Weka Apriori Algoritmasının Test Müşterisi 272479359 İçin Performans
Metrikleri..................................................................................................................... 66

x
Şekil 5.10: Weka Apriori Algoritmasının Test Seti İçin Performans Metrikleri ........ 67
Şekil 5.11: Weka Apriori Algoritmasının Test Seti İçin Toplam Hassasiyet Oranı
(Precision) ................................................................................................................... 67
Şekil 5.12: Weka Apriori Algoritmasının Test Seti İçin Toplam Hatırlama Oranı
(Recall) ........................................................................................................................ 68
Şekil 5.13: Weka Apriori Algoritmasının Test Seti İçin Toplam F1-Score Oranı...... 68
Şekil 5.14: Değerlendirme Sonuçları .......................................................................... 68
Şekil 5.15: Değerlendirme Grafiği .............................................................................. 69
Şekil 5.16: Sankey Diyagramıyla Veri Görselleştirme ............................................... 70

xi
KISALTMALAR

AC : Associative Classification
ARFF : Attribute Relationship File Format
CBA : Classification Based on Association
CF : Collaborative Filtering
CRISP-DM : Cross-Industry Standard Process for Data Mining
EM : Enterprise Miner
KNN : K Nearest Neighborhood
KVKK : Kişisel Verilerin Korunması Kanunu
MCAR : Multi-class Classification Based On Association Rule
RIPPER : Repeated Incremental Pruning to Produce Error
Reduction
RFM : Recency Frequency Moneatry Analysis
SAS : Statistical Analysis System
SPSS : Statistical Package for the Social Sciences Programme
SVM : Support Vector Machine
WEKA : Waikato Environment for Knowledge Analysis

xii
SEMBOLLER

Distance :d

Öğe hakkında değerlendirmede bulunan, k yakın kullanıcılar kümesi: 𝑁𝑢𝑖 (k)

u kullanıcısının i öğesi hakkında değerlendirme puanı : 𝑟𝑢𝑖

u ve v kullanıcıları arasındaki benzerlik : sim(u,v)

u ve v kullanıcılarının değerlendirme puanlarının ortalaması : µu ve µv i

xiii
1.GİRİŞ

Bankacılık sektörü sadece para ve bunlarla ilgili işlemler değildir. Sigorta birimi,
pazarlama, satış, bilgi teknolojileri gibi büyük alanlardan oluşur. Teknolojiyi
sürekli takip etmek, kendini güncel tutmak zorunda olan bir alandır. Bu alanların
her biri maliyetleri optimize ederek ve performanslarını artırarak güncel
teknolojiyi takip edip aynı zamanda rakiplerinden öne çıkmayı amaçlar.
Hizmetlerin, aslında veriyi koruyarak işlemek, yönetmek amacıyla insanlar
tarafından işlenmesiyle birlikte her kurumun kendine ait bir kurum kültürünün
birikimine sebep olmuştur. Gelişmiş bilgi birikimi ve sürekli büyüyen veriyi
anlamlandırmak, daha bilimsel yaklaşım gerektiren istatistiksel hesaplamalar,
anlık verilerin işlenmesi noktasında bilgisayar programlarının kendi başlarına
öğrenebilme ve zamanla gelişebilme kabiliyeti büyük şirketlerin yapay zeka ve
makine öğrenmesi teknolojilerine ilgi duymaya başlamasına sebep olmuştur.
Makine öğrenimi verileri işlerken olayları tek yönlü ele almaz. Denklemleri
otomatik olarak en iyi deseni saptamak için ayarlar ve hangi algoritmanın daha
iyi çalıştığını test ederek sonuca ulaşmaya çalışır.
Bazı bankalar, odak noktasına müşteri, pazar payı ve marka geçmişinden oluşan
riskleri geleneksel yöntemlerle yerleştirip ilerlerken, yeni nesil bankalar odak
noktasına müşteri deneyimini alarak, düşük maliyetle kısa zamanda daha fazla
ürün sunup çevik stratejiyle ilerlemektedir. Teknolojiye direnmek imkansız
olduğu için, bankalar açısından kaçınılmaz son müşteri kaybı yaşamaktır.
Gartner raporuna göre, 2020 yılına kadar bankaların ve işletmelerin yüzde
85’inin yapay zeka chatbotları yardımıyla müşteri bağlılığını sağlayacağı
belirtilmiştir. Juniper’ın araştırması da 2022 yılına kadar maliyet tasarrufunun
chatbotlarla 8 milyar dolara yakın olacağı yönündedir.1

1
https://chatbot.com.tr/bankacilik-sektorunde-yapay-zeka-teknolojisinin-onemi/

1
Türkiye’de bankaların yüzde 13’ü müşterilerine çeşitli platformlardan chatbot
deneyimi sunduğu, yüzde 9 ‘unun bu konuyla ilgili olarak projelerine devam
ettiği, yüzde 20’sinin de iki yıllık stratejik planlarına dahil ettiği bilinmektedir.
Chatbot’un raporunda müşterilerin bu teknolojiyi sosyal sohbetler (yüzde 8),
kredi faizi hesaplama (yüzde 11), kredi kartı bilgisi alma (yüzde 7) , kur/hisse
senedi bilgisi alma (yüzde 4), vadeli mevduat hesaplaması (yüzde 15)
alanlarında kullandığı açıklanmaktadır.2

Medici Research tarafından 2018 yılında yapılan araştırmaya göre daha çok
kurumsal bankacılık çözümlerine ağırlık veren BNP Paribas, Goldman Sachs,
Credit Suisse, Barclays gibi bankalar da yapay zeka çözümlerini
kullanmaktadır.3

Ülkemizde Denizbank’ı satın alan Rusya merkezli Sberbank’ta yapay zekayı


mobil bankacılık alanında kullanmaktadır. Bankanın müşterilerine finansal
durumlarını ve yaşam biçimlerini dikkate alarak tavsiyelerde bulunan kişisel
asistan, makine öğrenmesi algoritmalarını kullanarak kendini sürekli
geliştirmektedir.
Accenture tarafından yapılan çalışmada şirketler içinde insanları güçlendirmek
için teknolojiyi kullanma üzerine odaklanılmış ve Technology Vision 2017
raporuna göre insan ve teknoloji birleşimi olarak bankacılık sektöründe rekabet
konusunda avantaj sağlayacak bir alan olduğu sonucu çıkarılmıştır.4
Bankalar için veriyi anlamlandırmak ve müşterilerine öneriler sunmak, verinin
gizliliği ve kendi planlarını da bu veriler doğrultusunda yapmak çok önemlidir.
Anlık veriler işlenerek müşterinin davranışlarına özel teklifler sunmak, alışveriş
yaptığında anlaşmalı üye iş yerlerinin avantajlarını sunmak çalışmalarından
birkaçıdır.

2
https://www.cbot.ai/tr/turkiyedeki-banka-musterileri-chatbot-iletisimini-benimsedi/
3
https://fintechistanbul.org/2018/05/02/bankalar-yapay-zekayi-ne-icin-kullaniyor/
4
https://www.accenture.com/t20170322T205838__w__/us-en/_acnmedia/PDF-47/Accenture-
Banking- Technology-Vision-2017.pdf#zoom=50

2
Müşteriler, kendi alışkanlıklarına uyan ve kolay kullanabildikleri avantaj elde
ettikleri sistemleri kullanmaya eğilimlidir. Burada bankaların yarış içinde
oldukları konu müşteriyi elinde tutmaktır.
Bir banka müşterilerinden özel bilgilerini doğrudan alamayabilir. Ancak
müşterilerin işlem geçmişinden yararlanılarak davranışsal özelliklerini,
alışkanlıklarını farkında olmadan dolaylı olarak bankayla paylaştığı
görülmektedir . Bu işlenmemiş veriler içinde müşteri ve piyasayla ilgili pek çok
bilgi bulunabilir. Bu bilgiler çevrimiçi kredi ararken müşteri davranışından kredi
değerini belirlemek için kullanılan veriler veya bir müşteriye kasko teklifi
önerirken sigortalının kaza yapma ihtimalini ya da hasar maliyetini öngörecek
ve müşteriyi riskli müşteri kategorisine sokacak karmaşık pek çok bilgi
içerebilir. Veri Bilimi bu noktada müşterinin tanınması ve segmentasyonunun
belirlenmesi, piyasa analizi ve hizmetlerin doğru müşteriye doğru bir şekilde
önerilmesini kolaylaştıran makine öğrenmesi ve yapay zeka teknolojileriyle
bütünleşebilen bir alan olarak karşımıza çıkmaktadır.
Doğru bir şekilde planlanması yapılan makine öğrenmesi algoritmalarıyla
bankalar karlılıklarını önemli ölçüde artırabilir. Milyonlarca müşterinin yaş, iş,
cinsiyet, finansal durumları, sigorta bilgileri makine öğrenmesi algoritmalarıyla
sürekli analiz edilerek temel eğilimleri belirlenir. Müşteriler için bireysel risk
planlaması çıkarılabilir, kişiselleştirilmiş sigorta profili oluşturularak yeni ve
eski müşterilere ne tür öneriler yapılabileceği çıkarılır.
Robo-Danışmanlar da makine öğrenmesinin yaygın kullanıldığı bir
uygulamalardandır. Müşterinin yatırım portföyünü oluşturmak ve yönetmek için
kullanılır. Müşteriyi varlıkları ve belirlediği hedefe göre risk tolerans profilini de
göz önünde bulundurarak çeşitli yatırım seçeneklerine yönlendirir.
Makine öğreniminin bankacılıkta kullanıldığı önemli alanlardan biri de
sahtekarlık tespitlerinin önlenmesi konusundadır. Sistemler anormallikleri tespit
edip bunları güvenlik ekipleri için işaretleyebilir. Yapılan işlemleri hesap
geçmişiyle karşılaştırarak hileli olma durumunu değerlendirebilir.
Web siteleri ve mobil uygulamalarda sıkça karşımıza çıkan chatbotların amacı
da kullanıcı deneyimini geliştirmektir. Müşteri hizmetleri ve çevrim içi
kanallarda maliyeti düşürmek ve kısa sürede hizmet sağlamak konusunda

3
chatbotlardan faydanılmaktadır.

Görüntü tanıma, kredi kartı tarama işlevselliği alanlarında da makine


öğreniminden yararlanılır. OCBC Bank, mobil uygulamalarında Apple Iphone
X kullanıcıları için 2017’den beri yüz tanıma özelliğini kullanmaktadır.
Kart tarama, çalınan kartların kullanılmasını tanıyan kit sayesinde banka ve kredi
kartları için gerçek zamanlı işleme özelliğine sahiptir.5
Bu teknolojiden kişiselleştirilmiş pazarlama stratejileri konusunda da yararlanan
bankalar müşterilerinin geçmişteki davranışlarını analiz ederek tahmin yapma
kabiliyeti geliştirmesi, başarılı pazarlamanın stratejisini oluşturmasının da
temelini atmaktadır. Bankalar öneri sunabilecekleri bu verileri müşterinin web
etkinliği, mobil uygulama kullanımı, yaş, cinsiyet, meslek gibi demografik
bilgileri, harcama alışkanlıklarını ve ürün satın alma davranışlarını inceleyerek
müşteri için pazarlama stratejisinin etkinliğini belirleyebilir.
Bu tez çalışmasında; Python programlama dili kullanılarak analiz sistemi
geliştirilmiş, işbirlikçi filtreleme yöntemiyle birlikte veri madenciliği
tekniklerinden biri olan birliktelik algoritmasından Apriori tekniği kullanılarak
müşterilere bankacılık ürün önermesi yapılması amaçlanmıştır. Lee C. H., Rhee
P. K., Kim Y. H. web kişiselleştirme alanında yaptıkları çalışmalarında işbirlikçi
filtreleme ve apriori algoritmasını kullanarak elektronik işletmelere mevcut
müşterilerini korumak ve yeni müşteri kazanabilmeleri için bir yaklaşım
sunmuşlardır (Lee, Rhee, Kim, 2001, ss. 131-137). Bu tez çalışması sözü edilen
yaklaşımın bankacılık sektöründe çalışılması üzerinedir.
Tezin literatür taraması bölümünde Dünya’da ve Türkiye’de benzer çalışmalar
araştırılmış, veri ve yöntem bölümünde makine öğrenmesi, veri madenciliği ve
veri madenciliğinde kullanılan modeller hakkında bilgi verilmiş algoritmalar
açıklanmıştır.

5
https://www.altexsoft.com/blog/datascience/machine-learning-use-cases-in-finance/

4
Uygulama bölümünde elimizdeki verinin kullanılabilir hale gelmesi için yazılan
algoritmalardan bahsedilmiş, bulgular bölümünde bu algoritmaların sonuçları
değerlendirilmiş ve veri görselleştirilmesi yapılmıştır.
Tezin son bölümü olan tartışma ve sonuç kısmında ise çalışmada çıkan sonuçlar
yorumlar gelecek çalışmalara hangi konuda yol gösterebileceği belirtilmiştir.

5
2. LITERATUR TARAMASI

Günümüzde teknolojinin gelişmesiyle birlikte insanı ilgilendiren her alanda


verinin elde edilmesi, anlamlandırılması, işlenmesi gittikçe önem
kazanmaktadır. Şirketlerin teknolojiye ayak uydurmaları, değişime ve
yeniliklere kolay adapte olabilmesi rakiplerine karşı büyük avantajlar elde
etmelerine olanak sağlamaktadır. Tüm bu gelişmeler ışığında makine öğrenmesi
bu verilerden beslenebilecek, anlamlı sonuçlar çıkarabilecek bir alan olarak son
yıllarda öne çıkmaktadır.

2.1 ÜRÜN TAHMİNLEMEYLE İLGİLİ YAPILAN ÇALIŞMALAR

Ürün öneri ve tahminleme sistemlerinde Yabancı ve Türkçe kaynaklarda pek çok


çalışma bulunmaktadır. Literatür taraması kapsamında iki metriğe
odaklanılmıştır: Apriori algoritması ve ilişkisel sınıflandırma madenciliği
yaklaşımı, birliktelik kuralları.

Euiho Suh, Hyunseok Hwang, Seungjae Lim, Suyeon Kim çalışmalarında


internette anonim müşterilerin satın alma olasılıklarını tahmin etmeye
çalışmışlardır. Bunun için çeşitli tüketici ürünleri satan Kore'deki büyük bir
İnternet alışveriş sitesinden Web günlüğü verileri üzerinde çalışmışlardır.
Çalışmaları Faz 1 ve Faz 2 olmak üzere temel iki gruba ayrılmaktadır. Faz 1'de
satın alma modeli, Faz 2'de satın alma olasılığıyla pazarlama eylemine
odaklanmışlar, Faz 1'deki satın alma modelini seçmek için ilişkilendirme kuralı
algoritmalarından Apriori'yi kullanmışlardır. Faz 2 bölümünde tahmin modeli
için Karar Ağacı, Yapay Sinir Ağı ve Lojistik Regresyon modellerini birleştiren
hibrit bir yaklaşım sunmuşlardır. Hibrit yaklaşım diğer yöntemlere göre daha iyi
performans sunmuştur (Suh, Hwang, Lim ve Kim 2004, ss. 245-255).

Müşterilerin satın alma davranışları zaman içinde değişebilir. Geleneksel


işbirlikçi filtreleme yöntemleri bu durumu dikkate almaz. Ancak sıralı kural
tabanlı öneri yöntemi satın alma davranışını zaman parametresini de göz önünde

6
bulundurarak inceler. Ama bu yöntem de, cari dönemdeki verileri kullanmaz. Bu
sebeple Duen-Ren Liu, Wang-Jung Lee, Chin-Hui Lai çalışmalarında hem
zaman parametresini hem de cari dönemdeki satın alma verilerini de dikkate
alacak şekilde; İlişkilendirme kuralını bulmak için Apriori algoritmasını,
tahminleme çalışması için de Segmentasyon Tabanlı Sıralı Kural ve
Segmentasyon Tabanlı KNN-CF yöntemini birleştirerek hibrit yöntem
sunmuşlardır (Liu, Lee ve Lai 2009, ss. 3505-3519).

Dongwon Lee, Sung-Hyuk Park, Songchun Moon fayda temelli ürün seti
madenciliği yaklaşımı üzerine çalışmışlardır. Bu çalışmayı yapmalarındaki
amaç mevcut ilişkilendirme kuralı madenciliğinin öğe sıklığına odaklanıp,
anlamsal öneminin göz ardı edildiğini düşünmeleriydi. Bu durum düşük
frekanslı öğelerin ihmal edilmesine yol açmaktaydı. Çalışma için Kore'deki bir
mağazanın süpermarket veritabanından 10 ay boyunca satın alma geçmişi verisi
almışlardır. Bu madencilik yaklaşımı büyük veritabanlarıyla çalışmak için yeni
budama stratejileri gerektirdiği için çalışma kapsamında yeni algoritmalar
geliştirmişlerdir (Lee, Park, ve Moon 2013, ss. 2715-2725).

Manpreet Kaur ve Shivani Kang yaptıkları çalışmayla ilişkilendirme kuralı


madenciliği kullanarak müşteri davranışını incelemeyi ve satışların artmasını
sağlamayı yeni bir algoritma geliştirerek açıklamaya çalışmışlardır. Support,
confidence ve lift gibi metrikler temelde iyi ilişkilendirme kurallarını bulur
ancak otomatik olarak verilerdeki değişiklikleri yakalayamamaktadır.
Önerdikleri algoritma ilişkilendirme kuralı madenciliğine ek olarak periyodik
madencilik de yapmaktadır. Değişim modelleme kavramına odaklanıp, dinamik
veriler üzerinde çalışmışlardır (Kaur ve Kang 2016, ss. 78-85).

Yuanchun Jian, Jennifer Shan ve Yezheng Liu'a göre mevcut çalışmalar bir öneri
sisteminin başarısını müşterinin bu ürünü satın alması olarak görmektedir.
Ancak tavsiye edilen ürünün satın alınması müşterinin bu üründen memnun
olduğu anlamına gelmemektedir. Bu çalışma kapsamında müşterinin profili ve
geri bildirimlerine de bakılarak daha verimli bir derecelendirme sınıflandırma

7
modeli önermektedir. Geleneksel yöntemler, birbirleriyle çelişen
derecelendirmeleri barındırmazlar ancak aynı tercihlere sahip müşteriler satın
aldıkları ürünlere farklı derecelendirmeler yapmış olabilir bu sebeple çok
sınıflı veriyi koruma konusunda yetersiz kalmaktadır. Bu çalışma
derecelendirme verilerinden çok sınıflı verileri çıkarma konusunda yeni bir
ilişkisel sınıflandırma yöntemi sunmaktadır (Jian, Shan ve Liu 2010, ss. 470-
479).
Francisco Guil ve Roque Marin sık kalıp madenciliği(frequent pattern) alanında
çalışmışlardır. Bu tip patternli madencilik için en uygun algoritma Aprioridir
ancak bu da çok fazla desenin ortaya çıkmasını sağlar. Bu da yorumlama sürecini
zorlaştırmaktadır. Çalışmalarında sık kullanılan kalıp kümelerini kanıt grupları
olarak ele almış ve bunlarla ilişkilendirme kuralları oluşturmayı amaçlamışlardır
(Guil ve Marin 2013, ss. 3121-3127).

Fadi Thabtah, Peter Cowling ve Suhel Hammoud ilişki kuralına dayalı çok sınıflı
sınıflandırma adı verilen MCAR, yeni bir ilişkilendirilebilir sınıflandırma
yöntemi sunmuşlardır.
Bu yöntemi bulmalarındaki amaç, diğer AC algoritmaları kuralı keşfetmek için
yatay düzen gösterimini kullanmaktadırlar ancak MCAR dikey yerleşim
gösterimini kullanmaktadır bu da veri seti içinde bir kez tarama yapılması
anlamına gelmektedir. Diğer yöntemler eğitim verilerinden birden fazla kez
geçerken MCAR rowId leri kullanarak her kural için eğitim örneklerini
bulmaktadır. 20 farklı veri setiyle yaptıkları çalışmayı C4.5, RIPPER, CBA
algoritmalarıyla kıyasladıklarında etkili sonuçlar almışlardır (Thabtah, Cowling,
Hammoud 2006, ss. 414-426).

Nan Chen Hsieh ise davranışsal puanlama modeliyle pazarlama stratejisi


geliştirmeyi hedeflemiştir. Bu çalışma için Tayvanlı kredi kartı düzenleyicisi
tarafından banka veritabanları sağlanmış, bu kapsamda veritabanındaki kalıplar
keşfedilmeye çalışılmıştır. Bankadaki müşterilerin hesabı ve işlem verileri
alınıp, sinir ağları ve ilişkilendirme kuralı indükleyicisi kullanarak iki aşamalı
davranışsal bir puanlama modeli oluşturmuştur. Müşterileri ortak davranış

8
özelliklerine göre gruplandırıp, çapraz satış yapmak ve tüketimi teşvik edip, iyi
müşteri ilişkileri kurma fırsatı sağlaması açısından banka veritabanları için iyi
bir yöntem sunmaktadır ( Hsieh 2004, ss. 623-633).

Tzung-Pei Hong, Chyan-Yuan Horng, Chih-Hung Wu, Shyue-Liang Wang


büyük öğe kümelerinde verimliliği artırmak için veri bağımlılığını da göz
önünde bulundurarak yeni bir algoritma sunmuşlardır. Minimum destek değeri
küçük olduğunda Apriori'ye göre daha iyi performansta çalışmıştır ( Hong,
Horng, Wu, Wang 2009, ss. 72-80).

Shu-Hsien Liao, Sui-Ping Huang, Chia-Lin Hsieh çalışmalarıyla yeni kozmetik


ürünlerinin geliştirilmesi ve pazarlanmasında müşterinin talepleri ve satın alma
desenleri göz önünde bulundurularak ürün haritası geliştirmek, veri madenciliği
yaklaşımlarını da kullanarak bir veritabanı entegrasyonuna odaklanmışlardır.
İlişkilendirme kurallarından Apriori'yi ve veri madenciliği işlevlerinden de SPSS
Clementine kullanarak pazarlama çözümleri için çalışma sonucunda çıkan
örüntü ve kuralların kullanılabileceğini savunmuşlardır ( Liao, Huang,
Hsieh2008, ss. 50-62).

Wen-Yu Chiang ise müşteri analitiği alanında sık kullanılan yöntemlerden biri
olan RFM skorlama tekniğini geliştirerek RFMDR modelini oluşturmuştur.
RFM, yenilik, frekans ve parasal kavramlarından oluşmaktadır. Chiang'ın
geliştirdiği modelde bu yöntemlere ek olarak D değişkeni indirim, R değişkeni
ise geri gönderim maliyeti olarak benimsenmiştir. Çalışmada online alışverişte
müşteri değerlerinin analiz edilmesine odaklanılmış, ilişkilendirme kuralı olarak
Apriori algoritması kullanılmış, veriler de anket yoluyla sağlanmıştır. Ankette
Tayvan'ın beş şehri için müşterilerin altı ay içinde alışveriş yapması
beklenmiştir. Çalışma sonucunda RFM modeli RFMDR modeli ile geliştirilmiş
ortaya çıkan yeni prosedürün pazarlama işlemlerine uygulanması hedeflenmiştir
(Chiang 2011, ss. 1716-1722).

Ding-An Chiang, Yi-Hsin Wang, Shao-Ping Chen çalışmalarında sık satın alınan

9
ürünlerin tekrar satın alınma davranışına odaklanmışlardır. Kozmetik
şirketinden toplanan verileri kullanarak, ilişkilendirme kurallarını çıkarmak için
Apriori algoritmasından yararlanılmış ve yeni bir metodoloji önerilmiştir
(Chiang, Wang, Chen, 2010, ss. 757-768).

Chih-Hao Wen, Shu-Hsien Liao, Wei-Ling Chang, Ping-Yu Hsu Tayvan'daki


lüks ürünleri satın alan müşteriler arasındaki ilişkiyi bulmak, tüketici davranışı,
marka tercihleri arasındaki örüntüyü çıkarmak için ilişkilendirme kuralları,
kümeleme analizi ve veri madenciliği yaklaşımlarını kullanmışlardır. İlişkileri
çözümleyebilmek için Apriori algoritmasını, kümeleme analizi için K-means
algoritmasını, veri madenciliği aracı olarak da SPSS Clementine kullanmışlardır
(Wen, Liao, Chang, Hsu, 2012, ss. 11257-11268).

Luis Cavique ise büyük veritabanlarında pazar sepet analizi ve çapraz satış
stratejilerinin uygulanması konusunda Apriori algoritmasının yetersiz kaldığını
düşünerek Similis algoritmasını geliştirmiştir (Cavique, 2007, ss. 400-407).

RFM analizi yenilik(R), frekans(F), parasal(M) metriklerine bağlıdır. RFM


analizine ek olarak pazar sepet analizi de müşteri ilişkileri yönetiminde sık
kullanılır. Cheng-Hsiung Weng'e göre madencilik sürecinde her müşteri
eşit ağırlıktadır ancak şirketlere karı düşünüldüğünde müşterilerin eşit ağırlıkta
olmadığı sonucuna varmıştır. Bu sebeple etkili pazarlama stratejisi sunmadan
önce müşteriyi değerlendirmek gerekir. Weng, müşteri gelirinin tahmini için FM
puanlamayla (frekans,parasal) sık öge kümelerinin keşfi için de yeni bir
algoritma önermiştir (Weng, 2017, ss. 85-97).

İlişkisel sınıflandırma madenciliği yaklaşımı, Aprori algoritması ve makine


öğrenimiyle ilgili Türkiye'de de pek çok çalışma yapılmıştır. Ali Cenk Gülce
çalışmasında sepet analizi uygulamalarında sıkça kullanılan Apriori
algoritmasını anket tarzındaki farklı veri topluluğuna uygulamıştır. Bunun için
futbol taraftar anketi verilerini toplamış ve çalışmasının sonucunda Apriori
algoritmasının farklı veri topluluklarında da ileriye yönelik başarılı tahminler

10
yapabileceğini kanıtlamıştır (Gülce, 2010).

Madencilik yaklaşımlarıyla tahminleme çalışmalarında Türkiye'de bankacılık


sektörü de göz önünde bulundurularak yapılan çalışmalar vardır. Bunlardan bir
tanesi de Kübra Şen'in bankacılık sektörü için müşteri terk tahmin modeli
üzerinde yaptığı çalışmadır. Müşterilerin bankadan ayrılmadan önceki 6
aylık periyottaki davranışlarını incelemiş, SAS EM(Enterprise Miner) 6.1
programını kullanarak karar ağacı, lojistik regresyon, yapay sinir ağları
teknikleriyle geliştirmiş, ayrıca WEKA 3.6 programnı kullanarak rasgele orman
tekniğiyle bir terk tahmin modeli üzerinde çalışmıştır (Şen, 2014).

Derya Ay, bir süpermarkete ait verileri inceleyip SPSS Clementine programı ve
Apriori algoritmasını kullanarak birlikte satın alınan ürünler üzerinden market
yerleşim düzeni önermiştir (Ay, 2009).

Tuğba Tosun, Yapı Kredi Bankası'nın kredi kartı müşteri verilerini inceleyerek
müşteri kayıplarının sebebi, kaybedilen müşterinin profili ve kaybın ne zaman
gerçekleştiğini tahmin etmeye çalışmıştır. Bu çalışmada karar ağacı yöntemini
kullanmıştır (Tosun, 2006).

Güneş Gürgen de Türkiye'deki marketlerden birinin satış gelirlerini artırmak için


7 günlük fişleri toplayarak ürünler arasında anlamsal ilişki bulmayı
hedeflemiştir.SPSS Clementine programını kullanıp, ürünlerin dağılımını analiz
ettikten sonra Apriori algoritmasını kullanmıştır (Gürgen, 2008).

Feridun Cemal Özçakır da Apriori algoritmasını bir pastane için satış verileri
üzerinde kullanmış,birlikte satın alınan ürünler içindeki benzerliği bulmayı
amaçlamıştır. Algoritmanın her aşamasında uygulanan işlemleri izleyebilmek
için de Microsoft .NET platformunda Microsoft Visual Basic.NET programlama
dili kullanarak web tabanlı bir uygulama yazılımı geliştirmiştir (Özçakır, 2006).

11
Ayşe Onat, Apriori algoritmasını uygulamak için ASP tabanlı bir web yazılımı
geliştirmiş, kullanıcı arama yaptığı anda işlemler veritabanına aktarılıp Apriori
algoritması uygulanmıştır. Çalışmada kullanıcının yaş, cinsiyet, eğitim durumu
vb. özelliklerine bakılarak kişilerin birbirleriyle olan uyumlulukları tahmin
edilmeye çalışılmış, kişinin aradığı özelliklere uygun olan farklı kişileri sürekli
sayfasında görmesi sağlanarak siteye olan üyeliğini devam ettireceği
düşünülmüş, bu şekilde siteye verilen reklam gelirlerinin artırılması
amaçlanmıştır. Aynı zamanda üye sayısının artırılması, kullanıcının sitede uzun
süre kalması için ne gibi promosyonlar yapılması gerektiği konusunda da
çalışmıştır (Onat, 2008).

Sinem Akbulut, bir kozmetik firmasının ayrılan müşterilerin özelliklerini


belirleyip, ayrılma eğilimi gösteren müşterileri elde tutmak için yapılacak
kampanya ve pazar stratejileri belirleme üzerinde çalışmıştır. Müşterilerin churn
davranışını WEKA kullanarak modellemiş sınıflama tekniklerinden Naive
Bayes, J.48 ve ID.3 Karar Ağaçları, Lojistik Regresyon, JRIP ve PART kuralları
ile sinir ağları algoritmalarını kıyaslamış, churn davranışı modellemek için J.48
algoritmasının verimli olduğuna karar vermiştir (Akbulut, 2006).

Yıldız Koçtürk ise çalışmasında müşteri bağlılık kavramını ortaya koyabilmek


için hangi durumlarda müşterinin kaybedildiğinin iyi analiz edilmesi gerektiğini
savunmuş bunun için de bireysel emeklilik sistemi verilerine, veri madenciliği
tekniklerini SAS Enterprise Miner yardımıyla karar ağacı algoritmalarını
uygulayarak modellemeye çalışmıştır (Koçtürk,2010).
Derya Gündüz ise pazar sepet analizi çalışmasında biraz daha farklı bir yöntem
izleyerek birliktelik kurallarını tekniklerinden Apriori algoritması ve Fp-Growth
algoritmasını kıyaslamıştır. Çalışma sonucunda küçük veri tabanalarında Apriori
algoritması daha performanslı çalışırken, büyük veri tabanlarında Fp-Growth
algoritması daha verimlidir. Ayrıca farklı destek değerleri değişiminden Fp-
Growth algoritmasının hızı çok etkilenmemiş ancak Apriori algoritması bu
değişimden çok etkilenmiştir (Gündüz, 2015).

12
Elif Şafak Sivri ise makalesinde e-ticaret sektöründeki verileri kullanarak
WEKA programı üzerinde Apriori ve Fp-Growth algoritmalarını lift değerlerine
göre analiz edip her ikisi için de ayrı ayrı birliktelik kuralları bulmuştur. Daha
sonra kümeleme analizi işlemi için K-means uygulayıp benzerlikleri bulmak için
de Jaccard, Cosine ve Pearson algoritmalarını kullanmıştır. Daha sonra bu analiz
sonuçlarının yüzde kaç doğrulukla çalıştığını araştırmıştır (Sivri, 2015).

Muhammet Sinan Başarslan ise müşteri kayıp analizini telekomünikasyon


sektörü üzerinde değerlendirmiş, sınıflandırmaya dayalı veri madenciliği tekniği
ve makine öğrenmesi algoritmalarıyla CRISP kullanarak modellemeye
çalışmıştır. Performans değerlendirmesinde karar ağaçları algoritmalarıyla
geliştirilen modeller C4.5 en iyi sonucu vermiştir (Başarslan, 2017).

Tuğçe Yüksel ise anlık sepet analizi yapabilmek için dağıtık sistemleri
kullanarak, tüm veritabanı içinde iki kez tarama işlemi yapıp büyük veri
tabanlarında daha hızlı sonuç üreten Fp-Growth birliktelik algortiması üzerinde
çalışmıştır (Yüksel, 2019).

Waleed Abdullah, Türk Parekende Şirketi'nin elektrikli ürünler satan veri setini
kullanarak ürünler arasındaki benzerlikleri bulmak için Apriori ve Fp-Growth
algoritmalarını uygulamıştır. İşbirlikçi filtreleme için benzerlik matrislerini
oluşturarak Cosinüs, Jaccard, Pearson benzerliklerini hesaplamıştır. KNN
algoritması ile tavsiye edilen ürünleri almış, analiz için WEKA ve Python
GraphLab kütüphanesini kullanmıştır. Python uygulamasını Jupyter notebook
içinde geliştirmiş Jaccard benzerliği ve Fp-Growth algoritmasının birlikte iyi
sonuçlar verdiğini gözlemlemiştir (Abdullah, 2019).

13
3. VERİ VE YÖNTEM

Bu çalışmadaki veriler özel bir bankanın veritabanından maskelenerek alınmış


verileri içermektedir. Veriler Excel formatında alınmış olup daha sonra Ms Sql
Server 2014 veritabanına aktarılmıştır. Çalışmada müşterilerin geçmişteki banka
ürünlerini satın alma davranışları analiz edilerek, tercih etme olasılığı yüksek
olan ürünler önerilmiştir. Bu kapsamda kullanılan veriler daha önce hiçbir
çalışmada kullanılmamış özgün verilerdir.
Filtrelenen veriseti içinden aynı segmentteki müşterilere önerilecek ürünü
birliktelik algoritmalarından Apriori algoritması ve İşbirlikçi Filtreleme
yönetimi birleştirilerek hibrit bir tavsiye sistemi geliştirilmiş, ortaya çıkan
algoritmanın doğru tahminleme oranı Weka’da karşılaştırılmıştır.

3.1 MAKİNE ÖĞRENMESİ

İnsanlar tecrübelerinden öğrenir, zamanla daha iyi hale gelir. Bilgisayarlar da


yazdığımız algoritmaları dolayısıyla kodları takip eder. Makine öğrenmesi
istatistikleri bir araya getirir ve bilgisayar bilimleri olmadan verilen görevi nasıl
yapacağını öğrenir, Arthur Lee Samuel' in de tanımladığı gibi "makine öğrenimi
bilgisayarlara, programlamadan öğrenme kabiliyeti kazandıran bir çalışma
alanı" dır.6
Arthur Lee Samuel (1901-1990) yapay zeka alanına büyük katkı sağlayan
Amerikalı bilim insanıdır. Geliştirdiği Samuel Dama Oyna Programı, dünya da
ilk başarılı kendi kendine öğrenebilen programlar arasındadır.7
Bilgisayarlar da insanlar gibi öğrenir yani deneyimle öğrenmek zorundadır
bilgisayar da tecrübelerden öğrenir sadece tecrübe yerine datalardan öğrenir
diyebiliriz, algoritmaları analiz edip hedefine ulaşıncaya kadar algoritmayı
değiştirebilir. Zamanla daha akıllı hale gelir.

6
https://issuu.com/oguzhancoban6/docs/__ltek_b__lten
7

https://www.researchgate.net/publication/224103240_Some_Studies_in_Machine_Learning_Usin
g_the_G ame_of_Checkers_II-Recent_Progress

14
Makine öğrenimini şu an da hayatımızda yaygın olarak kullanmakta olduğumuz
uygulamalar için de görebiliriz. Siri, insan etkileşimini taklit etmek için,
Facebook, tanıdık yüzleri önermek için, Netflix, beğeneceğimizi düşündüğü
filmleri bize sunarken, Spotify, bize uygun şarkı öneri listesini bize sunarken,
PayPal, dolandırıcılıkla mücadele etemek müşteri verilerini analiz edip riski
değerlendirirken makine öğrenmesini kullanmaktadır.
Makine öğrenmesi teknikleri de üç grup altında toplanmaktadır:

3.1.1 Gözetimli Öğrenme ( Supervised Learning)

İnputlara karşılık gelen outputları bilinen bir veriden yapılan öğrenmedir.


Gözetimli öğrenmede dataset her zaman etiketli olarak verilir. Bu öğrenme
şeklinde algoritma kalıpları tanımlar, gözlemleri öğrenir ve bunun sonucunda
tahminlerde bulunur. Bu işlem en yüksek performans sağlanıncaya kadar devam
eder. Gözetimli öğrenmenin uygulamaları tipik olarak üç grupta incelenir;
sınıflandırma, regresyon, tahmin.
En çok kullanılan algoritmalar; k-En Yakın Komşu (k-Nearest Neighbors),
Doğrusal Regresyon (Linear Regression), Lojistik Regresyon (Logistic
Regression), Destek Yöney Makineleri (Support Vector Machine - SVM), Karar
Ağaçları (Decision Trees), Rasgele Ormanlar (Random Forest), Bayes Mantığı,
Yapay Sinir Ağları'dır.

3.1.2 Gözetimsiz Öğrenme ( Unsupervised Learning)

Etiketlenmiş sonuçlar olmadan veri kümesinden kalıplar çıkarılır. Gözetimsiz


öğrenmede, outputları bilmediğimiz için değerlerin ne olabileceği hakkında
kesin bir fikrimiz yoktur. Bu sebeple veri kümesinin temel yapısını tahmin etmek
için kullanırılır. Bir algoritmaya eğitim seti olarak output değerleri olmadan
sadece input değerleri verilir. Kullanım alanını tipik olarak üç grupta
inceleyebiliriz: öbekleme (clustering), boyut azaltma (dimensionaly reduction),
birliktelik kuralları (association rule mining).
En çok kullanılan algoritmalar; Öbekleme için ; K-Merkezli Öbekleme (K-
Means), Beklenti Büyütme (Expectation Maximization). Boyut azalma için;
Temel Bileşen Çözümlemesi (Principal Component Analysis).

15
Birliktelik Kuralları için; Apriori, Eclat, Fp-Growth.

3.1.3 Pekiştirmeli Öğrenme ( Reinforcement Learning)

Bu öğrenme yaklaşımında makineye hangi işlemleri yapacağı aktarılmaz ancak


hangi işlemlerin en çok ödül aldığı önemlidir. Makine bu puanı en yüksek değere
çıkarmaya çalışır. Bu öğrenme türünde cevap yoktur, takviye ajanı ne
yapacağına karar verir ve eğitim seti olmadığı durumlarda deneyimlerden
öğrenir. Ancak karşılaştığı durumlarda daha çok ödül alabiliyorsa bu yöntemleri
de keşfetmektedir. Canlıların öğrenme yöntemlerine bezemektedir.

3.2 VERİ MADENCİLİĞİ

Veri madenciliği, büyük miktardaki veri yığınları arasından anlamlı bilgiye


ulaşma işidir. Teknolojinin gelişmesiyle birlikte, bunun sonucu olarak ortaya
çıkan verilerin depolanması gerekmektedir. Ancak verilerin tamamı tek bir
kaynaktan gelmemektedir. Sosyal medya paylaşımları, fotoğraf, log dosyaları
gibi farklı kaynaklardan farklı türlerdeki verilerin ayıklanarak anlamlı ve
kullanılabilir hale getirilmesi gerekir.8

Veri madenciliği farklı bilim dallarını da içinde barındıran bir çalışma alanıdır.
Makine öğrenmesi, istatistik, veri tabanı teknolojileri, görselleştirme gibi pek
çok tekniği kullanır. Veri madenciliği ve bu bahsedilen teknolojileri birbirinden
ayrı sınıflandırmak zordur çünkü çalışma alanı olarak çok içe içe geçmişlerdir.
Hangi tekniğin ya da teknoloji türünün kullanılacağı çalışılacak olan alana
bağlıdır. 9

8
https://dergipark.org.tr/en/download/article-file/387269
9
https://blog.euromsg.com/data-mining-veri-madenciligi-nedir/

16
Veri madenciliği pek çok sektörde kullanılmaktadır. Bankacılık ve sigortacılık
alanında pazarlama ve müşteri ilişkileri departmanlarında kullanılabilir.
Müşterinin davranışı için model oluşturulması, müşterilerin sınıflandırılıp
pazarlama stratejilerinin oluşturulması, kredi taleplerinin değerlendirilmesi,
çapraz satış gibi öneriler için firmalar yığın halde bulunan verileri anlamlı
bilgiye dönüştürerek gelecek yatırımlarına karar verebilirler.

3.2.1 Verinin Toplanması

Veriler 2 farklı biçimde toplanabilir.


Açık şekilde verilerin toplanması ziyaretçi tarafından puanlanma, üyelik ve
anketlerle bilgi toplanması yoluyla ziyaretçi isteğiyle gerçekleşir. Buna örnek
olarak sosyal medya platformları ve e-ticaret siteleri verilebilir.
Kapalı şekilde verilerin toplanması ise ziyaretçinin web sitesi içinde
gezinmesiyle depolanır. Öğeyi incelerken sayfada geçirilen zaman, ürünün
sepete eklenmesi çıkarılması ziyaretçinin o ürünle ilgilendiği anlamını taşır.10

3.2.2 Verileri İşleme

3.2.2.1 Anaconda Navigator

Anaconda, makine öğrenmesi algoritmalarını uygulayacağımız tümleşik bir


python dağıtımıdır. İçinde Jupyter Notebook ve Spyder gibi araçları da
barındırır. Arayüzü Şekil 3.1’de belirtildiği gibidir.

10
https://blog.euromsg.com/data-mining-veri-madenciligi-nedir/

17
Şekil 3.1: Anaconda Navigator arayüzü

Spyder, gelişmiş düzenleme, IPython, NumPy, SciPy ve matplotlib gibi Python


kütüphanelerinin desteğini sunan güçlü bir geliştirme ortamıdır. Jupyter
Notebook, görselleştirme, istatistiksel modelleme, veri temizleme gibi özellikler
sunan bir IDE dir.

3.2.2.2 NumPy, Pandas, Scikit-Learn, MatPlotLib, Plotly Kütüphaneleri

NumPy, Numerical Python' ın kısaltmasıdır. Çok boyutlu diziler ve matrisler için


tasarlanan bilimsel hesaplamalarda kullanılan bir pakettir. Series ve Dataframes
olmak üzere iki ana veri yapısı vardır. Python’ın kendi veri yapısında bulunan
liste veri yapısına göre çok daha hızlı çalışır.

Pandas, etiketli ve ilişkisel verilerle çalışmak üzere tasarlanmış bir pakettir


dolayısıyla dağıtık işleme uygun değildir. Tek boyutlu Series ve iki boyutlu
olarak da Dataframe tablo yapılarını içinde barındırır. Veri ön işleme ve analiz,
görselleştirme, Dataframe' e veri eklemek ve silmek, seri ve tabloların
etiketlenmesi, birden çok formatta veri yapılarını yüklemek ve bunları
Dataframe objesine dönüştürmek, NumPy ve Python veri yapılarını Pandas

18
objesine çevirmek gibi işlemler kolaylıkla yapılabilir.

Sckit-Learn, görüntü işleme ve makine öğrenimini kolaylaştıran SciPy Stack'in


ek paketidir. SciPy'ın üzerine kurulmuştur. Orta büyüklükteki gözetimli ve
gözetimsiz öğrenme için makine öğrenme algoritmalarını birleştiren bir Python
modülüdür. Boyut küçültme ve modelleme yöntemlerini de kütüphane içinde
barındırır.

Matplotlib, iki boyutlu grafik çizimleri için kolaylık sunan bir kütüphanedir.
NumPy dizileri üzerine kurulu daha geniş SciPy yığınıyla çalışmak üzere
tasarlanmıştır.
Plotly, web tabanlı bir görselleştirme aracıdır. 3B grafikler ve sunduğu apilerle
bazı dillere görselleştirme imkanı sağlar.

3.3 VERİ MADENCİLİĞİNDE KULLANILAN MODELLER VE


TEKNİKLER

3.3.1 İlişkilendirme Analizi ve Birliktelik Kuralları

İlişkilendirme analizinin temel amacı algoritma kullanarak bir öğeyi tahmin


etmek değil, öğeler arasındaki ilişkiyi bulup kalıpları belirlemektir.
İlişkilendirme analizi ve birliktelik kuralları denetimsiz öğrenme süreçlerinin
bir dalıdır. İşlem seti içindeki kurallar bazı ürünlerin birlikte satın alındığını
gösteriyorsa satıcı, mağaza düzeni içindeki ürün yerleşimini buna göre
ayarlayabilir. Bu bilgileri çapraz satış, kampanyalar, satın alma sonrası
pazarlama stratejileri için kullanabilir ( Kotu ve Deshpande 2015, ss.195-216).
Rakesh Agrawal, Tomasz Imielinski, Arun Swami birliktelik kuralları üzerine
çalışmışlar bu çalışma da veri madenciliğinin ilk tekniklerinden biri olarak kabul
edilmiştir( Agrawal, Imielinski, Swami, 1993).

Olayların birlikte gerçekleşme durumlarını çözümleyip veriler arası ilişkiler


kuran makine öğrenmesi yöntemidir. Önceki dönemlerdeki verileri analiz edip,

19
bu veriler arasındaki anlamsal ilişkilerle ileriye yönelik tahminler yapılmasına
yardımcı olan bir yaklaşımdır.11 Birliktelik kuralları algoritmaları kategorik
verilerle çok başarılı çalışır.

Günümüzde birliktelik kuralları analizinden Tavsiye Motoru ( Recommendation


Engine) olarak bahsedilmektedir. Günlük hayatımızda alışveriş yaptığımızda
bazen bir ürünü alırken avantajlı olduğu ileri sürülerek bizim için tavsiye edilen
diğer ürünü de almaktayız. Tavsiye sistemleri çok çeşitli alanlarda
kullanılmaktadır. Netflix'te dizi, film veya belgesel tavsiyesi olarak, Youtube ve
Spotify da video ve müzik için çalma listesi oluşturucular, Amazon'da ürün
önerisi, Facebook ve Twitter'da içerik önerileri, Linkedin tanıdığımız insanlar
aracılığıyla tavsiye ağı oluşturup tanımadığımız kişilerle bağlantı kurmamızı ve
iş ağımızı genişletmemize olanak sağlar ve BestBuy da tavsiye sistemlerinden
büyük getiriler alan şirketlerden biri olarak karşımıza çıkmaktadır.12 Amazon’un
kullandığı tavsiye sisteminin örneği Şekil 3.2’de belirtildiği gibidir.

11
https://www.slideshare.net/uslumetin/birliktelik-kurallar-kullanlarak-pazar-sepeti-analizi-
market-basket-analysis-using-association-rules
12
https://www.quora.com/Which-companies-use-recommender-recommendation-systems

20
Şekil 3.2: Amazon'un kullandığı tavsiye sistemi örneği

Kaynak: https://marutitech.com/recommendation-engine-benefits/

Netflix 1990'lı yıllarda DVD kiralama hizmeti veren hüçük bir şirketken 20 yıl
içinde sektörde son yılların en başarılı şirketlerinden biri olma yolunda
ilerlemektedir. 2006 yılında Netflix, Netflix Prize yarışmasını organize ederek
kullanıcıları için film tavsiyelerinde bulunacak ekibin 1 milyon dolar ödül
kazanacağını duyurmuştur. BellKor’s Pragmatic Chaos adlı algoritma 2009
yılında bu ödülü kazanmıştır. Bu algoritma sonraki yıllarda kullanılmasa da
Netflix 2009'dan 2019 'a kadar olan süreç içinde yapay zeka ve çeşitli
teknolojilere yatırım yaparak daha kompleks bir algoritma tasarlamıştır.
Araştırma raporlarına göre klasik Tv içeriklerinde başarı oranı yüzde 30 - 40
aralığındayken, Netflix orijinal içeriklerinde bu oran yüzde 80 'i aşmaktadır.13

Birliktelik kurallarının uygulanmasını Pazar Sepet ve Promosyon Analizi,


Çapraz Pazarlama, Katalog ve Yerleşim Düzeni kategorileri altında
inceleyebiliriz. E-Ticaret, Eğitim, Bankacılık ve Sigortacılık, Finans, Telekom
ve Pazarlama alanlarında da sıkça uygulandığını görürüz.

13
http://www.sertacdoganay.com/netflix-algoritmasi/

21
3.3.2 Pazar Sepet Analizi

Birliktelik kuralları uygulamasına pazar sepet analizi örnek olarak verilebilir.


( Frawley, 1991). Pazar sepet analizinin amacı müşterinin alışveriş sırasında
satın aldıkları ürünler arasındaki bağlantıları keşfetmek, bu bağlamda
müşterilerin satın alma alışkanlıklarını ortaya çıkararak satıcının karlı pazarlama
stratejileri geliştirmesine yardımcı olmaktadır.
A ve B ürünleri daha sık birlikte satın alındığında karı artırmak için ürünlerden
birini satın alan müşteriler, diğerini de satın alması için reklam kampanyasıyla
hedeflenebilir. Her ikisini satın alan müşteriler için indirimler sunulabilir.

Bu konuyla ilgili olarak en popüler örnek bira ve bebek bezi ürünleri arasındaki
bağdır. Normalde bu iki ürün arasında hiçbir bağ yokmuş gibi düşünülebilir.
Literatürde bu konuyla ilgili hikayeye göre Walmart ismindeki süpermarket
zinciri "Yeni çocukları olan aileler vakit olmadığı için cuma günü dışarı
çıkamıyor, bira alıp evde zaman geçiriyorlar. Bu sebeple bebek bezi alan baba
yanında bira da alır." çıkarımında bulunmuşlardır. Bu doğrultuda iki ürünü yan
yana koyarak satışları artırmayı hedeflemişlerdir.14

3.3.3 Birliktelik Kuralları Ölçütleri

Veriseti içindeki kayıtların birlikte bulunma ve bulunmama sıklıklarına


bakılarak çeşitli algoritmalarla bunlar arasında oransal bir ilişki yakalamaya
çalışırız.
Bir birliktelik kuralının geçerli olabilmesi için minimum destek (support) ve
minimum güven (confidence) değerlerini barındırması gerekmektedir. Bunların
hesaplanması için de destek sayısı değeri kullanılır.

14
https://zeynepaygun.wordpress.com/2016/01/07/sepet-analizi-ve-birliktelik-kurallari/

22
3.3.4 Birliktelik Kurallarının Belirlenmesi İçin Kullanılan Algoritmalar

3.3.4.1 Apriori Algoritması

İlişkilendirme kuralı madenciliğini uygulayabilmek için pek çok algoritma


geliştirilmiştir. Apriori'de bunlardan biridir. İlişkilendirme kural madenciliği
algoritmaları kategorik verilerle çok başarılı bir şekilde çalışmaktadır.
Enterprise Architecture ile çizilen Apriori algoritmasının flow chart diyagramı
Şekil 3.3’te belirtildiği gibidir.

Şekil 3.3: Apriori algoritması flow chart diyagramı


act apriorifc

Start

Load Dataset

Support of every
item calculate

Yes No
Insert to frequent Remove item
Support >= min_sup
itemset

Determine No
Confidence >= min_conf Remove item
confidence

Yes

Strong rules
Stop

23
Algoritma, 1994 yılında Agrawal ve Srikant tarafından önerilmiştir.15
Veriler arasındaki ilişkiyi çıkarmak için geliştirilmiştir. Algoritma bottom-up
yaklaşımını kullanır ve her seferinde bir veriyi inceleyip diğer veriyle olan
ilişkisine bakar.
Temel yaklaşım olarak, eğer k tane elemanı olan öğe kümesi minimum destek
değerini sağlıyorsa, alt kümeleri de bu değeri sağlamalıdır.16
Kullanılacak veriseti Tabular ya da Transactional olarak tutulmalı ve kategorik
yapıda olmalıdır.

Tabular Veri Seti; verileri sütun bazlı tutan veri yapısıdır. Tablo 3.1’de
belirtilmiştir.

Tablo 3.1: Tabular Veri Seti

Id Bread Cheese Coffee Eggs Milk Id Itemsets


100 T T F F T 100 Milk, Bread, Cheese
101 F F F T T 101 Eggs, Milk
102 T F F F T 102 Bread, Milk
103 T T F F F 103 Cheese, Bread
104 F F T F T 104 Coffee, Milk
105 T T F F T 105 Bread, Cheese, Milk
106 T F F T T 106 Milk, Bread, Eggs
107 T T F F T 107 Milk, Cheese, Bread
108 F T F T F 108 Eggs, Cheese
109 F F T F F 109 Coffee

Kaynak: https://www.veribilimiokulu.com/associationrulesanalysis/

15
https://en.wikipedia.org/wiki/Apriori_algorithm
16
https://www.veribilimiokulu.com/associationrulesanalysis/

24
Transactional Veri Seti, Verilerin satır bazlı tutan veri yapısıdır. Tablo 3.2’de
belirtilmiştir.

Tablo 3.2: Transactional Veri Seti

Id Itemsets
100 Milk
100 Bread
100 Cheese
101 Eggs
… …
… …
108 Eggs
108 Cheese
109 Coffee
Kaynak: https://www.veribilimiokulu.com/associationrulesanalysis/

3.3.4.2 Apriori Algoritması Tanımlamaları

Itemset ; nitelik kümesidir.d tane eleman için 2d tane olasılıkta itemset vardır.

Destek (Support) ; ilişkinin dataset içinde ne sıklıkla bulunduğunu belirtir.


Denklem 3.1'de gösterilmiştir.

𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑋) = 𝑋 𝑆𝑎𝑦𝚤𝑠𝚤 ⁄ 𝑇𝑜𝑝𝑙𝑎𝑚 İş𝑙𝑒𝑚 𝑆𝑎𝑦𝚤𝑠𝚤 (3.1)

𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑋, 𝑌) = (𝑋, 𝑌)𝑆𝑎𝑦𝚤𝑠𝚤⁄ 𝑇𝑜𝑝𝑙𝑎𝑚 İş𝑙𝑒𝑚 𝑆𝑎𝑦𝚤𝑠𝚤

Kaynak: https://www.kdnuggets.com/2016/04/association-rules-apriori-algorithm-tutorial.html

Güven (Confidence) ; Y ürününün hangi olasılıkla X ürünü ile beraber alınacağını


belirir. Denklem 3.2'de gösterilmiştir.

25
𝐶𝑜𝑛𝑓𝑖𝑑𝑒𝑛𝑐𝑒 (𝑋, 𝑌) = (𝑋, 𝑌)𝑆𝑎𝑦𝚤𝑠𝚤⁄𝑋 ′ 𝑖 İç𝑒𝑟𝑒𝑛 İş𝑙𝑒𝑚 𝑆𝑎𝑦𝚤𝑠𝚤 (3.2)

𝐶𝑜𝑛𝑓𝑖𝑑𝑒𝑛𝑐𝑒 (𝑋 => 𝑌) = 𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑋, 𝑌)⁄𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑋)

Kaynak: https://www.kdnuggets.com/2016/04/association-rules-apriori-algorithm-tutorial.html

Asansör (Lift) ; X ürünü satıldığında Y ürününün satış oranındaki artışı ifade eder.
Denklem 3.3'te gösterilmiştir.

lift = 1 → X ve Y arasında ilişki yoktur.

lift < 1→ X ve Y'nin beraber satın alınması olası değildir.

lift > 1 → X ve Y'nin beraber satın alınmıştır.

𝐿𝑖𝑓𝑡 (𝑋 → 𝑌) = (𝑆𝑢𝑝𝑝𝑜𝑟𝑡 ( 𝑋𝑈𝑌))⁄( 𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑋)) ∗ (𝑆𝑢𝑝𝑝𝑜𝑟𝑡 (𝑌)) (3.3)


Kaynak: https://www.kdnuggets.com/2016/04/association-rules-apriori-algorithm-tutorial.html

Apriori algoritması için değerler hesaplandıktan sonra data seti içindeki her
öğenin destek değerinin hesaplaması gerekir. Minimum destek değerinden daha
düşük değerde olan öğeler çıkarılır ve işlem sonunda tekli birliktelikler dikkate
alınarak ikili birliktelikler çıkarılır. Bulunmak istenen birliktelik kuralı sayısı
arttıkça aynı şekilde işlem devam ettirilir.

3.4 TAVSİYE SİSTEMLERİNDE MAKİNE ÖĞRENMESİ

Makine öğrenmesi çok geniş bir kavramdır bu nedenle pek çok tekniğe uyacak
şekilde bükülebilir. Öneri sistemleri, büyük miktarda depolanan verilerden
faydalı içerikleri filtreleyerek kullanıcıya en anlamlı ve doğru ürünleri sunmayı
amaçlayan algoritmalardır. Algoritma veya veri türüne bağlı olarak denetimli
öğrenme de denetimsiz öğrenme de olabilir. Çıktıya bağlı olarak bir
sınıflandırma veya takviye öğrenimi de olabilir. Bu nedenle tek bir makine
öğrenmesi kategorisinde sınıflandıramayız. Aslında öneri sistemleri hedef
kullanıcıya öneri sunabilmek için makine öğrenmesi tekniklerinden herhangi
birini kullanabilen bilgi edinme alt alanı olarak düşünülebilir. Öneri motorları da

26
kullanıcının seçimlerini öğrenerek veri setindeki desenleri keşfeder bu
doğrultuda sonuçlar üretir. Daha çok veri, daha çok öğrenme sonuç olarak daha
verimli öneri sunma demektir.
Şekil 3.4’te belirtildiği üzere öneri sistemi kurmak için en çok kullanılan
metotlar şunlardır;

Şekil 3.4: Tavsiye sisteminin sınıflandırılması


BPMN recommendationsys

Tavsiye Sistemleri

İçeriğe Dayalı İşbirliğine Dayalı Hibrit Tavsiye Popülarite Tabanlı


Filtreleme Filtreleme Sistemleri Tavsiye Sistemleri
Sistemleri Sistemleri

Bellek Tabanlı Model Tabanlı


Filtreleme Filtreleme

Kullanıcı-Kullanıcı Öğe-Öğe İşbirliğine


İşbirliğine Dayalı Dayalı Filtreleme
Filtreleme

3.4.1 İçeriğe Dayalı Filtreleme Sistemleri (Content-Based Filtering Systems)

Bu yaklaşımda müşterinin geçmiş tercihlerine bakarak tavsiyede bulunur.


Çalışma prensibi, kullanıcının tercihlerine dayanarak tavsiye edilecek nesne ile
kullanıcı arasında ilişkinin kurulması ve nesne kullanıcı matrisi oluşturularak
sistemin oluşturulmasına dayanmaktadır. Şekil 3.5’te çalışma prensibi
gösterilmiştir.

27
Şekil 3.5: İçeriğe dayalı filtreleme sistemleri çalışma prensibi

Kaynak: https://visualbi.com/blogs/business-intelligence/data-science/data-
science-series-content-based-recommender-system-using-azure-databricks/

Kullanılan alana bağımlı algoritmalardır. Web sayfası, haber önerisi gibi


platformlarda yüksek başarı gösterir. Anlamlı öneriler sunabilmek için nesneler
arasındaki benzerlikleri modellerken Vektör Uzay Modeli, Naive Bayes
Sınıflandırıcısı, Yapay Sinir Ağları ve Karar Ağaçları gibi olasılıksal modelleri
kullanır.
Avantajları;
Sadece kullanıcının tercihlerine dayandığı için İşbirlikçi Filtreleme gibi çok
fazla işlem yapmaya ihtiyaç duymamaktadır.
Dezavantajları;
Kullanıcılara her defasında benzer ürünler sunduğu için kullanıcının siteyi
ziyaret etme sıklığının azalmasına ve kullanıcı kaybetmeye sebep olabilir.
Farklılaşmamış ürünler kolayca tavsiye edilirken, farklılaşmış ürünler önceki
ürünlerle benzer özellik göstermediğinde sınıflandırması zorlaşır.
Yeni kullanıcı sisteme ilk dahil olduğunda çok fazla ürün almadığı için
dolayısıyla benzer özellikte nesne bulamadığı için bu tip kullanıcılara tavsiye
yapmak zordur.

28
3.4.2 İşbirliğine Dayalı Filtreleme Sistemleri (Collaborative Filtering
Systems)

Bu yaklaşım kullanıcının satın alma davranışları, tercihleri ve etkinlikleri


hakkında bilgi toplayarak değerlendirip diğer kullanıcılarla olan benzerliklerini
de baz alarak kullanıcının neleri sevebileceğini tahmin etmeye çalışır. En çok
kullanılan yöntem olarak kabul edilmiştir. Kullanıcılar benzer özelliklerine
gruplanabilir aynı durum ürünler için de geçerlidir.
Filtreleme geçmişti benzer tercihleri yapan kullanıcıların gelecekte de benzer
tercihleri yapabilecekleri varsayımına dayanır. 1 numaralı kullanıcı A, B, C
ürünlerini, 2 numaralı kullanıcı B, C, D ürünlerini tercih etmişse 1 numaralı
müşterinin D ürününü, 2 numaralı müşterinin A ürününü tercih etme olasılığı
yüksektir.
İşbirlikçi filtreleme ürünlerin bilgisiyle ilgilenmemektedir. İçerik tabanlı
filtrelemenin otomatik bilgi işleme konusunda yetersiz kalması sonucu
geliştirilmiş bir yaklaşımdır. Sisteme dahil olan tüm kullanıcılar seçimleriyle bu
yaklaşımın tavsiye sunma sürecine katkıda bulunmaktadır. Şekil 3.6’da çalışma
prensibi gösterilmiştir.
Avantajları;
Tavsiyelerini kullanıcının aldığı ürünlere dayandırdığı için günceldir.
Dezavantajları;
Yeni kullanıcılara tavsiye vermek zordur (Early-rater problem).
Kullanıcı profilleri çeşitli değilse sınıflandırma problem yaratmaktadır (Data
sparseness).

29
Şekil 3.6: İşbirliğine dayalı filtreleme sistemleri çalışma prensibi

Kaynak: https://visualbi.com/blogs/business-intelligence/data-science/data-science-series-
content-based-recommender-system-using-azure-databricks/

İşbirlikçi filtrelemede iki teknik kullanılır;


Bellek Tabanlı Filtreleme;
Kullanıcı- kullanıcı işbirliğine dayalı filtreleme ve öğe -öğe işbirliğine dayalı
filtreleme olarak iki şekilde gruplandırılabilir. İlk durumda kullanıcılar
gruplandırılarak benzer kullanıcılar birbirinin komşusu olarak belirlenir. İkinci
durumda ürün benzerliğine odaklanılır.

k : komşu kullanıcılar
u : kullanıcı
i: öğe
sim(u,v) : u ve v kullanıcıları arasındaki benzerliği
µu ve µv : u ve v kullanıcılarının değerlendirme puanlarının ortalaması
𝑁𝑢𝑖 (k) : i öğesi hakkında değerlendirmede bulunan, k yakın kullanıcılar kümesi
𝑁𝑢𝑖 (k)
İfade ederse u kullanıcısının i öğesi hakkındaki değerlendirme puanını tahmin
etmek için aşağıdaki eşitlik kullanılır: (Hameed, Jadaan, Ramachandram, 2012)
(Bobadilla, Ortega, Hernando, Alcala, 2011).

30
∑ 𝑠𝑖𝑚 (𝑢,𝑣)(𝑟𝑣𝑖 − 𝜇𝑣 )
𝑢 ∈𝑁𝑘
𝑢 (𝑖)
𝑟𝑢𝑖 = 𝜇𝑢 + ∑
(3.4)
𝑠𝑖𝑚 (𝑢,𝑣)
𝑢 ∈ 𝑁𝑘
𝑢 (𝑖)

Kullanıcının değerlendirme puanlarını belirten vektörler arasındaki yakınlık


benzerlik fonksiyonlarıyla ifade edilir. Kullanıcı- kullanıcı işbirliğine dayalı
filtreleme ve öğe -öğe işbirliğine dayalı filtreleme yaklaşımlarında benzerlikler
Cosine Similarity ve Pearson Correlation kullanılarak hesaplanır. Cosine
Similarity büyüklükleri değil iki vektör arasındaki açıya göre bulunur.
Sınıflandırma ve kümelemele algoritmalarında kullanılır. Aşağıdaki formülde
gösterilmiştir:

𝐴 . 𝐵
Similarity=cos(𝜃)= (3.5)
‖𝐴‖ ‖𝐵‖

Kaynak : https://en.wikipedia.org/wiki/Cosine_similarity

Pearson Correlation, iki değişkenin birbiriyle ne kadar ilişkili olduğunu belirtir.


Sonucun -1 olması negatif benzerlik olduğunu, 0 olması ilişki olmadığını, 1
olması benzer olduğu belirtir. Aşağıdaki formülde gösterilmiştir:

∑𝑥∑𝑦
∑ 𝑥𝑦−
𝑁
Pearson(x,y)= (3.6)
2 2
√(∑ 𝑥 2 − (∑ 𝑥) ). (∑ 𝑦 2 −
(∑ 𝑦)
)
𝑁 𝑁

Kaynak: https://en.wikipedia.org/wiki/Pearson_correlation_coefficient

Makine öğrenmesinde yaygın kullanılan mesafe metrikleri ve kullanıldıkları


algoritmalar şunlardır;
Minkowski Distance, genelleştirilmiş mesafe metriğidir. İki veri noktası
arasındaki mesafeyi farklı şekillerde hesaplamak için yukarıdaki formülü
manipüle edebiliriz.

31
1⁄
(∑𝑛𝑖=1|𝑥𝑖 − 𝑦𝑖 |𝑝 ) 𝑝 (3.7)

p = 1, Manhattan Distance
p = 2, Euclidean Distance

Kaynak: https://en.wikipedia.org/wiki/Minkowski_distance

Manhattan Distance, grid yapısı gibi yollar arasında yatay veya dikey birer birer
gidilerek ölçülür. Minkowski Distance'da P değeri 1 alınarak hesaplanır.
Aşağıdaki formülde gösterilmiştir:

d = ∑𝑛𝑖=1|𝑥𝑖 − 𝑦𝑖 | (3.8)

Euclidean Distance, en çok kullanılan metriklerden biridir. Minkowski


Distance'da P değeri 2 alınarak hesaplanır. KNN sınıflandırıcı ve K-means
kümeleme algoritmaları Euclidean Distance metriğini kullanır. Aşağıdaki
formülde gösterilmiştir:

d(x,y)=√∑𝑛𝑖=1(𝑥𝑖 − 𝑦𝑖 )2 (3.9)

Kaynak : https://en.wikipedia.org/wiki/Euclidean_distance

Model Tabanlı Filtreleme;


Veri çok büyükse ve modelleme doğru yapılmışsa, veri setinin tamamına
odaklanılmadan bir kısmının üzerinde sorgulama yapılacağı için hafıza bazlı
sistemlere göre daha hızlıdır. Ancak bu durumda da veri setinin tamamına
odaklanılmadığı için doğru öneriler gerçekleşmeyebilir.

32
3.4.3 Hibrit Tavsiye Sistemleri

Hibrit sistemler, iki öneri sistemi ayrı ayrı uygulanıp daha sonra bu iki
yaklaşımın birleştirilmesiyle uygulanmaktadır. Hibrit sistemlerin saf
yaklaşımlardan daha doğru tavsiyeler verdiği literatürdeki çalışmalarda
gözlemlenmiştir. Daha doğru tavsiyeler sunmasının yanı sıra veri yetersizliği
gibi sorunların üstesinden gelmek için de hibrit yaklaşımlar tercih edilebilir.

3.4.4 Popülarite Tabanlı Tavsiye Sistemleri

Temelde satışı çok popüler olan ürünlerin kullanıcıya önerilmesine dayalı


sitemlerdir. Yeni kullanıcılar arasında popüler olarak satın alınan bir ürün, her
yeni kullanıcıya önerilebilir. En büyük dezavantajı; kişiselleştirme olanağı
sunmamasıdır. Kullanıcı davranışı bilinse bile, ürünleri bu seçenekler üzerinden
önerme imkanı yoktur.

3.5 TAVSİYE SİSTEMLERİNDE KARŞILAŞILAN ZORLUKLAR

Anasayfa önerilerinde kişiye özel tavsiyede bulunmak daha zordur. Kişi daha
önce bu sayfayı ziyaret etmişse geçmiş ziyaretlerine bakılarak bir öneride
bulunulabilir ancak tavsiye yazılımları ilk kez sayfaya giren bu müşterinin
verisine ulaşamaz. Bu sorun soğuk başlangıç problemi olarak bilinir (Cold start
problem). Bu tip durumlarla karşılaşılan sistemlerde fallback scenario yaklaşımı
uygulanır. Site içindeki genel kullanıcı faaliyetleri değerlendirilerek bir öneri
sunmaya çalışılır. 17 İşbirlikçi yaklaşımın temel problemlerinden biri olmakla
birlikte site içinde popüler bir ürün veya yeni öğe için kural bazlı bazı filtreler
eklenerek bu problem önlenmeye çalışılır.

17
https://www.digitalbursa.com/urun-oneri-sistemleri-ile-pazarlama/

33
İçerik tabanlı filtrelemeyle bu sorunu çözebilmektedir. Ziyaretçi bir süre ikincil
olurken, sistem ürünlerin meta verilerini kullanır. Örneğin yalnızca göz atmak
için sitede olan müşteriler giyimden elektroniğe kadar neredeyse tüm ürünlere
bakarken, sistem yalnızca ziyaret amaçlı orada bulunduğunu varsayar ve öneriler
için tıklama geçmişini kullanmaz.18
Bir başka yaklaşımda siteyi ilk kez ziyaret edenlerin kayıt olma ihtimallerinin
düşük olması sebebiyle kullanıcı çerezlerle tanımlanır. Ziyaretçi çerezleri siler
ya da engellerse bu sınıflandırılmış siteleri her ziyaret ettiklerinde yeni kullanıcı
olarak tanımlanır.19

Tavsiye sistemlerinde karşılaşılan zorluklardan biri de ölçeklenebilirliktir


(Scalability).
Veri setini büyüklüğü hangi öneri sisteminin kullanılacağı, yeterli teknik bilgi,
maliyet gibi durumlarda sorun yaratabilir. Bu durum Hadoop gibi büyük veri
sistemlerine geçiş yapılarak çözümlenebilir.

İşbirlikçi filtrelemenin içerik bazlı filtrelemeye göre biraz daha karmaşık olması
yorumlanabilirlik sorununa yol açabilmektedir ( Interpretability).

Çevrimiçi bir ürünün satın alınması durumunda ürüne oy verme işlemi


kullanıcılar tarafından sıkça yapılan bir durum değildir. Aslında çok az kullanıcı
bu ürünleri derecelendirmektedir. Bu durum kullanıcı öge derecelendirme
matrisi oluşturma aşamasında veri seyrekliği (data sparsity) yaşanması sorununu
yaratmaktadır. Bu sorun boyut küçültme ve kullanıcı öge derecelendirme
matrisinin azaltılmasıyla çözümlenmektedir.20

Tavsiye sistemlerinde bir diğer sorun grey sheep problem olarak


adlandırılmaktadır. Tutarsız görüşlere sahip bu kullanıcıları tanımlayan bu
sorunu önleyebilmek için içeriği güçlendirilmiş filtreleme kullanılmalıdır.

18 19
https://www.yuspify.com/blog/cold-start-problem-recommender-systems/
20
https://medium.com/@rabinpoudyal1995/challenges-in-building-recommendation-systems-
719a4d3cf5b2

34
Eş anlamlılık (synonymy) da, bir kitabın farklı basımları işbirlikçi filtrelemeyle
ürün açıklanması kullanılmadığından gözden kaçabilir. Bu sorunu önlemek için
de verilerden gizli faktörleri tanımlayan bir algoritma olan gizli ortak filtreleme
ile çözülebilir.

3.6 TAVSİYE SİSTEMLERİNDE UZUN KUYRUK (LONG TAIL)

Müşterilere satın alma ve kullanma olasılıkları yüksek öneriler sunarak seçim


yapmasını sağlamak tavsiye sistemlerinin amaçlarındandır. Doğru ürünü doğru
müşteriyle eşleştirmek bu noktada çok önemlidir.
Şekil 3.7’de belirtildiği üzere uzun kuyruk grafiği, öğeler ve ürünler arasındaki
derecelendirmelerin popülerliğini açıklamaktadır.

Şekil 3.7: Uzun kuyruk grafiği

Kaynak: https://medium.com/@kyasar.mail/recommender-systems-what-long-tail-tells-
91680f10a5b2

Mavi alanda kalan popüler ürünler rekabetçi ürünlerdir. Yeşil alanda kalan
uzun kuyruk alanındaki ürünler popüler olmayan ancak pazardaki ürünlerdir.
Çok satılan ürünlerin kar oranı düşüktür çünkü bütün rakipler aynı fiyat
bandından satmak zorunluluğundadır.

35
Yapılan araştırmalar sonucunda uzun kuyruk etkisini doğru yorumlayan
firmaların gelirlerinin büyük kısmı çok satılan ürünlerden ziyade uzun kuyruk
bölümünden gelmektedir. Az satılan ürünler doğru müşterilere önerilirse
karlılık artmaktadır.21

Tavsiye sistemleri sadece popüler ürünler üzerinden öneri yapmamalı, çeşitlilik


de sağlamalıdır. Grafiğin sağ tarafına doğru gidildiğinde derecelendirme daha
azdır. Bu da seyreklik anlamına gelmektedir. Bu sebeple seyreklik ve uzun
kuyruk tavsiye sistemleri oluşturma çalışmalarında dikkate alınması gereken
özellikler olarak karşımıza çıkmaktadır.22

3.7 WEKA

Weka (Waikato Environment for Knowledge Analysis), Yeni Zelanda Waikato


Üniversitesi tarafından açık kaynak kodlu Java ile geliştirilen makine öğrenmesi
alanında da sıklıkla kullanılan önemli veri işleme programlarından biridir. Weka,
verileri dosyadan okuyabilir veya veri tabanı üzerinden dosya verisi şeklinde
çekebilir.23

Program ilk açıldığında ana menü Şekil 3.8 ‘de belirtildiği gibidir.

21
https://webrazzi.com/2009/09/09/tavsiye-sistemleri-long-tail-uzun-kuyruk-ile-karliligi-
artirmak/
22
https://medium.com/@kyasar.mail/recommender-systems-what-long-tail-tells-91680f10a5b2
23
http://bilgisayarkavramlari.sadievrenseker.com/2009/06/01/weka/

36
Şekil 3.8: Weka ana menü

Dosya uzantısı olarak ARFF formatı kullanılmaktadır.

Explorer kısmı; verileri local veya veritabanı gibi çeşitli kaynaklardan


yükleyebileceğimiz, ön işleme (prepocess), sınıflandırma (classify),
gruplandırma (cluster), birliktelik analizi (associate), değişken seçilimi (select
attributes), görselleştirme (visualize) süreçleri üzerinden veriler işleyebildiğimiz
alandır.

Preprocess panelinde veriseti yüklenir, Filter ile veri üzerinde işlemler


yapılabilir. Çalışma kapsamında Apriori algoritmasıyla çalışılacağı için Filter
alanından Numeric To Nominal seçilmiştir. Weka’da Associate kısmında
Apriori, FpGrowth ve Filtered Associator algoritmaları yer almaktadır. Bu
associate algoritmalarına Explorer, KnowledgeFlow ve Workbench
panellerinden de ulaşılabilmektedir. Filtre uygulandığında veri setinin Weka
üzerindeki görüntüsü Şekil 3.9’daki gibidir.

37
Şekil 3.9: Preprocess panel

Şekil 3.10’da belirtildiği üzere Experimenter kısmı; oluşturulan modele ait


istatistiksel testlerin yapıldığı alandır.24

Şekil 3.10: Experimenter panel

38
Şekil 3.11’de belirtildiği üzere Knowledge Flow kısmı; sürükle bırak veri
madenciliği modellerini kurulan kullanıcı grafik ara yüzü kısmıdır. 24

Şekil 3.11: Knowledgeflow panel

Şekil 3.12’de belirtildiği üzere Workbench kısmı; ileri düzey değişiklikleri


yapabildiği, parametrelerin ayarlayabildiği alandır.24

39
Şekil 3.12: Workbench panel

Şekil 3.13’te belirtildiği üzere Simple CLI kısmı; komut satırı ara yüzüdür.
Model çağırma ve parametre ayarlama komut istemi kısmından da yapılabilir.24

Şekil 3.13 Simple CLI panel

24
https://www.veribilimiokulu.com/association-rules-analysis-with-weka/

40
4.UYGULAMA

Çalışma kapsamında özel bir bankadan 600.000 satırlık maskelenmiş veriler


Excel ile alınmıştır. Çalışma kapsamında kullanılan bu veriler KVKK
kapsamında firma tarafından maskelenmiş, daha önceden hiçbir akademik
çalışmada kullanılmamış özgün verilerdir. Veriler, Ms Sql Server 2014
veritabanında saklanarak verinin anlaşılması, makine öğrenmesi
algoritmalarının uygulanması için verinin hazırlanması amacıyla ön hazırlık
işlemlerinden geçirilmiştir.
Verilerin tamamı kullanılarak WEKA ile apriori algoritmasıyla kurallar
çıkarılmaya çalışılmıştır. Ancak bankaya yeni müşteri geldiğinde çıkarılan
kurallar ile müşteriye ürün önermesi yapmaya çalıştığımızda elimizdeki tüm
verileri kullanarak öneri vermek çok doğru sonuçlar vermemektedir. Çünkü tüm
verilerin içinde yeni gelen müşteriye benzemeyen datalar da olacağı için
öncelikle bu müşteriye benzeyen müşteriler bulmak fikrinden yola çıkılarak
İşbirlikçi Filtreleme yöntemiyle benzer müşteriler bulunup daha sonra da Apriori
algoritması uygulamıştır. Bu şekilde hibrit bir tavsiye sistemi geliştirilmiştir.
En son adımda veri görselleştirilmesi Sankey diyagramıyla yapılmıştır.
Çalışmanın CRISP-DM metoduyla gösterimi Şekil 4.1’deki gibidir.

Şekil 4.1: CRISP-DM adımları ve akışı

Kaynak: https://ugurozmen.com/crm/en-iyi-teklif-sss-3

41
İşin anlaşılması adımında yapmak istediğimiz çalışma belirlenmiş, işe nasıl bir
katkı sağlayacağı netleştirilmiştir.
Verinin anlaşılması adımında, veri ilgili kaynaklardan çekilerek, analizin
yapılacağı ortamlara yüklenmiştir. Verilerin sayısı, aralarındaki ilişki anlamaya
çalışılmıştır.
Verinin hazırlanması adımında, veri model oluşturma işlemine hazır hale
getirilmeye çalışılmış, eldeki hangi verinin hangi modelde kullanılabileceği
belirlenmiştir.
Modelleme adımında, modelleme sırasında kullanılacak teknik belirlenmiştir.
Değerlendirme ve canlıya alma adımları iş birimleri tarafından iş amaçları
açısından değerlendirilmediği için tez kapsamında oluşturulan model gerçek
hayat içinde kullanıma geçmemiştir.

4.1 İŞİN VE VERİNİN ANLAŞILMASI

İş ihtiyacı kapsamında; banka verileri alınarak geçmişte müşterilerin satın alma


alışkanlıklarına bakılarak bir tahminleme sistemi geliştirilmiştir. Aynı zamanda
ihtiyaç doğrultusunda, müşterilerin tarih bilgilerine bakılarak; hangi ürünleri
alıp, hangilerini bıraktığını veri görselleştirmesi kapsamında Sankey diyagramı
kullanılarak gösterilmiştir. KVKK kapsamında müşterilerin demografik bilgileri
alınmamış, alınan veriler de maskelenmiş olarak csv formatında firma dışına
çıkarılmıştır.

4.2 VERİNİN HAZIRLANMASI

Csv formatında alınan veriler Ms Sql Server 2014 veritabanına alınarak ön


işleme sürecinden geçirilmiştir. Şekil 4.2’de görüldüğü üzere DataDB adlı
veritabanı oluşturularak veriler DataImport tablosuna import edilmiştir.

42
Şekil 4.2: Veritabanına data import işlemi

select * from DataImport

Sorgusunu yazarak Şekil 4.3’de belirtildiği üzere tablonun geldiği


gözlemlenmiştir.

43
Şekil 4.3: Banka verilerinin içeriği

select distinct URUN_NO from DataImport

Sorgusuyla 39 farklı ürünün olduğu gözlemlenmiştir.

Bu 39 farklı ürününün tamamı hibrit sistem için kullanılmamıştır. Bankadan


daha önce ürün almış müşteriye doğru ürünün önerilebilmesi için elimizdeki tüm
ürünlerle öneri yapmak doğru sonuç vermeyebilir. İşbirlikçi Filtreleme
yaklaşımı da modelde kullanılarak benzer müşterilerin hangi ürünleri aldıkları
bulunmuş, daha sonra Apriori algoritması uygulanmıştır.

Müşterilerinin ürünü almışsa 1, almamışsa 0 olacak şekilde sql sorgusu yazılarak


csv formatında kaydedilmiş daha sonra da Jupyter Notebook üzerinde csv den
veriler okunarak ürünlerin toplam sayısı elde edilmiştir. Yazılan sorgu aşağıda
yer almaktadır.

44
DECLARE

@columns NVARCHAR(MAX) = '',


@sql NVARCHAR(MAX) = '';

SELECT
@columns += QUOTENAME(URUN_NO) + ','

FROM
(
SELECT DISTINCT URUN_NO FROM DataImport
) AS ÜRÜN

SET @columns = LEFT(@columns, LEN(@columns)-1);

SET @sql = '

SELECT * FROM
(
SELECT MUSTERI_NO, URUN_NO FROM DataImport GROUP BY
MUSTERI_NO,URUN_NO
) t

PIVOT(
COUNT(URUN_NO)
FOR URUN_NO IN ('+ @columns + ')
)AS pivot_table;'

EXECUTE sp_executesql @sql;

Şekil 4.4’de belirtildiği üzere sorgu sonucunda elde edilen ekran görüntüsü
aşağıdaki gibidir.

Şekil 4.4: Sorgu sonucu oluşturulan yapı

45
4.3 WEKA İLE APRİORİ ALGORİTMASININ UYGULANMASI

Veriler, makine öğrenmesi algoritmalarını kullanılabilmesi için hazır hale


getirildikten sonra WEKA’nın Associate algoritmalarından Apriori ile verilerin
tamamı kullanılarak tahminleme yapılmaya çalışılmıştır.
İlk olarak Apriori algoritmasının uygulanması için min_support,
min_confidence, min_lift, min_length değerleri hesaplanmıştır. Jupyter
Notebook üzerinde EK-1 ‘de belirtilen kodlar yazılarak min_support değeri
bulunmuştur.
Çıktı sonucunda min_support değeri 0.22043268015047715 olarak
bulunmuştur.
(Yaklaşık olarak 0.2204 olarak alınmıştır.)
Ürünlerin ayrı ayrı toplamları toplam satır sayısına bölünerek her biri için
support değeri bulunmuştur.
Her bir ürün için bulunan min_support değeri Tablo 4.1’de gösterilmiştir.
Çizelge incelendiğinde min_support değeri olan 0.2204 değerinin altında kalan
değerler atıldığında kalan ürünler Tablo 4.2 ‘de gösterilmiştir.

46
Tablo 4.1: Her Bir Ürün İçin
Bulunan min_support Değerleri
Ürün ID Min Support
URUN2 0.025641
URUN39 0.485966
URUN34 0.386891
URUN45 0.020027
URUN124 0.008496
URUN51 0.127143
URUN3 0.000607
URUN21 0.107116
URUN23 0.542861
URUN46 0.048703
URUN11 0.011379
URUN4 0.008648
URUN35 0.116523
URUN111 0.379609
URUN49 0.126536
URUN53 0.002731
URUN22 0.118647
URUN54 0.112123
URUN52 0.045213
URUN10 0.540586
URUN27 0.141557
URUN121 0.115005
URUN47 0.325747
URUN43 0.05811
URUN38 0.093764
URUN24 0.001972
URUN14 0.854043
URUN19 0.063875
URUN20 0.07404
URUN44 0.044151
URUN120 0.744804
URUN17 0.285996
URUN37 0.123653
URUN8 0.978152
URUN125 0.536034
URUN48 0.348961
URUN1 0.218631
URUN9 0.34623
URUN18 0.026703

47
Tablo 4.2: min support Değerinin

Üzerinde Kalan Ürünler


Ürün ID Min Support
URUN39 0.485966
URUN34 0.386891
URUN23 0.542861
URUN111 0.379609
URUN10 0.540586
URUN47 0.325747
URUN14 0.854043
URUN120 0.744804
URUN17 0.285996
URUN8 0.978152
URUN125 0.536034
URUN48 0.348961
URUN1 0.218631
URUN9 0.34623

𝐶𝑜𝑛𝑓 (𝑋 → 𝑌) X ürünü satın alındığında Y nin satın alınma olasılığını


vermektedir. Denklem 3.2 ‘ye göre ortalama olarak 6.974511/13 olarak
alınmıştır.

Min_cof değerini 0,498179335 olarak bulunmuştur. (Yaklaşık olarak 0.5 olarak


alınmıştır.)
Lift değeri için de Denklem 3.3’e göre 0.2204/ (0.978152025)*(0.218631467)
yaklaşık olarak 1.2 alınmıştır.
Min length parametre kurallarında olmasını istediğimiz min öğe sayısını
belirtmektedir. ( Bu çalışmada min_length değeri 3 olarak alınmıştır.)

Ürünleri toplam sayıları da Tablo 4.3’te belirtildiği gibidir. Tablo 4.3’e göre en
çok alınan ürün Ürün 8, en az alınan ürün ise Ürün 3’tür.

48
Tablo 4.3: Ürünlerin Toplamı
Ürün ID Toplam
URUN2 169
URUN39 3203
URUN34 2550
URUN45 132
URUN124 56
URUN51 838
URUN3 4
URUN21 706
URUN23 3578
URUN46 321
URUN11 75
URUN4 57
URUN35 768
URUN111 2502
URUN49 834
URUN53 18
URUN22 782
URUN54 739
URUN52 298
URUN10 3563
URUN27 933
URUN121 758
URUN47 2147
URUN43 383
URUN38 618
URUN24 13
URUN14 5629
URUN19 421
URUN20 488
URUN44 291
URUN120 4909
URUN17 1885
URUN37 815
URUN8 6447
URUN125 3533
URUN48 2300
URUN1 1441
URUN9 2282
URUN18 176
dtype:int64

49
Datalar WEKA ortamına import edildikten sonra Numeric To Nominal
seçilmiştir. Weka’da Apriori algoritmasının uygulanabilmesi için datalar
nominal olmalıdır. Bu sebeple Filter bölümünden Numeric To Nominal filtresi
uygulanmıştır. Şekil 4.5’te gösterilmiştir.

Şekil 4.5: WEKA’da görünüm

Şekil 4.6’da görüldüğü üzere Associate bölümünden Apriori algoritması


seçilerek minSupport minConfidence değerleri girilerek kurallar bulunmuştur.

50
Şekil 4.6: WEKA’da metriklerin yazılması

Weka ile Apriori algoritması uygulanması sonucunda bulunan kurallar 5.3


Bölümü’nde belirtildiği üzere, bu çalışma kapsamında bahsedilen hibrit sistemin
ürettiği kurallarla karşılaştırmak için kullanılmıştır.

4.4 İŞBİRLİKÇİ FİLTRELEME

Çok satılan ürünlerden biri olan Ürün14 alınarak, benzerlik algoritmalarından


Cosine Similarity kullanılarak bu ürüne benzeyen ürünler seçilerek
filtrelenmiştir. Amacımız en çok alınan ürünlere benzer ürünleri bularak,
bunları satın alan müşterilerin benzerliklerini hesaplamaktır.
İtem-item benzerliğinden yararlanılarak Jupyter Notebook üzerinde EK-2 ‘de
belirtilen kod yazılmıştır. Çıktı sonucu Tablo 4.4’te belirtildiği gibidir.

51
Tablo 4.4: Ürün14’e Benzeyen Ürünler
Benzerlik
Ürün ID Oranı
URUN14 1.000.000
URUN8 0.789825
URUN120 0.751951
URUN23 0.617501
URUN39 0.577945
URUN125 0.572819
URUN10 0.508999
URUN111 0.4721
URUN34 0.471919
URUN9 0.445109
URUN48 0.443289
URUN47 0.431233
URUN17 0.424817
URUN1 0.331182
URUN121 0.294497
Name:URUN14, dtype: float64

Benzer ürünleri alan müşterileri bulmak için yazılan sql sorgusuyla bu benzer
ürünleri alan müşteriler bulunmuştur.

select distinct MUSTERI_NO,URUN_NO from DataImport where URUN_NO = '14'


or URUN_NO = '8' or URUN_NO = '120' or URUN_NO = '23' or URUN_NO = '39'
or URUN_NO = '125'or
URUN_NO = '10' or URUN_NO = '111' or URUN_NO = '34' or URUN_NO = '9' or
URUN_NO = '48' or URUN_NO = '47' or URUN_NO = '17' or URUN_NO = '1' or
URUN_NO = '121'

Sorgu sonucunda oluşan çıktı xlsx formatında kaydedilerek Jupyter Notebook


üzerinde Ek-3 ‘te belirtilen kod yazılıp benzer müşteriler bulunmuştur.

Benzerlik sonucuna göre Müşteri_no = 272479359 test müşterisine benzeyen


998 müşteri bulunmuştur.

52
4.5 APRİORİ ALGORİTMASI

4.4 Bölümü’nde bahsedilen sql sorgusu sonucunda benzer ürünleri alan


müşteriler Cosine Similarity benzerliğinden bulunan veriler de xlsx formatında
kaydedilerek Jupyter Notebook üzerinde Ek – 4’te belirtilen kod yazılıp veriler
Apriori algoritmasının kullanılmasına uygun hale getirilmiştir.

Apriori algoritmasının uygulanması için min_support, min_confidence, min_lift,


min_length değerleri hesaplanmıştır. Jupyter Notebook üzerinde EK-5 ‘te
belirtilen kodlar yazılarak min_support değeri bulunmuştur.
Çıktı sonucunda min_support değeri 0.593326659993327 olarak bulunmuştur.
(Yaklaşık olarak 0.5 olarak alınmıştır.)
Ürünlerin ayrı ayrı toplamları toplam satır sayısına bölünerek her biri için
support değeri bulunmuştur. Her bir ürün için bulunan min_support değeri Tablo
4.5’te gösterilmiştir. Çizelge incelendiğinde min_support değeri olan 0.5
değerinin altında kalan değerler atıldığında kalan ürünler Tablo 4.6 ‘da
gösterilmiştir.

Tablo 4.5 Hibrit Modelde Her Bir Ürün İçin


Bulunan min_support Değerleri
Min
Ürün ID Support
URUN111 0.515516
URUN14 0.936937
URUN10 0.688689
URUN120 0.898899
URUN39 0.646647
URUN8 0.996997
URUN47 0.459459
URUN34 0.507508
URUN23 0.70971
URUN9 0.472472
URUN121 0.141141
URUN48 0.499499
URUN17 0.411411
URUN125 0.702703
URUN1 0.312312

53
Tablo 4.6: Hibrit Model İçin min_

support Değerinin Üzerinde Kalan Ürünler


Ürün ID Min Support
URUN111 0.515516
URUN14 0.936937
URUN10 0.688689
URUN120 0.898899
URUN39 0.646647
URUN8 0.996997
URUN34 0.507508
URUN23 0.70971
URUN125 0.702703

𝐶𝑜𝑛𝑓 (𝑋 → 𝑌) X ürünü satın alındığında Y nin satın alınma olasılığını


vermektedir. Denklem 3.2 ‘ye göre ortalama olarak 6.6036036036036/9 olarak
alınmıştır.

Min_cof değerini 0.733733733733734 olarak bulunmuştur. (Yaklaşık olarak 0.7


olarak alınmıştır.)
Lift değeri için yaklaşık olarak 1.18 alınmıştır.
Min length parametre kurallarında olmasını istediğimiz min öğe sayısını
belirtmektedir. (Bu çalışmada min_length değeri 3 olarak alınmıştır.)
Çıkan sonuç da xlsx formatında kaydedilerek Ek – 6’da belirtildiği gibi Apriori
algoritması uygulanmıştır.

4.6 VERİ GÖRSELLEŞTİRME

Son 5 yılın satış verileri Sankey diyagramı kullanılarak gösterilmiştir. MS Sql


Server ‘da aşağıda belirtilen sorgu yazılarak tablo xlsx formatında
kaydedilmiştir.
Jupyter Notebook ‘ta yazılan Python kodu Ek – 7 ‘de belirtildiği gibidir.

54
select
YEAR(CONVERT(datetime, KONTRAT_BAS, 104)) AS YIL,
MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) AS AY,
(CASE
WHEN MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) BETWEEN 1 AND 3 THEN
'Q1'
WHEN MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) BETWEEN 4 AND 6 THEN
'Q2'
WHEN MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) BETWEEN 7 AND 9 THEN
'Q3'
WHEN MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) BETWEEN 10 AND 12 THEN
'Q4'
END) AS CEYREK,
COUNT(MONTH(CONVERT(datetime, KONTRAT_BAS, 104))) AS ADET
FROM DataImport
GROUP BY YEAR(CONVERT(datetime, KONTRAT_BAS, 104)),
MONTH(CONVERT(datetime, KONTRAT_BAS, 104)) ORDER BY YIL, AY

55
5.BULGULAR

Verilerin Ms Sql Server veritabanından alınması, Pandas, NumPy, Plotly, Random,


Json, Apriori kütüphaneleri ile Jupyter Notebook ortamında Intel Core i7-5500U
işlemci 8 GB RAM özellikleri olan Asus K555L model bilgisayarda yapılmıştır.
WEKA üzerinde gerçekleştirilen Apriori algoritması sonuçlarıyla, oluşturulan
hibrit sistemin performansı karşılaştırılmıştır. Ana verisetimizde 6590 adet müşteri
datası bulunmaktadır. Weka Apriori algoritmasının performans ölçümleri için
bunların %70’i olan 4612 adet müşteri datası eğitim seti için, %30’u olan 1978 adet
müşteri datası test seti olarak kullanılmıştır.
Cosine similarity sonucunda 998 adet müşteri benzerlik datası bulunmaktadır.
Hibrit modelin performans ölçümleri için bunların %70’i olan 698 adet müşteri
datası eğitim seti için, %30’u olan 300 adet müşteri datası test seti olarak
kullanılmıştır. Hibrit modelimizi oluşturan adımları daha net anlatmak için,
örnekler bir test müşterisi üzerinden anlatılacaktır. Bu müşteri bu çalışma içinde
Test Müşterisi 272479359 olarak geçecektir. Performans kapsamında hem seçilen
test müşterisi için hem de test setindeki tüm müşteriler için performans
karşılaştırılması ayrı ayrı yapılmıştır.
Veri görselleştirilmesi adımında ise Sankey diyagramıyla grafiği çizilmiştir.

5.1 HİBRİT SİSTEMİN SONUÇLARI

Müşteri benzerliğini bulmak için uygulanan Cosine Similarity’nin sonuçlarının


bir kısmı Şekil 5.1’de gösterildiği gibidir.

56
Şekil 5.1: Müşteri benzerliği için yapılan Cosine Similarity sonuçlarının
bir kısmı

Hibrit sistemin geliştirilmesi sürecinde kullanılan Apriori algoritması sonucunda 8


tane kural bulunmuştur. Test müşterisi 272479359 için ürün önerme hedefinden
yola çıkarak geliştirilen öneri sisteminin bulduğu kurallar ve başarı performansı
aşağıdaki gibidir. Bu müşterinin aldığı ürünler Tablo 5.1’de belirtildiği üzere;

select distinct URUN_NO from DataImport WHERE MUSTERI_NO = '272479359'

Tablo 5.1: Test Müşterisi


272479359 ‘un Aldığı Ürünler

Ürün ID
URUN1
URUN10
URUN111
URUN120
URUN125
URUN14
URUN23
URUN27
URUN34
URUN8
URUN9

57
Bu ürünlere göre Hibrit sistemin bulduğu sonuçlar aşağıdaki gibidir;

[RelationRecord(items=frozenset({'URUN125', 'URUN111'}),
support=0.5105105105105106,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN111'}), items_add=frozenset({'URUN125'}),
confidence=0.9902912621359223, lift=1.4092606422703509),
OrderedStatistic(items_base=frozenset({'URUN125'}),
items_add=frozenset({'URUN111'}),
confidence=0.7264957264957265, lift=1.4092606422703509)]),
RelationRecord(items=frozenset({'URUN125', 'URUN111',
'URUN120'}), support=0.5035035035035035,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN111'}), items_add=frozenset({'URUN125', 'URUN120'}),
confidence=0.9766990291262134, lift=1.443376227954271),
OrderedStatistic(items_base=frozenset({'URUN125'}),
items_add=frozenset({'URUN111', 'URUN120'}),
confidence=0.7165242165242165, lift=1.4090702604482133),
OrderedStatistic(items_base=frozenset({'URUN111',
'URUN120'}), items_add=frozenset({'URUN125'}),
confidence=0.9901574803149606, lift=1.409070260448213),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120'}), items_add=frozenset({'URUN111'}),
confidence=0.7440828402366864, lift=1.443376227954271)]),
RelationRecord(items=frozenset({'URUN125', 'URUN111',
'URUN8'}), support=0.5105105105105106,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN111'}), items_add=frozenset({'URUN125', 'URUN8'}),
confidence=0.9902912621359223, lift=1.4092606422703509),
OrderedStatistic(items_base=frozenset({'URUN125'}),
items_add=frozenset({'URUN111', 'URUN8'}),
confidence=0.7264957264957265, lift=1.4092606422703509),
OrderedStatistic(items_base=frozenset({'URUN111',
'URUN8'}), items_add=frozenset({'URUN125'}),
confidence=0.9902912621359223, lift=1.4092606422703509),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN8'}), items_add=frozenset({'URUN111'}),
confidence=0.7264957264957265, lift=1.4092606422703509)]),
RelationRecord(items=frozenset({'URUN125', 'URUN10',
'URUN14', 'URUN120'}), support=0.5315315315315315,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN10', 'URUN120'}), items_add=frozenset({'URUN125',
'URUN14'}), confidence=0.7984962406015038,
lift=1.1835278106244842),
OrderedStatistic(items_base=frozenset({'URUN10',
'URUN14'}), items_add=frozenset({'URUN125', 'URUN120'}),
confidence=0.7996987951807228, lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120'}), items_add=frozenset({'URUN10', 'URUN14'}),
confidence=0.7855029585798817, lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN14'}), items_add=frozenset({'URUN10', 'URUN120'}),
confidence=0.7878338278931751, lift=1.1835278106244842)]),

58
RelationRecord(items=frozenset({'URUN125', 'URUN111',
'URUN120', 'URUN8'}), support=0.5035035035035035,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN111'}), items_add=frozenset({'URUN125', 'URUN120',
'URUN8'}), confidence=0.9766990291262134,
lift=1.443376227954271),
OrderedStatistic(items_base=frozenset({'URUN125'}),
items_add=frozenset({'URUN111', 'URUN120', 'URUN8'}),
confidence=0.7165242165242165, lift=1.4090702604482133),
OrderedStatistic(items_base=frozenset({'URUN111',
'URUN120'}), items_add=frozenset({'URUN125', 'URUN8'}),
confidence=0.9901574803149606, lift=1.409070260448213),
OrderedStatistic(items_base=frozenset({'URUN111',
'URUN8'}), items_add=frozenset({'URUN125', 'URUN120'}),
confidence=0.9766990291262134, lift=1.443376227954271),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120'}), items_add=frozenset({'URUN111', 'URUN8'}),
confidence=0.7440828402366864, lift=1.443376227954271),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN8'}), items_add=frozenset({'URUN111', 'URUN120'}),
confidence=0.7165242165242165, lift=1.4090702604482133),
OrderedStatistic(items_base=frozenset({'URUN111',
'URUN120', 'URUN8'}), items_add=frozenset({'URUN125'}),
confidence=0.9901574803149606, lift=1.409070260448213),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120', 'URUN8'}), items_add=frozenset({'URUN111'}),
confidence=0.7440828402366864, lift=1.443376227954271)]),
RelationRecord(items=frozenset({'URUN14', 'URUN39',
'URUN120', 'URUN23'}), support=0.5075075075075075,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN39'}), items_add=frozenset({'URUN14', 'URUN120',
'URUN23'}), confidence=0.7848297213622292,
lift=1.180790499459137),
OrderedStatistic(items_base=frozenset({'URUN120',
'URUN23'}), items_add=frozenset({'URUN14', 'URUN39'}),
confidence=0.757847533632287, lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN14',
'URUN39'}), items_add=frozenset({'URUN120', 'URUN23'}),
confidence=0.7996845425867508, lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN14', 'URUN120',
'URUN23'}), items_add=frozenset({'URUN39'}),
confidence=0.7635542168674698, lift=1.1807904994591367)]),
RelationRecord(items=frozenset({'URUN120', 'URUN14',
'URUN8', 'URUN125', 'URUN10'}), support=0.5315315315315315,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN10', 'URUN120'}), items_add=frozenset({'URUN125',
'URUN14', 'URUN8'}), confidence=0.7984962406015038,
lift=1.1835278106244842),
OrderedStatistic(items_base=frozenset({'URUN10',
'URUN14'}), items_add=frozenset({'URUN125', 'URUN120',
'URUN8'}), confidence=0.7996987951807228,
lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN10', 'URUN8'}),

59
items_add=frozenset({'URUN125', 'URUN14', 'URUN120'}),
confidence=0.7751824817518248, lift=1.1804989318141357),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120'}), items_add=frozenset({'URUN10', 'URUN14',
'URUN8'}), confidence=0.7855029585798817,
lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN14'}), items_add=frozenset({'URUN10', 'URUN120',
'URUN8'}), confidence=0.7878338278931751,
lift=1.1835278106244842),
OrderedStatistic(items_base=frozenset({'URUN10', 'URUN120',
'URUN8'}), items_add=frozenset({'URUN125', 'URUN14'}),
confidence=0.7984962406015038, lift=1.1835278106244842),
OrderedStatistic(items_base=frozenset({'URUN10', 'URUN14',
'URUN8'}), items_add=frozenset({'URUN125', 'URUN120'}),
confidence=0.7996987951807228, lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN125', 'URUN14',
'URUN120'}), items_add=frozenset({'URUN10', 'URUN8'}),
confidence=0.8094512195121952, lift=1.180498931814136),
OrderedStatistic(items_base=frozenset({'URUN125',
'URUN120', 'URUN8'}), items_add=frozenset({'URUN10',
'URUN14'}), confidence=0.7855029585798817,
lift=1.1818033970200328),
OrderedStatistic(items_base=frozenset({'URUN125', 'URUN14',
'URUN8'}), items_add=frozenset({'URUN10', 'URUN120'}),
confidence=0.7878338278931751, lift=1.1835278106244842)]),
RelationRecord(items=frozenset({'URUN120', 'URUN14',
'URUN8', 'URUN39', 'URUN23'}), support=0.5075075075075075,
ordered_statistics=[OrderedStatistic(items_base=frozenset({
'URUN39'}), items_add=frozenset({'URUN23', 'URUN14',
'URUN120', 'URUN8'}), confidence=0.7848297213622292,
lift=1.180790499459137),
OrderedStatistic(items_base=frozenset({'URUN120',
'URUN23'}), items_add=frozenset({'URUN14', 'URUN39',
'URUN8'}), confidence=0.757847533632287,
lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN14',
'URUN39'}), items_add=frozenset({'URUN23', 'URUN120',
'URUN8'}), confidence=0.7996845425867508,
lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN39', 'URUN8'}),
items_add=frozenset({'URUN14', 'URUN120', 'URUN23'}),
confidence=0.7848297213622292, lift=1.180790499459137),
OrderedStatistic(items_base=frozenset({'URUN14', 'URUN120',
'URUN23'}), items_add=frozenset({'URUN39', 'URUN8'}),
confidence=0.7635542168674698, lift=1.1807904994591367),
OrderedStatistic(items_base=frozenset({'URUN8', 'URUN120',
'URUN23'}), items_add=frozenset({'URUN14', 'URUN39'}),
confidence=0.757847533632287, lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN14', 'URUN39',
'URUN8'}), items_add=frozenset({'URUN120', 'URUN23'}),
confidence=0.7996845425867508, lift=1.1941477698716951),
OrderedStatistic(items_base=frozenset({'URUN14', 'URUN8',

60
'URUN120', 'URUN23'}), items_add=frozenset({'URUN39'}),
confidence=0.7635542168674698, lift=1.1807904994591367)])]

Model sonucunda 8 ilişki kuralı bulunmuştur. Bu ilişki kuralları sonucunda; hibrit


sistemin test müşterisi 272479359 için ve tüm test setindeki müşteriler için alınan
ürünleri ne kadar başarılı tahmin yapabildiğini ölçebilmek için kullanılacaktır.

5.2 HİBRİT SİSTEMİN ÖLÇÜM METRİKLERİ

Bölüm 5’te bahsedildiği üzere verisetinin %70’i eğitim, %30’u test olarak
kullanılmıştır. Test müşterisi 272479359 için oluşturulan confusion matrix Tablo
5.2’de gösterilmiştir.
Confusion matrix test setindeki her bir test müşterisi için Ek-9’daki kod sonucunda
oluşturulmaktadır.

Tablo 5.2: Test Müşterisi 272479359


İçin Confusion Matrix

y_actual y_predict Sonuç


1 1 TP
1 0 FN
1 0 FN
1 1 TP
0 0 TN
1 1 TP
0 0 TN
1 0 FN
1 0 FN
1 0 FN
0 0 FN
0 0 FN
0 0 FN
1 1 TP
1 0 FN

Gerçek Pozitifler (TP): Gerçek değerin 1 ve tahmin edilen değerin de 1 olduğu


durumlardır.

61
Gerçek Negatifler (TN): Gerçek değerin 0 ve tahmin edilen değerin de 0 olduğu
durumlardır.

Yanlış Pozitifler (FP): Gerçek değerin 0 ancak tahmin edilen değerin 1 olduğu
durumlardır.

Yanlış Negatifler (FN): Gerçek değerin 1 ancak tahmin edilen değerin 0 olduğu
durumlardır.

𝑇𝑃+𝑇𝑁
𝐷𝑜ğ𝑟𝑢𝑙𝑢𝑘 = (5.1)
𝑇𝑃+𝐹𝑃+𝑇𝑁+𝐹𝑁
Kaynak: https://www.geeksforgeeks.org/confusion-matrix-machine-learning/

𝑇𝑃
𝐻𝑎𝑠𝑠𝑎𝑠𝑖𝑦𝑒𝑡 = (5.2)
𝑇𝑃+𝐹𝑃
Kaynak: https://www.geeksforgeeks.org/confusion-matrix-machine-learning/

𝑇𝑃
𝐻𝑎𝑡𝚤𝑟𝑙𝑎𝑚𝑎 = (5.3)
𝑇𝑃+𝐹𝑁
Kaynak: https://www.geeksforgeeks.org/confusion-matrix-machine-learning/

2
𝐹1_𝑠𝑐𝑜𝑟𝑒 = 1 1 (5.4)
+
𝐻𝑎𝑠𝑠𝑎𝑠𝑖𝑦𝑒𝑡 𝐻𝑎𝑡𝚤𝑟𝑙𝑎𝑚𝑎

Kaynak: https://www.geeksforgeeks.org/confusion-matrix-machine-learning/

Ek – 8’deki kodlar yazılarak test müşterisi için Denklem 5.1, 5.2, 5.3, 5.4’teki
değerler hesaplanmıştır. Çıktı sonucu Şekil 5.2’deki gibidir.
Test müşterisi için Confusion matrix Şekil 5.3’teki gibidir.

62
Şekil 5.2: Hibrit sistemin test müşterisi 272479359 için performans
metrikleri

Şekil 5.2’de görüldüğü üzere hibrit sistemin Test Müşterisi 272479359 için
doğruluk oranı (accuracy) %73’tür. Hassasiyet oranı (precision) %75’tir.
Hatırlama oranı (recall) %73’tür. F1-score oranı %73’tür.

Şekil 5.3: Confusion matris

Actual

Confusion Matrix 0 1

0 TN = 4 FN= 3

Predicted 1 FP= 1 TP= 7

Hibrit sistemin 998 toplam verisinin; %30 test müşterisiyle elde ettiği başarı

Ek-9 ‘daki kod sonucunda Şekil 5.4’teki gibidir.

63
Şekil 5.4: Hibrit sistemin test seti için performans metrikleri

Şekil 5.4’te görüldüğü üzere hibrit sistemin test setindeki tüm müşteriler için
doğruluk oranı %67.8’dir.

Şekil 5.5: Hibrit Sistemin test seti için toplam hassasiyet oranı (precision)

Şekil 5.5’te görüldüğü üzere hibrit sistemin test seti için toplam hassasiyet oranı
(precision) Ek-10’da belirtilen kod sonucu %71.3’tür.

Şekil 5.6: Hibrit Sistemin test seti için toplam hatırlama oranı (recall)

Şekil 5.6’da görüldüğü üzere hibrit sistemin test seti için toplam hatırlama oranı
(recall) Ek-11’de belirtilen kod sonucu %77.4’tür.

64
Şekil 5.7: Hibrit Sistemin test seti için toplam f1-score oranı

Şekil 5.7’de görüldüğü üzere hibrit sistemin test seti için toplam f1-score oranı Ek-
12’de belirtilen kod sonucu %71.2’dir.

5.3 WEKA İLE APRİORİ ALGORİTMASI UYGULANAN SİSTEMİNİN


SONUÇLARI

Weka’da Apriori algoritması uygulanmadan önce Şekil 5.8’de gösterildiği üzere,


4.3 Bölümü’nde hesaplanan min_support ve confidence değerleri yazılmış, Hibrit
Sistemin 8 kural bulması sebebiyle eşit şartlar altında Apriori algoritmasının
bulduğu en iyi 8 kurala göre performans ölçümü yapılmıştır.

Weka’da Apriori algoritması olduğu için, sadece Apriori algoritması


uygulandığında toplam veriseti işbirlikçi filtreleme algoritmalarıyla filtrelenmeden
Test Müşterisi 272479359 için performans hesaplaması kodu Ek-13’teki gibidir.
Performans sonucu Şekil 5.9’da gösterilmiştir.

Tablo 5.2’de bahsedilen confusion matrix oluşturma işlemi Weka Apriori


algoritması için Test Müşterisi 272479359 ve test setindeki her bir test müşterisi
için Ek -14’teki kod sonucunda oluşturulmaktadır.

65
Şekil 5.8: WEKA’da bulunan kurallar

Şekil 5.9: Weka Apriori algoritmasının test müşterisi 272479359 için


performans metrikleri

Şekil 5.9’da görüldüğü üzere Weka Apriori algoritmasının Test Müşterisi


272479359 için doğruluk oranı (accuracy) %56’dır. Hassasiyet oranı (precision)
%66’dır. Hatırlama oranı (recall) %56’dır. F1-score oranı %61’dir. Weka Apriori

66
Algoritmasının 6590 verisinin; %30 test müşterisiyle elde ettiği başarı Ek-14 ‘teki
kod sonucunda Şekil 5.10’daki gibidir.

Şekil 5.10: Weka Apriori algoritmasının test seti için performans


metrikleri

Şekil 5.10’da görüldüğü üzere Weka Apriori algoritmasının test seti için toplam
doğruluk oranı %37.3’tür.

Şekil 5.11: Weka Apriori algoritmasının test seti için toplam hassasiyet
oranı(precision)

Şekil 5.11’de görüldüğü üzere Weka Apriori algoritmasının test seti için toplam
hassasiyet oranı (precision) Ek-15’te belirtilen kod sonucu %67.5’tir.

67
Şekil 5.12: Weka Apriori algoritmasının test seti için toplam hatırlama
oranı (recall)

Şekil 5.12’de görüldüğü üzere Weka Apriori algoritmasının test seti için toplam
hatırlama oranı (recall) Ek-16’da belirtilen kod sonucu %62.6’dir.

Şekil 5.13: Weka Apriori algoritmasının test seti için toplam f1-score oranı

Şekil 5.13’te görüldüğü üzere Weka Apriori algoritmasının test seti için toplam f1-
score oranı Ek-17’de belirtilen kod sonucu %64.5’tir.

Şekil 5.14: Değerlendirme sonuçları

Hibrit Sistem Başarı Weka Apriori Algoritması


Performansı(%) Başarı Performansı(%)
Hassasiyet Hatırlama Hassasiyet Hatırlama
(precision) (recall) F1-Score (precision) (recall) F1-Score
Test
Müşterisi 75 73 73 66 56 61
272479359
İçin Doğruluğu(accuracy): 73 Doğruluğu(accuracy): 56

71.3 77.4 71.2 67.5 62.6 64.5

Test Seti İçin Doğruluğu(accuracy): 67.8 Doğruluğu(accuracy): 37.3

68
Şekil 5.15: Değerlendirme grafiği

DEĞERLENDİRME GRAFİĞİ
90
75 77.4
80 71.3 73 73 71.2 73
67.8 66 67.5
70 62.6 61 64.5
56 56
60
50
37.3
40
30
20
10
0

F1-Score

F1-Score
Hassasiyet(precision)

Hatırlama(recall)

Hassasiyet(precision)

Hatırlama(recall)
Doğruluk (accuracy)

Doğruluk (accuracy)
Hibrit Sistem Başarı Performansı(%) Weka Apriori Algoritması Başarı
Performansı(%)

Test Müşterisi 272479359 İçin Test Seti İçin

Değerlendirme sonuçları Şekil 5.14’te ve değerlendirme grafiği Şekil 5.15’te


belirtildiği gibi özetlenirse hibrit sistem hem test müşterisi için hem de genel başarı
durumlarına bakıldığında Weka Apriori algoritmasına göre daha başarılıdır. Hibrit
sistem Test Müşterisi 272479359 için bakıldığında %73 oranında doğruluk
yakalarken, Weka Apriori algoritması Test Müşterisi 272479359 için %56 oranında
doğruluk yakalayabilmiştir. Hibrit sistem Test Müşterisi 272479359 için %75
hassasiyet, %73 hatırlama, %73 f1-score oranı yakalarken, Weka Apriori
algoritması Test Müşterisi 272479359 için %66 hassasiyet, %56 hatırlama, %61
f1-score oranı yakalamıştır.

Hibrit sistemin test setindeki her bir müşteri için toplam doğruluk oranı %67.8,
Weka Apriori algoritmasının test setindeki her bir müşteri için toplam doğruluk
oranı %37.3’tür. Hibrit sistem test setindeki her bir müşteri için %71.3 hassasiyet,
%77.4 hatırlama, %71.2 f1-score oranı yakalarken, Weka Apriori algoritması test
setindeki her bir müşteri için %67.5 hassasiyet, %62.6 hatırlama, %64.5 f1-score
oranı yakalamıştır.

69
5.4 SANKEY DİYAGRAMI İLE VERİ GÖRSELLEŞTİRME

Verilerin Sankey diyagramıyla görselleştirilmesi yapılmadan önce veri setinin


tamamında Kontrat Başlangıç tarihleri 1-3 arasında Q1, 4-6 arasında Q2, 7-9
arasında Q3, 10-12 arasında Q4 olarak gruplandırılmış, bu çeyreklerdeki toplam
satış verileri Şekil 5.9’da belirtilen grafikle gösterilmiştir.

Şekil 5.16: Sankey diyagramıyla veri görselleştirme

70
6. TARTIŞMA VE SONUÇ

Bu çalışmanın amacı Banka verileri kullanılarak ürün önermesi yapabilmektir.


Çalışmada bu amaca ulaşabilmek için kullanılan yöntemler, desteklenen
grafiklerle açıklanmaya çalışılmış, geliştirilen hibrit sistemin WEKA’ya göre
başarısı karşılaştırılmıştır.
Çalışma kapsamında kullanılan veriler daha önce hiçbir akademik çalışmada
kullanılmamış özgün verilerdir. Özel bir bankaya ait olan bu veriler gerekli
güvenlik izinleri doğrultusunda maskelenerek alınmış, KVKK kapsamında
müşterilerin demografik bilgileri kullanılmamıştır. Bu sebeple bankaya yeni bir
müşteri geldiğinde banka sisteminde daha önce ürünü olmadığı için öneri
verilememektedir. Bu kapsamdan yola çıkılarak bankadan daha önce ürün alan
müşteriye hangi ürünleri önereceğimiz noktasında, kişiye özel bir ürün önerme
sistemi geliştirilmiştir.
Bu sebeple bankadan alınan 600.000 satırlık verilerin tamamını Apriori
algoritmasıyla kurallar bulunup bu kuralları seçtiğimiz bu müşteriye
uyguladığımızda, elimizdeki tüm müşterilerle önerme yapmak doğru sonuçlar
vermeyebilir. Ürün satın alma davranışı bu seçtiğimiz müşteriye benzemeyen
pek çok müşteri de bu data içinde yer almaktadır.
Çalışmanın yol haritasında öncelik bu müşteriye benzer müşterileri bulmak
olmuştur. İlk olarak veri setinde en çok ürün alan 100 müşterinin hangi ürünleri
aldığı kontrol edilmiş ancak en çok alınan ürünleri almadıkları görülmüştür. Bu
yüzden en çok satın alınan ürünlerden bir tanesi seçilip buna benzer 15 adet ürün
benzerlik algoritmasıyla bulunmuş, daha sonra bu ürünleri satın alan müşteriler
listelenmiştir.
Yine benzerlik algoritmasından yararlanılarak seçtiğimiz bu müşteriye benzeyen
müşterileri alarak Apriori algoritması uygulanmıştır. Veri görselleştirmesi
noktasında ise Sankey diyagramından yararlanılmıştır.
Elde edilen sonuçlarda, geliştirilen hibrit sistemin hem seçilen test müşterisi hem
de toplam test seti için doğruluk, hassasiyet, hatırlama, f1-score
performanslarının Weka Apriori algoritmasına göre daha yüksek olduğu
görülmüştür.

71
Gelecek çalışmalarda daha önce satın aldığı ürünü olmayan, sisteme yeni gelen
bir müşterinin verileri de eklenerek modelin başarısı artırılabilir. Sadece
bankacılık sistemi dataları kullanılmadan demografik bilgilerle de şehir,
cinsiyet, eğitim durumu gibi benzerliklere de bakılarak ürün önermesi
yapılabilir.

72
KAYNAKÇA

Kitaplar

Bobadilla, J., Ortega, F., Hernando, A. ve Alcalá, J. (2011). Improving


Collaborative Filtering Recommender System Results and Performance Using
Genetic Algorithms. Knowledge-based systems, 24(8), ss. 1310-1316.

Frawley W., Piateski G., 1991. Knowledge Discovery in Databases.

Hameed, M.A, Al Jadaan, O. ve Ramachandram, S. (2012). Collaborative Filtering


Based Recommendation System: A survey. International Journal on Computer
Science and Engineering, 4(5), ss.859.

Kotu V., Deshpande B., 2015. Predictive Analytics and Data Mining, Chapter 6:
Association Analysis, ss.195-216.

73
Süreli Yayınlar

Atalay M., Çelik E., 2017. Büyük Veri Analizinde Yapay Zeka ve Makine
Öğrenmesi Uygulamaları, 22. , Aralık 2017,

https://dergipark.org.tr/en/download/article-file/387269. [erişim tarihi:


04.03.2020] .

Bankacılıkta Yapay Zeka, 2017. Technology Vision 2017 [online]


https://www.accenture.com/t20170322T205838__w__/us-en/_acnmedia/PDF-
47/Accenture- Banking-Technology-Vision-2017.pdf#zoom=50 [erişim tarihi
18.03.2020].

Çoban O., 2017. İltek Bülten Machine Learning, 12. İltek Günleri [online] 13 Mart
2017,https://issuu.com/oguzhancoban6/docs/__ltek_b__lten. [erişim tarihi:
05.02.2020] .

Taşcı S., 2015. İçerik Bazlı Medya Takip ve Haber Tavsiye Sistemi. [online] 11
Haziran 2015,https://docplayer.biz.tr/18224823-Icerik-bazli-medya-takip-ve-
haber-tavsiye-sistemi-content-based-media-tracking-and-news-recommendation-
system.html. [erişim tarihi: 13.03.2020] .

Utku A., Akçayol A., 2017. Tavsiye Sistemlerinde Büyük Verinin Kullanımı
Üzerine Kapsamlı Bir İnceleme , Marmara Fen Bilimleri Dergisi, 4: 339-357.
[online] 2018, https://dergipark.org.tr/tr/download/article-file/624359 . [erişim
tarihi: 13.03.2020] .

Utku A., Akçayol A., 2017. Öğrenebilen ve Adaptif Tavsiye Sistemleri İçin
Karşılaştırmalı ve Kapsamlı Bir İnceleme , Erciyes Üniversitesi Fen Bilimleri
EnstitüsüDergisi, Cilt 33, Sayı 3. [online]
2017,https://dergipark.org.tr/tr/download/article-file/437577 [erişim tarihi:
13.03.2020] .

74
Diğer Yayınlar

Abdullah W., (2019). E-Ticaret için Ürün Tavsiye Sistem Geliştirmesi. Yüksek
Lisans Tezi. İstanbul: İstanbul Ticaret Üniversitesi.

Agrawal R., Imielinski T., Swami A., 1993. Mining Association Rules Between
Sets of Items in Large Databases [online], ResearchGate,

https://www.researchgate.net/publication/200043124_Mining_Association_Rules
_Be
tween_Sets_of_Items_in_Large_Databases_SIGMOD_Conference . [erişim tarihi:
09.02.2020].

Akbulut S., (2006). Veri Madenciliği Teknikleri ile Bir Kozmetik Markanın
Ayrılan Müşteri Analizi ve Müşteri Segmentasyonu. Yüksek Lisans Tezi. Ankara:
Gazi Üniversitesi.

Apriori Algorithm, Wikipedia, https://en.wikipedia.org/wiki/Apriori_algorithm


[erişim tarihi: 02.03.2020].

Apriori Algorithm, https://www.veribilimiokulu.com/associationrulesanalysis/


[erişim tarihi: 02.03.2020].

Apriori Algorithm, Mehmet Emin Eker Sunum. https://ab.org.tr/ab16/sunum/46.pdf


[erişim tarihi: 03.03.2020].

Ay D., (2009). Veri Madenciliği ve Apriori Algoritması ile Süpermarket Analizi.


Yüksek Lisans Tezi. İstanbul: Sakarya Üniversitesi.

75
Başarslan M., (2017). Telekomünikasyon Sektöründe Müşteri Kayıp Analizi.
Yüksek Lisans Tezi. Düzce: Düzce Üniversitesi.

Beser S., 2018. Makine Öğrenmesi Türkçe Kaynak: Makine Öğrenmesine Giriş,
Neden Makine Öğrenmesi Kullanıyoruz?

https://github.com/SerayBeser/makine-ogrenmesi/blob/master/README.md#1

[erişim tarihi 04.02.2020].

Cavique L., 2007. A Scalable Algorithm For The Market Basket Analysis, Journal
of Retailing and Consumer Services, Volume 14, Issue 6, 6 November 2007
Lisboa, Portugal, ss. 400-407.

Chiang W., 2011. To Mine Association Rules of Customer Values Via A Data
Mining Procedure with Improved Model: An Empirical Case Study, Expert System
with Aplications, Volume 38, 2011 Aletheia University, Taiwan, ss. 1716-1722.

Chiang D., Wang Y., Chen S., 2010. Analysis On Repeat-Buying Patterns,
Knowledge- Based Systems, Volume 23, Issue 8, December 2010 Taipei, Taiwan,
ss. 757-768.

Guil F., Marin R.,2013. A Theory of Evidence-Based Method for Assessing


Frequent Patterns, Expert System with Applications, Volume 40, Issue 8, 15 June
2013 Almeria, Spain, ss. 3121-3127.

Gülce A., (2010). Veri Madenciliğinde Apriori Algoritması ve Apriori


Algoritmasının Farklı Veri Kümelerinde Uygulanması. Yüksek Lisans Tezi.
Edirne: Trakya Üniversitesi.

Gülce D., (2015). İş Zekası Uygulamalarında Pazar Sepet Analizi. Yüksek Lisans
Tezi. İstanbul: İstanbul Üniversitesi.

76
Gürgen G., (2008). Birliktelik Kuralları ile Sepet Analizi ve Uygulaması. Yüksek
Lisans Tezi. İstanbul: Marmara Üniversitesi.

Hong T., Horng C., Wu C., Wang S., 2009. An Improved Data Mining Approach
Using Predictive Itemsets, Expert System with Applications, Volume 36, Issue 1,
January 2009 Kaohsiung, Taiwan, ss. 72-80.

Hsieh N., 2004. An integrated data mining and behavioral scoring model for
analyzing bank customers, Expert Systems with Applications, Volume 27, Issue 4,
November 2004 Taipei, Taiwan, ss. 623-633.

Jian Y., Shang J., Liu Y., 2010. Maximizing Customer Satisfaction Through an
Online Recommendation System: A novel associative classification model,
Decision Support System, Volume 48, Issue 3, February 2010 Anhui, China, ss.
470-479.

Kaur M., Kang S., 2016. Market Basket Analysis: Identify the Changing Trends of
Market Data Using Association Rule Mining, Procedia Computer Science, Volume
85, 2016 Sangrur, India, ss. 78-85.

Koçtürk Y., (2010). Veri Madenciliğinde Bağlılık. Yüksek Lisans Tezi. İstanbul:
İstanbul Teknik Üniversitesi.

Liu D., Lai C., Lee W., 2009. A Hybrid of Sequential Rules and Collaborative
Filtering For Product Recommendation, Information Sciences, Volume 179, Issue
20, 29 September 2009 Hsinchu, Taiwan, ss. 3505-3519.

77
Lee D., Park S., Moon S., 2013. Utility-Based Association Rule Mining: A
Marketing Solution For Cross-Selling, Expert System with Applications, Volume
40, Issue 7, 1 June 2013 Seoul, Korea, ss. 2715-2725.

Lee C. H., Kim Y. H., Rhee P. K., 2001. Web Personalization Expert With
Combining Collaborative Filtering and Association Rule Mining Technique,
Expert System with Applications, Volume 21, Issue 3, October 2001, South Korea,
ss. 131-137.

Liao S., Hsieh C., Huang S., 2008. Mining Product Maps For New Product
Development, Expert System with Applications, Volume 34, Issue 1, January 2008
Taipei, Taiwan, ss. 50-62.

Market Sepet Analizi, 7 Mart 2016.

https://zeynepaygun.wordpress.com/2016/01/07/sepet-analizi-ve-birliktelik-
kurallari/ [erişim tarihi : 09.02.2020].

Netflix Algoritması Nasıl Çalışıyor?, 2019.

http://www.sertacdoganay.com/netflix-algoritmasi/ [erişim tarihi : 09.02.2020].

Onat A., (2008). Veri Madenciliğinin Web Tabanlı Uygulamalarda İnsan


Uyumluluklarının Tesbiti Üzerine Bir Çalışma. Yüksek Lisans Tezi. Konya: Selçuk
Üniversitesi.

Özçakır F., (2006). Müşteri İşlemlerindeki Birlikteliklerin Belirlenmesinde Veri


Madenciliği Uygulaması. Yüksek Lisans Tezi. İstanbul: Marmara Üniversitesi.

Reinforcement Machine Learning. https://www.geeksforgeeks.org/what-is-


reinforcement-learning/

[erişim tarihi 08.02.2020].

78
Samuel A., Wikipedia, https://en.wikipedia.org/wiki/Arthur_Samuel [erişim tarihi
03.02.2020].

Sivri E., (2015). Veri Madenciliği/E-Ticaret Sitesi İçin Ürün Tavsiye Sistemi
Geliştirilmesi. Yüksek Lisans Tezi. İstanbul: İstanbul Ticaret Üniversitesi.

Suh E., Lim S., Hwang H., Kim S., 2004. A Prediction Model For The Purchase
Probability of Anonymous Customers to Support Real Time Web Marketing: A
Case Study, Expert Systems with Applications, Volume 27, Issue 2, 2 August 2004,
Korea, ss. 245-255.

Şen K., (2014). Bankacılıkta Müşteri Terk Modeli. Yüksek Lisans Tezi. İstanbul:
Yıldız Teknik Üniversitesi.

Thabtah F., Cowling P., Hammoud S., 2006. Improving Rule Sorting, Predictive
Accuracy and Training Time in Associative Classification, Expert Systems with
Applications, 2 August 2006, UK, ss. 414-426.

Tosun T., (2006). Veri Madenciliği Teknikleriyle Kredi Kartlarında Müşteri


Kaybetme Analizi. Yüksek Lisans Tezi. İstanbul: İstanbul Teknik Üniversitesi.

Uslu M., 2013. Birliktelik Kuralları Kullanılarak Pazar Sepet Analizi ( Market
Basket Analysis Using Association Rules)[online],
https://www.slideshare.net/uslumetin/birliktelik-kurallar-kullanlarak-pazar-sepeti-
analizi-market-basket-analysis-using-association-rules [erişim tarihi 9.02.2020].

79
Veri Madenciliği Nedir?,

https://blog.euromsg.com/data-mining-veri-madenciligi-nedir/. [erişim tarihi


04.03.2020].

Which Companies Use Recommender/Recommendation Systems?,

https://www.quora.com/Which-companies-use-recommender-recommendation-
systems.[erişim tarihi 09.02.2020].

Wen C., Liao S., Chang W., Hsu P., 2012. Mining Shopping Behavior In The
Taiwan Luxury Products Market, Expert System with Applications, Volume 39,
Issue 12, 15 September 2012 Taipei, Taiwan, ss. 11257-11268.

Weng C., 2017. Revenue Prediction By Mining Frequent Itemsets With Customer
Analysis, Engineering Applications of Artifical Intelligence, Volume 63, August
2017 Taichung, Taiwan, ss. 85-97.

Yüksel T., (2019). Dağıtık Sistemlerde Birliktelik Kuralları ile Sepet Analizi.
Yüksek Lisans Tezi. İstanbul: İstanbul Aydın Üniversitesi.

80
EKLER

81
Ek A.1 min_support değerinin hesaplanması

import pandas as pd
import numpy as np
df = pd.read_excel("C:\\Users\ekin\Desktop\ÜrünlerinToplamıSupport.xls")
df
sum_row=df[["URUN2","URUN39","URUN34","URUN45","URUN124","U
RUN51","URUN3","URUN21","URUN23","URUN46","URUN11","URUN4"
,"URUN35","URUN111","URUN49","URUN53","URUN22","URUN54","U
RUN52","URUN10","URUN27","URUN121","URUN47","URUN43","URU
N38","URUN24","URUN14","URUN19","URUN20","URUN44","URUN120
","URUN17","URUN37","URUN8","URUN125","URUN48","URUN1","UR
UN9","URUN18"]].sum()
sum_total = sum_row.sum()
divide = sum_total/6591
min_support = divide/39
min_support
for i in sum_row:
i= i/6591
print(i)

82
Ek A.2 Ürün 14’e benzeyen 15 adet ürün

import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from scipy import sparse
data = pd.read_excel('C:\\Users\ekin\Desktop\Filtering.xlsx')
data_items = data.drop('MUSTERI_NO', 1)
magnitude = np.sqrt(np.square(data_items).sum(axis=1))
data_items = data_items.divide(magnitude, axis='index')
def calculate_similarity(data_items):
data_sp = sparse.csr_matrix(data_items)
similarities = cosine_similarity(data_sp.transpose())
sim = pd.DataFrame(data=similarities, index= data_items.columns, columns=
data_items.columns)
return sim
data_matrix = calculate_similarity(data_items)
data_matrix.loc['URUN14'].nlargest(15)

Kaynak: https://medium.com/radon-dev/item-item-collaborative-filtering-with-binary-or-unary-data-
e8f0b465b2c3

83
Ek A.3 Cosine Similarity benzerliğinden yararlanılarak bulunan benzer
müşteriler

import pandas as pf
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
musteriUrun = pf.read_excel("C:\\Users\ekin\Desktop\musteri_urun.xlsx")
musteriListesi = musteriUrun['MUSTERI_NO'].unique().tolist()
urunListesi = musteriUrun['URUN_ID'].unique().tolist()
musteriUrun
musteriUrunListesi = []
kosinusDizisi = []

musteriSayisi = int(1000)
urunSayisi = int(10)
for musteri in musteriListesi[:musteriSayisi]:
musteriUrunListesi = []
for urun in urunListesi[:urunSayisi]:
kontrol = musteriUrun.where(musteriUrun['MUSTERI_NO'] ==
int(musteri)).where(musteriUrun['URUN_ID'] == int(urun)).count()
if kontrol.MUSTERI_NO and kontrol.URUN_ID:
musteriUrunListesi.append(int(urun))
else:
musteriUrunListesi.append(int(0))
kosinusDizisi.append([int(musteri), musteriUrunListesi])
oran = []
for i in range(musteriSayisi):
for j in range(musteriSayisi):
if j+1 < int(musteriSayisi):
a = np.array(kosinusDizisi[i][1])
b = np.array(kosinusDizisi[j][1])
if (kosinusDizisi[i][0] != kosinusDizisi[j][0]):

84
oran.append([kosinusDizisi[i][0],kosinusDizisi[j][0],
cosine_similarity(a.reshape(1,urunSayisi), b.reshape(1,urunSayisi))])
oran

85
Ek A.4 Benzer ürünleri alan müşteriler için verinin Apriori algoritmasına
uygun hale getirilmesi

import pandas as pf
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
data = pf.read_excel('C:\\Users\ekin\Desktop\data.xlsx')
musteriUrun = pf.read_excel('C:\\Users\ekin\Desktop\musteri_urun.xlsx')
urunListesi = musteriUrun['URUN_ID'].unique().tolist()
musteri1Listesi = data['MUSTERI1'].unique().tolist()
musteri2Listesi = data['MUSTERI2'].unique().tolist()
#urunListesi = musteriUrun['URUN_ID'].unique().tolist()
musteri2Listesi.append(musteri1Listesi[0])
urunSayisi = int(15)
musteriUrunListesi = []
aprioriDizisi = []
for musteri in musteri2Listesi:
musteriUrunListesi = []
for urun in urunListesi[:urunSayisi]:
kontrol = musteriUrun.where(musteriUrun['MUSTERI_NO'] ==
int(musteri)).where(musteriUrun['URUN_ID'] == int(urun)).count()
if kontrol.MUSTERI_NO and kontrol.URUN_ID:
musteriUrunListesi.append(int(1))
else:
musteriUrunListesi.append(int(0))
aprioriDizisi.append([int(musteri), musteriUrunListesi])
aprioriDizisi

86
Ek A.5 Hibrit model için min_support değerinin hesaplanması
import pandas as pd
import numpy as np
df = pd.read_excel("C:\\Users\ekin\Desktop\ÜrünlerinToplamı2.xls")
df
sum_row=df[["URUN111","URUN14","URUN10","URUN120","URUN39","
URUN8","URUN47","URUN34","URUN23","URUN9","URUN121","URUN
48","URUN17","URUN125","URUN1"]].sum()
sum_total = sum_row.sum()
divide = sum_total/999
min_support = divide/15
min_support
for i in sum_row:
i= i/999
print(i)

87
Ek A.6 Apriori algoritması

import numpy as np
import pandas as pd
from apyori import apriori
book_data=pd.read_excel("C:\\Users\ekin\Desktop\Azalan.xlsx",header=None
)
book_data
book_data.loc[0,~book_data.loc[0,:].isnull()]
items=[]
for i in np.arange(book_data.shape[0]):
items.append([str(book_data.values[i,j]) for j in range(0,15)])
for row in items:
for cell in row:
if cell=='0':
row.remove(cell)
else:continue
items
final_rule=apriori(items,min_support=0.5,min_confidence=0.7,min_lift=1.18,
min_length=3)
final_result=list(final_rule)final_result=list(final_rule)
len(final_result)

88
Ek A.7 Sankey diyagramı

import json, urllib


import plotly as py
import pandas as pf
import numpy as np
import random as r
data = pf.read_excel('C:\\Users\ekin\Desktop\Sankey.xlsx')
dataList = data.values.tolist()
yilListesi = []
ceyrekSatisMiktari = []
yilSatisMiktari = []
label = []
color=[]
source = []
target =[]
colorLine=[]
dictSource = dict()
for i in data.where(data['YIL'] > 2015)['YIL'].unique().tolist():
if not np.isnan(i):
yilListesi.append(str(int(i)))
yilSatisMiktari.append(data.where(data['YIL'] == i)['ADET'].sum())

ceyrekSatisMiktari.append(data.where(data['CEYREK']=="Q1").where(data['
YIL'] == i)['ADET'].sum())

ceyrekSatisMiktari.append(data.where(data['CEYREK']=="Q2").where(data['
YIL'] == i)['ADET'].sum())

ceyrekSatisMiktari.append(data.where(data['CEYREK']=="Q3").where(data['
YIL'] == i)['ADET'].sum())

89
ceyrekSatisMiktari.append(data.where(data['CEYREK']=="Q4").where(data['
YIL'] == i)['ADET'].sum())
label.append("Toplam Satış")

for yil in yilListesi:


label.append(str(yil))

for ceyrek in data['CEYREK'].unique().tolist():


label.append(str(ceyrek))

for index in range(0, len(yilListesi)):


source.append(0) #İLK KOLON

temp = ""
for yil in yilListesi:
for j in range(0, len(data['CEYREK'].unique().tolist())):
if (temp == yil):
source.append(source[len(source) - 1])
dictSource[yil] = source[len(source) - 1]
else:
source.append(source[len(source) - 1] + 1)
dictSource[yil] = source[len(source) - 1]
temp = yil
temp = ""
for ceyrek in data['CEYREK'].unique().tolist():
if(temp == ceyrek):
source.append(source[len(source) - 1])
dictSource[ceyrek] = source[len(source) - 1]
else:
source.append(source[len(source) - 1] + 1)
dictSource[ceyrek] = source[len(source) - 1]

90
temp = ceyrek
for yil in yilListesi:
target.append(dictSource[str(yil)])
for i in range(0, len(yilListesi)):
for ceyrek in data['CEYREK'].unique().tolist():
target.append(dictSource[ceyrek])
red = str(int(r.uniform(0, 255)))
green = str(int(r.uniform(0,255)))
blue = str(int(r.uniform(0, 255)))

color.append("rgb(" + red + "," + green + "," + blue +")")

for index in range(0, len(yilListesi)):


colorLine.append("rgba(" + red + "," + green + "," + blue + ", 0.3)")

temp = ""
for i in range(0, len(yilListesi)):
if temp != yilListesi[i]:
temp = yilListesi[i]
red = str(int(r.uniform(0, 255)))
green = str(int(r.uniform(0,255)))
blue = str(int(r.uniform(0, 255)))

color.append("rgb(" + red + "," + green + "," + blue +")")


for j in range(0, len(data['CEYREK'].unique().tolist())):
colorLine.append("rgba(" + red + "," + green + "," + blue + ", 0.3)")

for i in range(0,len(data['CEYREK'].unique().tolist())):
color.append("rgb(255, 0, 0)")
colorLine.append("rgba(255, 0, 0, 0.3)")

91
value = yilSatisMiktari + ceyrekSatisMiktari
sankey = dict(
type='sankey',
node = dict(
pad = 15,
thickness = 20,
line = dict(
color = "black",
width = 0.5
),
label=label,
color=color
),
link = dict(
source = source,
target = target,
value = value,
color = colorLine ))
fig = dict(data=[sankey])
py.offline.iplot(fig, validate=False)

92
Ek A.8 Hibrit sistemin test müşterisi için performansı
import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
predicted = [1,1,1,1,1,1,0,0,1,0,0,0,0,1,0]
actual = [1,1,1,1,0,1,0,1,1,1,0,0,0,1,1]
matrix = confusion_matrix(predicted,actual, labels=[0,1])
print('Confusion matrix : \n',matrix)
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
print('Outcome values : \n', tp , fn , fp , tn)
matrix = classification_report(predicted,actual,labels=[0,1])
print('Classification report : \n',matrix)

93
EK A.9 %30 Test verisiyle hibrit sistemin doğruluk oranı performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import balanced_accuracy_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Matris.xlsx')
kayitSayisi = 300
aprioriListesi = data.values.tolist()
actualListe = []
predicted =[1,1,1,1,1,1,0,0,1,0,0,0,0,1,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:

matrix = confusion_matrix(predicted,actual, labels=[0,1])


tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
print('Classification report : \n',matrix)
score = score + balanced_accuracy_score(predicted, actual)

print('Toplam başarı:', score / len(actualListe));

94
Ek A.10 %30 Test verisiyle hibrit sistemin hassasiyet oranı performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Matris.xlsx')
kayitSayisi = 300
aprioriListesi = data.values.tolist()
actualListe = []
predicted =[1,1,1,1,1,1,0,0,1,0,0,0,0,1,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
#print('Classification report : \n',matrix)
score = score + precision_score(predicted, actual)
print('Toplam hassasiyet oranı:',score / len(actualListe));

95
Ek A.11 %30 Test verisiyle hibrit sistemin hatırlama oranı performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import recall_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Matris.xlsx')
kayitSayisi = 300
aprioriListesi = data.values.tolist()
actualListe = []
predicted =[1,1,1,1,1,1,0,0,1,0,0,0,0,1,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
#print('Classification report : \n',matrix)
score = score + recall_score(predicted, actual)
print('Toplam hatırlama oranı:',score / len(actualListe));

96
Ek A.12 %30 Test verisiyle hibrit sistemin f1-score oranı performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import f1_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Matris.xlsx')
kayitSayisi = 300
aprioriListesi = data.values.tolist()
actualListe = []
predicted =[1,1,1,1,1,1,0,0,1,0,0,0,0,1,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
#print('Classification report : \n',matrix)
score = score + f1_score(predicted, actual)
print('Toplam f1-score oranı:',score / len(actualListe));

97
Ek A.13 Weka Apriori algoritmasının test müşterisi için performansı
import pandas as pd
import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import average_precision_score
from sklearn.metrics import balanced_accuracy_score
predicted =
[1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
actual =
[0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0]
matrix = confusion_matrix(predicted,actual, labels=[0,1])
print('Confusion matrix : \n',matrix)
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
print('Outcome values : \n', tp , fn , fp , tn)
matrix = classification_report(predicted,actual,labels=[0,1])
print('Classification report : \n',matrix)

98
Ek A.14 %30 Test verisiyle Weka Apriori algoritmasının performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import balanced_accuracy_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Wekatestmetrik.xlsx')
kayitSayisi = 1978
aprioriListesi = data.values.tolist()
actualListe = []
predicted=
[1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
print('Classification report : \n',matrix)
score = score + balanced_accuracy_score(predicted, actual)
print('Toplam başarı:', score / len(actualListe));

99
Ek A.15 %30 Test verisiyle Weka Apriori algoritmasının hassasiyet oranı
performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Wekatestmetrik.xlsx')
kayitSayisi = 1978
aprioriListesi = data.values.tolist()
actualListe = []
predicted =
[1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
score = score + precision_score(predicted, actual, average='weighted')
print('Toplam hassasiyet oranı:', score / len(actualListe));

100
Ek A.16 %30 Test verisiyle Weka Apriori algoritmasının hatırlama oranı
performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import recall_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Wekatestmetrik.xlsx')
kayitSayisi = 1978
aprioriListesi = data.values.tolist()
actualListe = []
predicted =
[1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
score = score + precision_score(predicted, actual, average='weighted')
print('Toplam hatırlama oranı:', score / len(actualListe));

101
Ek A.17 %30 Test verisiyle Weka Apriori algoritmasının f1-score oranı
performansı
import pandas as pd
import seaborn as sn
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import f1_score
data = pd.read_excel('C:\\Users\ekin\Desktop\Wekatestmetrik.xlsx')
kayitSayisi = 1978
aprioriListesi = data.values.tolist()
actualListe = []
predicted=
[1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]
for apriori in aprioriListesi[:kayitSayisi]:
apriori.pop(0)
actualListe.append(apriori)
score = 0
for actual in actualListe:
matrix = confusion_matrix(predicted,actual, labels=[0,1])
tp , fn , fp , tn = confusion_matrix(predicted,actual,labels=[0,1]).reshape(-1)
matrix = classification_report(predicted,actual,labels=[0,1])
score = score + f1_score(predicted, actual, average='weighted')
print('Toplam f1-score oranı:', score / len(actualListe));

102
ÖZGEÇMİŞ

Adı Soyadı : Ekin ERDOĞDU

Doğum Yeri ve Yılı : Konya/Ereğli,1991

Adres: Mecidiyeköy/İstanbul

Yabancı Dili : İngilizce

İlk Öğretim : Şehit Kamil Atalay İlk Öğretim Okulu,2005

Orta Öğretim : Konya/Ereğli Anadolu Lisesi,2009

Lisans : Gaziantep Üniversitesi Elektrik Elektronik Mühendisliği,2015

Yüksek Lisans : Bahçeşehir Üniversitesi,2020

Enstitü Adı : Fen Bilimleri Enstitüsü

Program Adı : Bilgi Teknolojileri

Çalışma Hayatı : TEB (Türk Ekonomi Bankası) - Otomasyon Mühendisi, Test


Otomasyon ve Önyüz Yönetimi Proje Uzmanı 2019-Devam ediyor.

Ziraat Teknoloji - Otomasyon Mühendisi, 2018-2019

Anadolu Sigorta - Otomasyon Mühendisi, 2017-2018

103

You might also like