-

Microsoft Birliktelik Kuralları

Microsoft Birliktelik Kuralı öneri sistemlerinde kullanılmak üzere Sql Server’ın Analiz Servisleri tarafından sağlanan bir çeşit birliktelik kuralıdır. Öneri sistemleri müşterilerin daha önce yaptıkları alışverişlere bağlı olarak ürün satın almaları için tavsiyede bulundukları sistemdir. Microsoft Birliktelik Kuralı, pazar sepeti analizlerinde kullanılan faydalı bir yöntemdir. Microsoft Birliktelik Kuralı Apriori Algoritması’nı kullanmaktadır.

Microsoft Birliktelik Kuralı’nın nasıl çalıştığını, projeye nasıl entegre olduğunu göstermek için Sql Server Tutorial’dan alıntılanan örnek uygulamayı anlatacağım. Microsoft Birliktelik Kuralı örneğini uygulamak için Sql Server Data Tools geliştirme aracından yeni proje eklenir. Şekil 1’de görülen yeni proje ekleme ekranı açıldığında “Business Intelligence/Analysis Services” altındaki “Analysis Services Multidimensional and Data Mining Project” ismindeki proje tipi seçilir.

Şekil1

 

Bütün iş zekası uygulamalarında olduğu gibi bir veri kaynağına ihtiyaç duyulur. Veri kaynağı eklenmeye çalışıldığında karşımıza wizard (sihirbaz) ekranı çıkacaktır. Sihirbaz ekranı ilerletildiğinde yeni veri kaynağı eklenebilecek Şekil 2’deki ekran açılır.

Şekil2

 

Şekil 2’deki “Solution Explorer” bölümünde görüldüğü gibi veri kaynağı ekledikten sonra ilgili tabloları çekmek üzere kullanılacak veri kaynağı görüntülerini (data source views) eklemek gerekmektedir. View (sanal tablo) ’leri eklemek için “Data Source Views”e sağ tıklayıp “New Data Source View” seçilir. Açılan Şekil 3’deki sihirbaz ekranında önceden oluşturulmuş vAssocSeqOrdersvve VAssocSeqLineItems ismindeki view’ler eklenir.

Şekil3

 

Bu aşamada view’lerin içeriğinden bahsetmek faydalı olacaktır. AdwentureWorks Veri Ambarı’nda internet üzerinden alışveriş yapan her kullanıcının kendi sepeti vardır ve alınacak ürünler sepet içerisinde biriktirilir. Pazar sepeti analizleri için her alışveriş sepetindeki ürün küme olarak değerlendirilir ve ürünler arasındaki ilişki sepetteki ürünler arasındaki ilişkiden yola çıkılarak yapılır. Bu yüzden FactInternetSales tablosundan başlayıp diğer tablolar ile ilişkiler kurulur. Eklenen iki view’de kullanılan vDMPrep ismideki view’in Sql sorgusu aşağıdaki gibidir;

sql1

2008 yılındaki satışlar ve satın alma bilgilerini gösteren vAssocSeqOrders view’inSql sorgusu aşağıdaki gibidir;

sql2

2008 yılındaki satışlar için vAssocSeqLineItemsSql sorgusuaşağıdaki gibidir;

sql3

 

 

 

Veri kaynağı olarak kullanılan view’ler eklendikten sonra iki tablo arasındaki bağlantı Şekil 4’deki gibi belirtilmelidir, iki tablodaki OrderNumber kolonu bağlanmalıdır. Bu bağlantının VAssocSeqLineItems’dan vAssocSeqOrdersv olması gerekir.

şekil4

 

Sonraki adımda veri madenciliği yapısı (mining structure) ve modeli seçilmelidir. Şekil 2’de görünen “Solution Explorer” bölümündeki “Mining Model” seçeneği sağ tıklandığında çıkan “New Mining Structure” seçilir. Açılan sihirbaz ekranı ilerletildiğinde farklı madencilik modellerinin seçilebileceği Şekil 5’deki ekran ile karşılaşılır, bu ekranda Microsoft Analiz Servisleri’nin desteklemiş olduğu madencilik modelleri görülebilir, bu örnek için “Microsoft Association Rules” seçilir.

şekil5

 

Birliktelik Kuralları’nda eklenen tablolarda case ve nested tablolar yer almaktadır. Case tablosu müşteri ile ilgili bilgileri içeren, nested tablo ise sipariş ile alakalı bilgi içeren tablodur. Bu yüzden vAssocSeqOrders tablosu case, vAssocSeqLineItems tablosu nested tablo olarak Şekil 6’daki gibi seçilir. Şekil 4’deki OrderNumber kolonu bağlantısı kurulurken nested tablodan case tabloya olmasına dikkat edilmelidir.

Şekild6

 

Case ve nested tabloların seçildiği ekran ilerletildiğinde eğitim verisinin (training data) seçildiği Şekil 7 ekranı açılacaktır. Case tablosundaki OrderNumber, Age, Gender, Region, IncomeGroupkolonları seçilir. Seçilen kolonlar madencilik yapısına dahil edilmiştir anlamına gelir. Pazar Sepeti Analizi her biralışverişte hangi ürünler alındı, kısmı ile ilgilendiği içinCustomerKeykolonunu eklemeye gerek bulunmamaktadır. OrderNumber kolonu anahtar (key) alan olarak seçilmelidir. Case tablosundan Model kolonunu key alan olarak seçip modele dahil edilmiş olur.

şekil7

 

Girdi (input) olarak seçilen alanlar Birliktelik Kuralları oluşturulurken kuralın içinde yer alan bir parametre olacaktır. Yapılan seçimler ile madencilik modeli Şekil 8’deki gibi oluşur, yapıya dahil edilen kolonlar sonradan input’a dönüştürülerek de kullanılabilir.

şekil8

 

Madencilik yapısı eklendikten sonra cinsiyet (gender) bilgisi Input olarak değiştirilir, sonuçları görebilmek için Şekil 9’daki “Mining Model Viewer” bölümü açılır, bu alan açıldığında projenin yayınlanacağı(deploy) bilgisi verilir ve proje yayınlandıktan sonra Şekil 9’daki Birliktelik Kuralları oluşur.

şekil9

 

“Mining Model Viewer” ekranında olasılık (probability) ve güven (support, importance) değerleri verilir, varsayılan (default) olarak olasılık=0.40, güven=0.15 olarak gelmektedir, bu değerler değiştirilerek kullanılabilir. Olasılık değeri 0.40’dan ve güven değeri 0.15’den büyük olan kuralların listesine bakıldığında model ve cinsiyet değerlerini parametre alarak kurallar oluşturulmuştur. Verilen olasılık ve güven değerleri ile 64 tane kural oluşturulmuş, çıkan kurallardan bazıları analiz edilecek olursa;

ML Mountain Tire = Existing, Sport 100 = Existing > Mountain Tire Tube = Existing:

ML Mountain Tire ürünü ile Sport 100 ürününü birlikte alan müşteriler 0.985 olasılık ile Mountain Tire Tube de satın alır.

Road Bottle Cage = Existing, Gender = M > Water Bottle = Existing:

Road Bottle Cage ürünü alan erkek müşteriler 0.890 olasılık ile Water Bottle de satın alır.

Bu kuralların kullandığı yaygın öğe kümeleri Şekil 10’dan görülebilir. Şekilde görüldüğü gibi 247 adet yaygın öğe kümesi bulunmuş. Minimum güven sayısı olarak 213 verildiğinde 213’den büyük değerdeki kümeler kurallara dahil edilir. Örneğin Road Bottle Cage, Water Bottle ürünler erkek müşteriler tarafından 764 defa aynı siparişte satın alınmış, aynı ürünler kadın müşteriler tarafından 749 defa birlikte satın alınmıştır.

şekil10

 

Kaynaklar:

[1]   Microsoft Association Algorithm, https://msdn.microsoft.com/en-us/library/  ms174916.aspx, [Ziyaret tarihi:30 Mart 2015].

Veri Madenciliği Programlama- DMX (Data Mining Extensions)

Sql Server madencilik Api (Application Programming Interfaces) leri aşağıdaki gibidir;

  • Oledb (Ole For Databases)
  • Ado (Activex Data Objects)
  • Ado.Net (Activex Data Objects For .Net)
  • Adomd.Net (Activex Data Objects (Multidimensional) For .Net)
  • Server Adomd.Net (Server Activex Data Objects (Multidimensional) For .Net)
  • Amo (Analysis Management Objects)
  • Dmx (Data Mining Extensions)
  • Xmla (Extensible Markup Language For Analysis)

Sql Server Analiz Servisleri için bu Api’lerden;

  • Ado Microsoft AciveX Data Object referansı ile
  • Adomd.Net Microsoft.AnalysisServices.AdomdClientreferansı ile
  • Server Adomd.Net Microsoft.AnalysisServices.AdomdServer referansı ile
  • Amo Microsoft.AnalysisServices veya Microsoft.DataWareHouse.Interfaces referansı ile

Visual Studio’da kullanılabilir.

Dmx (Data Mining Extensions)

Dmx Microsoft Sql Server Analiz Servisleri’nde veri madenciliği modelleri oluşturmak ve onlar üzerinde deneme, arama ve aynı zamanda tahmin yürütmeyi sağlamak üzere geliştirilmiş bir dildir. Dmx cümleleri iki çeşit olabilir; veri tanımlayıcı cümleler (data definition statements) ve veri düzenleyici cümleler (data manipulation statement). Veri düzenleyici cümleler yeni veri madenciliği yapısı ekleme, içe aktarma (import), dışa aktarma (export), var olan modeli silme gibi işlemleri gerçekleştirir. Veri tanımlayıcı cümlelerde aşağıdaki yapılar kullanılabilir;

CREATE MINING STRUCTURE

CREATE MINING MODEL

ALTER MINING STRUCTURE

EXPORT

IMPORT

SELECT INTO

DROP MINING STRUCTURE

Veri düzenleyen cümleler ise var olan model üzerinde arama işlemi yapmak, modelde güncelleme yapmak ve tahmin yürütmek işlemlerini gerçekleştirir. Veri düzenleyen cümleler aşağıdaki yapıları kullanabilir;

INSERT INTO

SELECT DISTINCT FROM <MODEL > (DMX)

SELECT FROM <MODEL>.CONTENT (DMX)

SELECT FROM <MODEL>.CASES (DMX)

SELECT FROM <MODEL>.SAMPLE_CASES (DMX)

SELECT FROM <MODEL>.DIMENSION_CONTENT (DMX)

SELECT FROM <model> PREDICTION JOIN

DELETE (DMX)

SELECT FROM <model> PREDICTION JOIN cümlesi 3 kısımdan oluşur;

  • Sonuç kümesi olarak dönen kümede  yer alan madencilik modeli kolonlarının bir listesi ve tahminlemede kullanılan fonksiyonlar,
  • Tahminleme oluşturmak için kullanılacak olan kaynak sorgu,
  • Madencilik modeli kolonları ile kaynak veri arasındaki eşleşme.

SELECT FROM <model> PREDICTION JOIN kullanımı aşağıdaki gibidir;

dmx1

Kod bloğundaki ilk satır madencilik modelinden gelmesi beklenen kolonları belirtmektedir. [NATURAL] PREDICTION JOIN kısmı hangi işlemin yapılacağını gösterir. Devamındaki kısım ise müşterinin Pazar sepetindekiürünlerini temsil etmektedir.

Eğer tahmin işlemine minimum olasılık değeri de dahil edilmek istenirse, <select list> yerine PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)

eklenmelidir. Bu metottaki ilk parametre modeldeki hangi kolonun değerinin gösterileceği, ikinci parametre destek, olasılık ve düzeltilmiş olasılık (adjusted probablity) değerlerinin sonuç kümesinde yer alacağını, 3 olarak yazan parametre ise ürünle ilişkili olan ilk 3 ürünün sonuç kümesinde gösterileceğini tarif etmektedir.

Dmx Sorguları

Bu kısımda daha önceden oluşturulmuş madencilik modeli, Association, kullanılarak örnek Dmx sorguları oluşturulmuştur. Madencilik modeli oluşturulurken veri kaynağı olarak Microsoft’un ücretsiz kullanıma sunduğu örnek veri tabanı olan AdventureWorks kullanılmıştır. Aşağıdaki kod bloğundaki amaçWater Bottle ürününü satın alan müşterilerin alabileceği ilk 5 ürünü ihtimalleri ile ortaya koymaktır. Predict metoduna INCLUDE_STATISTICS parametresi eklenerek sonuç kümesine destek ve olasılık değerlerinin de dahil edileceği belirtilmektedir.

dmx2

Aşağıdaki tabloda Water Bottle ürününü satın alan müşterilerinin bu ürün ile birlikte alma ihtimali olabilecek ilk 5 ürün listelenmektedir. Tabloya bakıldığında %39 olasılık ile Water Bottle ürününü alan müşteriler Mountain Bottle Cage ürününü de satın alır, sonucuna varılabilir.

Model $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Mountain Bottle Cage 1941 0.398184495 0.676180659
Road Bottle Cage 1702 0.371197252 0.682846288
Cycling Cap 2095 0.146957802 0.549763307
Mountain-200 2477 0.144504416 0.526861463
Road-750 1443 0.118989205 0.569686621

 

Bir sonraki örnek senaryo; Mountain Bottle Cage ürününü alan erkek müşterilerin satın alma ihtimali olan ilk 3 ürün, bu bilgi aşağıdaki kod bloğu ile elde edilmektedir. Madencilik modeli oluşturulurken cinsiyet bilgisi de input (girdi) olarak eklenmiş, bu yüzden Dmx sorgusuna input olarak cinsiyet bilgisi de eklenebilir.

Dmx3

Yukarıdaki Dmx sorgunun sonucu aşağıdaki tablo vermektedir. Tabloya göre Mountain Bottle Cage ve Mountain Tire Tube ürünü satın alan erkek müşterilerin sırası ile Water Bottle, HL Mountain Tire, ML Mountain Tire ürün modellerini alma ihtimalleri vardır,  %31 olasılık ile Mountain Bottle Cage ve Mountain Tire Tube ürünü alan erkek müşteriler HL Mountain Tire ürünü de alır, sonucu çıkarılabilir.

Tablo 4.5: Dmx sorgusu sonucunda oluşan tahmin kümesi.

Model $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Water Bottle 4076 0.836166924 0.676180659
HL Mountain Tire 1331 0.314649243 0.691508771
ML Mountain Tire 1083 0.25 0.688964227

 

Kaynaklar:

[1]   MacLennan, J., Tang, Z., Crivat, B., 2008, Programming Sql Server Data Mining, Data Mining with Microsoft SQL Server 2008, Chapter 16, Wiley Publishing Inc., ISBN: 978-0-470-27774-4, 487-580.

[2]    Data Mining Extensions (DMX) Reference, https://msdn.microsoft.com/en-us/ library/ms132058.aspx, [Ziyaret tarihi:30 Mart 2015].

[3]    Lesson 4: Executing Market Basket Predictions, https://msdn.microsoft.com/en-us/library/ms345329.aspx, [Ziyaret tarihi:10 Nisant 2015].