<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Olay Kayıtları Ürün ve Platform Kodu Tespit Süreci Otomasyonu</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ethem Utku Aktaş</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aziz Göktepe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gamze Pehlivan</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ümit Ülkem Yıldırım</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cemal Yılmaz</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Arge Merkezi</institution>
          ,
          <addr-line>Softtech A.Ş., İstanbul</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Mühendislik ve Doğa Bilimleri Fakültesi, Sabancı Üniversitesi</institution>
          ,
          <addr-line>İstanbul</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <fpage>432</fpage>
      <lpage>443</lpage>
      <abstract>
        <p>Özet. Yazılım ürünleri ile ilgili sorunların kayıt altına alınarak takibi ve çözümlenmesi için çeşitli platformlar mevcuttur. Bu kayıtların, ilgili platformlar aracılığıyla, büyük bir yazılım şirketindeki hangi ekibe iletilmesi gerektiği, kaydın çözümünde vakit kaybına neden olabilen önemli bir operasyonel sorundur. Softtech A.Ş. sahipliğindeki yazılım ürünlerine ait sorunların takibi de bir olay kaydı takip platformu aracılığıyla yapılmaktadır. Gelen kayıtların girişleri teknik olmayan yardım masası çalışanlarınca yapılmakta ve ilgili yazılım ekibine yönlendirilmektedir. Kaydı açan çalışanlar kayıtla ilişkili yazılım ürün kodu ve platform kodu bilgisi girişlerini yapmakta, bu girişler kaydın hangi yazılım ekibine atanacağını belirlemektedir. Ancak giriş yapan kişilerin ürün kodu ve platform kodu ile ilgili detaylı bilgi sahipliği bulunmamasının yanında, hatalı giriş yapılması kaydın farklı ekipler arasında dolaşmasına ve geç çözülmesine neden olabilmektedir. Bu çalışma ile ürün kodu ve platform kodu girişlerinin otomasyonu hedeflenmiştir. Yapılan kapsamlı testler sonucunda %66 f-skor ve %67 doğruluk değerlerine ulaşılmıştır. Anahtar kelimeler: metin madenciliği, sınıflandırma algoritmaları, yazılım olay takip.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>solution of records. In this study, it’s aimed to automate the process of assigning
product and platform codes for issue records. As a result of comprehensive tests,
66% f-score and 67% accuracy were obtained.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>Yazılım uygulamalarına ilişkin sorunları takip etmek için olay kayıtları veya hata
raporu takip sistemleri kullanılmaktadır. Proje veya yazılım şirketi küçükse excel
tabloları izleme ve takip için yeterli olabilmektedir. Ancak büyük bir proje veya şirket
söz konusu olduğunda olay kaydı takip sistemlerine ihtiyaç duyulmaktadır.</p>
      <p>
        Olay kayıtlarının takibi için çeşitli sistemler bulunmaktadır. Büyük yazılım
sistemlerinde bu takibin zorluğunu anlamak için Bugzilla’yı inceleyebiliriz. Bugzilla,
açık kaynaklı bir web tarayıcı projesi olan Mozilla ile ilgili oluşan sorunları takip etmek
için kurulmuş bir olay kayıt takip sistemidir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Bugzilla'nın gösterge panelini
incelediğimizde [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], çözülmüş binlerce sorun olduğu gibi, ilgilenilmeyi ve çözülmeyi
bekleyen de binlerce sorunun hala sırasını beklemekte olduğunu görmekteyiz.
      </p>
      <p>Yeni bir sorun bildirildiğinde ilgili arayüz aracılığıyla kaydın girişi yapılır ve
çözülmesi için ilgili ekibe veya geliştiriciye atanır. Bu atama işlemi çoğunlukla
arayüzden yapılır ve şirket büyük olduğunda ve sistemde doğru yazılım ekibini
tanımlayan birçok ürün ve platform bulunduğunda zaman alıcı ve sıkıcı bir görev
olabilmektedir. Diğer bir sorunsa doğru ekip seçilmediğinde kaydın farklı ekipler
arasında dolaşabilmesi ve bu durumun kaydın çözüm süresini uzatabilmesidir.</p>
      <p>Softtech A.Ş.’nin hizmet verdiği ana sektör bankacılık sektörü olup sisteminde
tanımlı çok sayıda farklı ürün ve platformlar bulunmaktadır. Örnek vermek gerekirse
“Kredi Kartı” bir ürünü, “ATM” veya “İnternet Şube” ise platformu ifade etmektedir.
Ürün ve platform kombinasyonu, kaydı çözecek olan sorumlu ekibi tanımlamakta,
ancak kayıtla ilgili doğru ürün kodu ve platform kodunun tespitinde yukarıda anlatılana
benzer sorunlar yaşanmaktadır. İlgili ürün ve platformlar kaydı açan BT yardım masası
personeli tarafından arayüzden belirlenmektedir.</p>
      <p>Bu çalışmada amaç, açılan olay kayıtları ile ilişkili ürün ve platform kodlarının
belirlenmesi sürecinin otomasyonudur. Amaç yardım masası personeli tarafından
arayüzden elle girilen ilgili kodları, konu ve açıklama kısımlarındaki metin bilgilerini
kullanarak tahmin etmek olduğundan, ilgili metnin, metin madenciliği teknikleri ile ön
işlemden geçirilmesi gerekmektedir. Ön işlemden geçirildikten sonra ürün ve platform
kodlarını tahmin etmek için makine öğrenme algoritmaları kullanılmış ve sonuçları
karşılaştırılmıştır.</p>
      <p>Bu çalışmanın üç konuda katkısı bulunmaktadır:
1. Aynı anda tahmin edilmesi gereken iki ayrı sınıf olduğundan, bu iki sınıfın
kombinasyonlarını tahmin etmek için üç farklı yaklaşım önerilmiş ve sonuçları
karşılaştırılmıştır.
2. Bu sınıflar yalnızca konu bilgisi kullanılarak tahmin edilmiş, sonrasında hem
konu hem de açıklama bilgisi kullanılarak tahmin edilmiş ve sonuçlar
karşılaştırılmıştır.</p>
      <p>Bu iki sınıfın belirlenmesi bir servis aracılığıyla yapılabilir hale gelmiştir. Bu
servisin sisteme entegre edilmesi ile birlikte, arayüzden yürütülen operasyonel
süreç ortadan kalkacak ve bu durum verimliliği artıracaktır.
2</p>
      <p>
        İlgili Çalışmalar
Olay kayıtlarının atanması ile ilgili olarak bugüne kadar çeşitli çalışmalar yapılmıştır.
Anvik, Hiew ve Murphy [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] yazılım geliştiricilerin çözümledikleri kayıt tiplerini
öğrenmek için makine öğrenmesi algoritmaları uygulamışlar ve iki farklı proje için
%57 ve %64 kesinlik (precision) seviyelerine ulaşmışlardır. Baysal, Godfrey ve Cohen
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] kullanıcıların mevcut iş yükü, deneyimleri, uzmanlıkları gibi bilgileri kullanarak
kaydı uygun kullanıcıya otomatik olarak atayan bir sistem önermişlerdir. Matter, Kuhn
ve Nierstrasz [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] yazılım geliştiricilerin kaynak koduna yaptıkları katkılar ile ilişkili
sözcükleri ve olay kayıtlarındaki sözcük bilgisini kullanarak olay kaydı ile ilgili
uzmanlığı olabilecek geliştiricileri tahminlemişlerdir. Bhattacharya, Neamtiu ve
Shelton [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] kayıt atama sürecini otomatikleştirmek için makine öğrenme algoritmaları
ve grafik temelli bir model kullanmış ve % 86.09 tahmin doğruluğu elde etmişlerdir.
      </p>
      <p>
        Zhou ve arkadaşları [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], yaptıkları çalışmanın ilk kısmında, yalnızca konu bilgilerini
kullanarak hata raporlarını sınıflandırmışlar, açıklama alanını bu sınıflandırmada girdi
olarak kullanmamışlardır. Bir satırlık bilgi içeren konu alanının, raporların
sınıflandırılmasında açıklama alanında geçen bilgi ile aynı temel bilgileri sağladığını
önermişlerdir. Yaptığımız çalışmada, yalnızca konu bilgisini kullanarak sınıflandırma
ve hem konu hem de açıklama bilgilerini kullanarak sınıflandırma kıyaslanmış ve
yapılan önermenin kullandığımız veri için de geçerli olup olmadığı sınanmıştır.
      </p>
      <p>
        Bu çalışmada tahmin için metin verisi kullanıldığından metin madenciliği
tekniklerine ihtiyaç duyulmuştur. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] ve [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] 'da, olay kayıtlarının analizinde, metinler,
dizge parçalama (tokenization), durak kelimeleri çıkarma (stop-word list) ve kök bulma
(stemming) işlemlerinden geçirilmiş ve bir vektör uzayı modeli elde edilmiştir. Benzer
şekilde, çalışmamızda tüm kayıtlar aynı süreçten geçirilmiştir. Yazılım çalışması
Python programlama dili ile yapılmış ve Türkçe kelimeler için de hazırlanmış Python
kütüphaneleri [10] [11] kullanılmıştır.
      </p>
      <p>
        TF-IDF, bir kelimenin, her bir kayıt için önemini belirten bir metriktir [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]: Burada
TF terim frekansı (term frequency), IDF ise ters doküman frekansıdır (inverse term
frequency) ve aşağıdaki şekilde hesaplanır:
      </p>
      <p>TF(t)= Kayıtta t teriminin kaç kere geçtiği / Kayıttaki toplam terim sayısı
IDF(t) = log_e(Toplam kayıt sayısı / İçinde t terimi geçen kayıt sayısı)
TF-IDF(t) = TF(t) * IDF(t)
[12]
[12]
[12]</p>
      <p>Her bir kayıt için tf-idf vektörünü elde ettikten sonra makine öğrenme algoritmaları
kullanılır ve performansları karşılaştırılır. Bu çalışmada K-NN, Lojistik regresyon,
Sınıflama ve regresyon ağaçları (CART), Naive Bayes, Destek Vektör Makineleri
(SVM) ve Çok Katmanlı Perseptron (MLP) algoritmaları seçilmiştir [16].</p>
      <p>K-NN algoritmasında, tahmin edilmek istenen veriye en yakın mesafedeki, önceden
seçilmiş K adet öğrenme verisinin sınıfına bakılarak bu yeni kaydın sınıfı tahmin
edilmektedir. Lojistik regresyon, ilgili verinin hangi sınıfa ait olduğunu olasılıksal
olarak veren lineer bir modeldir. Sınıflama ve regresyon ağaçları (CART), ikili bir karar
ağacı modeli ortaya koyarak sınıflandırma yapılabilmesini sağlayan bir algoritmadır.
Naive Bayes, girdi olarak kullanılan değişkenlerin birbirinden bağımsız olduğunu
varsayar ve bu değişkenlerin ilgili sınıfa ait olma olasılıkları üzerinden tahmin
yapılmasını sağlar. Destek Vektör Makineleri (SVM) ile, bir düzlem üzerinde, ilgili
sınıflar arasında bir sınır çizilmesi amaçlanır. Çok Katmanlı Perseptron (MLP), bir
veya daha fazla gizli katman (hidden layer) içerebilen bir yapay sinir ağı modelidir.</p>
      <p>
        Bu algoritmaların sonuçlarını karşılaştırmak için f-skor ve doğruluk (accuracy)
metrikleri kullanılmıştır. F-skor, kesinlik (precision) ve duyarlılığın (recall) ağırlıklı
harmonik ortalamasıdır. Kesinlik (precision), bir sınıf için doğru tahmin edilmiş kayıt
sayısı, o sınıf için yapılan toplam tahmin sayısına bölünerek bulunmaktadır. Duyarlılık
(recall) ise bir sınıf için doğru tahmin edilmiş kayıt sayısı, o sınıfa ait gerçek kayıt
sayısına bölünerek bulunmaktadır [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Bu çalışmada tahmin edilen çok sayıda ürün ve
platform kodu bulunmakta ve verilen değerler ortalama değerleri ifade etmektedir.
      </p>
      <p>Kesinlik = TP (true positives) / (TP (true positives) + FP (false positives))
Duyarlılık = TP (true positives) / (FN (false negatives) + TP (true positives))</p>
      <p>F-skor = 2 * kesinlik * duyarlılık / (kesinlik + duyarlılık)
Doğruluk (Accuracy) = (Doğru sınıflandırılan kayıt sayısı) / (Toplam kayıt sayısı)[14]</p>
      <p>
        K-NN algoritmasında, ilgili kayda en çok benzeyen K adet kaydın bulunmasında
kosinüs benzerliği kullanılmıştır. Kosinüs benzerliğinin daha iyi sonuçlar verdiği,
tekrar eden olay kayıtlarının tespiti konusunda yapılan bir çalışmada da [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] tespit
edilmiştir. Hesaplaması aşağıdaki şekilde yapılmaktadır.
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
Benzerlik = cos(θ) = (v1 . v2) / (|v1| * |v2|)
[15]
      </p>
      <p>Tf-idf vektörlerinin elde edilmesinde, yukarıda belirtilen algoritmaların
kullanımında ve sonuçların karşılaştırılmasında “Scikit-learn” Python kütüphaneleri
kullanılmıştır [13].
3
3.1
Çözüm Yaklaşımları</p>
      <sec id="sec-2-1">
        <title>Tahminlemeden Önce Ürün ve Platform Kodlarının Birleştirilmesi ve Tek</title>
      </sec>
      <sec id="sec-2-2">
        <title>Bir Sınıf için Tahmin Yapılması</title>
        <p>İlk yaklaşımda, veri setimizdeki ürün ve platform kodları birleştirilir ve tahminleme
elde edilen bu birleşim üzerinden yapılır. Yani bu yöntemde tek bir sınıf elde edilir ve
tahminleme bu sınıf için yapılır. Bu yaklaşım ile öğrenme sonucu olarak her bir
algoritma tek bir model üretir.</p>
        <p>Algoritmaların performansı, tahmin edilen ürün kodu - platform kodu kombinasyonu
ile gerçek ürün kodu - platform kodu kombinasyonunun karşılaştırılması ile yapılmıştır.
3.2
Ürün ve Platform Kodlarının Ayrı Ayrı Tahmin Edilmesi ve Tahminlerin</p>
      </sec>
      <sec id="sec-2-3">
        <title>Sonradan Birleştirilmesi</title>
        <p>İkinci yaklaşımda, ürün kodu ve platform kodları ayrı ayrı tahmin edilerek her bir
algoritma için iki ayrı model elde edilmiş ve bu iki tahminin sonucu birleştirilerek nihai
tahmin elde edilmiştir.</p>
        <p>Birinci yaklaşımda olduğu gibi algoritmaların performansları, ürün kodu ve platform
kodu tahminlerinin kombinasyonu ve ilgili ürün ve platform kodlarının gerçek değerleri
karşılaştırılarak kıyaslanır.</p>
        <p>Her iki sınıf ayrı ayrı tahmin edildiğinden bu yaklaşımda ürün kodu ve platform kodu
arasında bir ilişki bulunmadığı varsayılır ancak gerçekte durum böyle değildir. Ürün
kodları ile ilişkili sadece sınırlı sayıda platform kodu olması mümkündür. Dolayısıyla
bu yaklaşım sonucunda elde edilen bazı tahminler pratikte mümkün olmayan değerler
olabilir.
3.3</p>
        <p>Hiyerarşik Yaklaşım
İkinci yaklaşım sonucunda gerçekte mümkün olmayan değerlerin elde edilebiliyor
olması üçüncü bir yaklaşımı ortaya çıkarmıştır. Bu yaklaşımda önce ürün kodları
tahmin edilir. Daha sonra veri setindeki sadece tahmin edilen bu ürün koduna ait
kayıtlar kullanılarak platform kodları tahmin edilir. Yani bu yaklaşım sonucunda ürün
kodunu tahmin etmek için bir model elde edilir, platform kodunu tahmin etmek içinse
elimizdeki veri setinde varolan ürün kodu sayısı kadar model elde edilir.
4
4.1</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Deneysel Çalışmalar ve Sonuçların Analizi</title>
      <sec id="sec-3-1">
        <title>Veri Analizi</title>
        <p>Birisi öğrenmek için diğeri de modeli test etmek için olmak üzere iki ayrı veri setimiz
bulunmaktadır. Her iki veri setinde de çözülmüş olay kayıtları bulunmakta ve ilgili
kayıtlardaki ürün ve platform kodları kaydın çözümü anındaki değerleri içermektedir.
(Eğer çözülmemiş bir olay kaydı hatalı bir ekibe atanmış durumdaysa ürün kodu ve
platform kodları değiştirilerek ilgili ekibin değiştirilmesi sağlanmaktadır.) Aşağıdaki
tablo öğrenme için kullanılan veri setinin özet bilgilerini içermektedir:</p>
        <p>Tablo 1. Öğrenme için kullanılan veri setinin ilk durumu.</p>
        <p>Veri Seti Özelliği
Kayıt Sayısı
Farklı Ürün Kodu Sayısı
Farklı Platform Kodu Sayısı
Farklı Ürün-Platform Kombinasyonu Sayısı
Adet
31355
279
39
543</p>
        <p>Tablodan görüldüğü gibi tahmin edilmesi beklenen çok sayıda ürün ve platform
kodunun bulunuyor olması veri setinin detay analizinin yapılmasını gerektirmiştir.</p>
        <p>Her bir ürün-platform kodu kombinasyonunun veri setinde kaç kere geçtiği sayılmış,
sonrasında aynı sayıda tekrar eden kombinasyon sayısı bulunmuştur. Örnek vermek
gerekirse elimizdeki verinin içinde sadece bir kez geçen 127 adet farklı ürün-platform
kodu kombinasyonu olduğu, maksimum sayıda tekrar eden kombinasyondan ise veri
setinde 3584 adet olduğu tespit edilmiştir.</p>
        <p>31355 kayıt içinde sadece bir kez geçen bir kombinasyonun tahmin edilmeye
çalışılması anlamlı bulunmamış, tahmin edilmek istenen sınıf sayısının azaltılması ve
verinin sadeleştirilmesi amacıyla az sayıda tekrar eden kombinasyonların veri setinden
çıkarılmasına karar verilmiştir. Öğretme aşamasında veri setinin 10 parçaya bölünerek
çapraz doğrulama yapılması (10-fold cross validation) ve her parçada birden daha fazla
kayıt olması düşüncesiyle 20’den daha az sayıda tekrar eden ürün-platform kodu
kombinasyonuları çıkarılmıştır. Sonuç olarak oluşan tablo aşağıda verilmiştir:
Tablo 2. 20’den daha az sayıda tekrar eden ürün-platform kodu kombinasyonları çıkarıldıktan
sonra elde edilen veri setinin özeti.</p>
        <p>Öğrenme için kullanılacak olan veri seti analiz edildikten ve hangi kayıtların bu veri
setinden çıkarılacağına karar verildikten sonra, test için kullanılmak üzere ayrılmış olan
ve yakın tarihli kayıtları içeren ikinci veri seti analiz edilmiştir. Bu ikinci veri seti
öğrenme için kullanılandan tamamen bağımsız, farklı bir zaman aralığı için temin
edilmiş kayıtları içermektedir. Aşağıda ilgili veri için özet bilgiler bulunmaktadır:
Veri Seti Özelliği
Kayıt Sayısı
Farklı Ürün Kodu Sayısı
Farklı Platform Kodu Sayısı
Farklı Ürün-Platform Kombinasyonu Sayısı</p>
        <p>Tablo 3. Test veri seti özeti.</p>
        <p>Veri Seti Özelliği
Kayıt Sayısı
Farklı Ürün Kodu Sayısı
Farklı Platform Kodu Sayısı
Farklı Ürün-Platform Kombinasyonu Sayısı
Adet
29645
123
27
184
Adet
824
104
24
144
4.2</p>
        <p>İlk Yaklaşım için Test Sonuçları
Öğrenme için kullanılacak olan veri setindeki ürün kodu ve platform kodları
birleştirilmiş ve her bir algoritma için bir model elde edildikten sonra bu modeller
kullanılarak test verisindeki ürün kodu – platform kodu kombinasyonları tahmin
edilmiştir. Öğrenme aşamasında aşağıdaki algoritmalar kullanılmıştır: Lojistik
Regresyon (LR), En Yakın K Komşu (KNN), Sınıflandırma ve Regresyon Ağaçları
(CART), Naive Bayes (NB), Destek Vektör Makineleri (SVM) ve Çok Katmanlı
Perseptron (MLP) (sadece bir adet gizli katman (hidden layer) ve ilgili katmanda 10
adet düğüm (node) olacak şekilde). Tahminlemede hem konu hem de açıklama</p>
        <p>KNN</p>
        <p>CART</p>
        <p>NB</p>
        <p>Öğrenme için Geçen Süre (dakika)
alanlarındaki bilgiler kullanılmıştır. Daha sonra her algoritma için oluşan model
kullanılarak, test verisindeki ürün-platform kodu kombinasyonları tahmin edilmiştir.
Aşağıdaki figürde f-skor ve doğruluk sonuçları, sonraki figürde ise öğrenme
aşamasında ilgili algoritmaların benzer koşullarda ne kadar süre çalıştığı verilmiştir:
yeterli olabilecek bir sonuç vermemiştir, MLP algoritmasının öğrenme aşaması çok
uzun sürmüştür. Bu nedenlerden bu iki algoritma bundan sonraki testlerde
değerlendirmeye dahil edilmemiştir.</p>
        <p>K-NN algoritmasında en iyi sonucu verecek olan K değerini tespit etmek için
algoritma, 1 ve 20 arasındaki tüm K değerleri denenerek ve sonuçlar kıyaslanarak
denenmiş ve K’nın değeri 12 olduğunda en iyi sonucun alındığı görülmüştür.</p>
        <p>
          Kayıtları sınıflandırmada bir satırlık konu bilgisinin, açıklama bilgisi ile aynı gerekli
içeriğe sahip olduğu Zhou ve arkadaşlarının çalışmasında [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] önerilmiş ve bu çalışmada
da sadece konu alanındaki bilgi kullanılarak tahminlemenin tekrarlanacağı belirtilmişti.
Bu önermenin bizim veri setimiz için de geçerli olup olmadığı test edilmiştir. SVM ve
MLP hariç tutularak testler tekrar edilmiş ve aşağıdaki sonuçlar elde edilmiştir:
50
54
47
50
48
        </p>
        <p>49
LR</p>
        <p>KNN</p>
        <p>CART
31
NB</p>
        <p>39</p>
        <p>Yukarıdaki sonuçlardan görüleceği üzere kullanmakta olduğumuz veri için sadece
konu bilgisinin kullanılması, konu ve açıklama bilgisinin kullanılması kadar iyi sonuç
vermemiştir. LR, %50 f-skor ve %54 doğruluk değerleri ile en iyi sonucu vermiş, ancak
sonuç olarak tahminlemede sadece konu bilgisinin kullanılması yaklaşımı daha sonraki
testlerde tekrar edilmemiştir.
Bu yaklaşımda, ürün kodları ve platform kodları ayrı ayrı tahmin edilmiş ve aşağıdaki
sonuçlara ulaşılmıştır:
7375
72
75
6463</p>
        <p>39
35
NB
75
70
65
60
55
50
45
40
7374
7375
6364</p>
        <p>53
46
KNN</p>
        <p>LR</p>
        <p>CART</p>
        <p>KNN</p>
        <p>LR</p>
        <p>CART</p>
        <p>NB</p>
        <p>K-NN (K = 12) ürün kodunun tahminlemesinde f-skor (%73) açısından en iyi
sonuçları verirken, doğruluk açısındansa LR ve K-NN (K = 12) en iyi sonuçları
vermiştir (%75). Sadece platform kodunun tahminlemesinde ise LR doğruluk açısından
en iyi sonucu verirken (%75), LR ve K-NN (K = 13, 15, 16) f-skor açısından en iyi
sonucu vermiştir (%73). K-NN için en iyi sonucu verecek olan K değerinin
bulunmasında 1 ile 20 arasındaki farklı K değerleri denenmiştir.</p>
        <p>Sonuç olarak, ürün kodları ve platform kodları ayrı ayrı tahmin edildiğinde % 75
doğruluk oranına ulaşılmıştır. Ancak bu yaklaşımı diğer yaklaşımlarla kıyaslayabilmek
için ayrı ayrı yapılan bu tahminler birleştirilmiş ve ürün–platform kodu
kombinasyonlarının gerçek değerleri ile karşılaştırılmıştır. Eğer hem ürün hem de
platform kodu doğru tahmin edilmişse tahminleme doğru olarak işaretlenmiş ancak
herhangi birisinin hatalı olması durumunda, tahminleme hatalı kabul edilmiştir.</p>
        <p>Ayrı ayrı yapılan tahminlerin birleştirilmesi ve bunların gerçek değerlerle
karşılaştırılması sonrasında en iyi sonuçların ürün kodları K = 12 değeri ile K-NN
algoritması ile tahminlendiğinde ve platform kodları K = 15 değeri ile yine K-NN
algoritması ile tahminlendiğinde elde edildiği görülmüştür (f-skor = %66 ve doğruluk
= %66).
Bu yaklaşımda önce ürün kodları tahmin edilmiş (ikinci yaklaşım ile aynı şekilde) ve
sadece bu ürün kodlarına sahip kayıtlar kullanılarak öğrenme algoritmaları çalıştırılmış
ve platform kodları tahmin edilmiştir. Ürün kodlarının tahmininde ikinci yaklaşımda
elde edilen sonuçlar elde edilmiştir (K = 12 değeri ile K-NN algoritması en iyi sonucu
vermiştir). Birleştirilmiş ürün-platform kodu tahminleri, birleştirilmiş gerçek değerlerle
kıyaslanmış (hem ürün kodu hem de platform kodu doğru olduğunda tahmin doğru
sayılmıştır) ve ürün kodlarını tahminde K = 12 değeri ile K-NN algoritması, ve
sonrasında her bir ürün kodu için ayrı ayrı elde edilen modeller kullanılarak platform
kodlarının tahmininde K = 15 değeri ile yine K-NN algoritması en iyi sonuçları
vermiştir (f-skor = %66 ve doğruluk = %67).
4.5</p>
      </sec>
      <sec id="sec-3-2">
        <title>Test Sonuçlarının Özeti</title>
        <p>Aşağıdaki tabloda en iyi sonuçlar, bu sonuçları veren algoritma, ve f-skor ve doğruluk
değerleri verilmiştir:</p>
        <p>Tablo 4. Test Sonuçlarının Özeti.</p>
        <p>Yaklaşım
İlk yaklaşım: Birleştirilmiş tek
sınıfın tahmin edilmesi
İkinci yaklaşım: Ayrı ayrı tahmin
Hiyerarşik yaklaşım: Ürün kodunun
ayrı tahmin edilmesi / Her ürün için
sadece mümkün olan platform
kodlarının tahmin edilmesi</p>
        <p>Algoritma
LR
Ürün için K-NN (K = 12),
Platform için K-NN (K = 15)
Ürün için K-NN (K = 12),
Platform için K-NN (K = 15)</p>
        <p>F-Skor
%65
%66
%66</p>
        <p>Doğruluk
%68
%66
%67</p>
        <p>Bu çalışmaya başlarken beklentimiz hiyerarşik yaklaşımın daha iyi sonuç vermesi
yönündeydi, ancak yukarıdaki tablodan ilgili yaklaşımların benzer sonuçlar verdiği
görülmektedir.</p>
        <p>İkinci yaklaşım sonucunda elde edilen ürün kodu ve platform kodu
kombinasyonlarının pratikte mümkün olmayan değerler olabilmesi nedeniyle ikinci
yaklaşım tercih edilmemiştir. Ürün kodunu tek başına tahmin etmek %75 doğrulukla
değerli bir bilgi verdiği için hiyerarşik yaklaşım tercih edilmiştir. Ancak yukarıdaki
tablodan da görüleceği üzere hiyerarşik yaklaşım beklentimizin aksine bariz bir fark
yaratmamıştır.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuç ve Gelecek Çalışmalar</title>
      <p>Bu çalışmada olay kayıtlarının ürün kodu ve platform kodu bilgisinin tahmin
edilmesinde üç yaklaşım önerilmiş, test edilmiş ve sonuçlar karşılaştırılmıştır. Sonuç
olarak hiyerarşik yaklaşım önerilmiştir. Bu yaklaşımda önce %75 doğruluk ve %73
fskor değerleri ile ürün kodu tahmin edilmiş, daha sonra tahmin edilen bu ürün kodu
bilgisi ile platform kodu tahmin edilmiştir. Sonuçta %66 f-skor ve %67 doğruluk
değerlerine ulaşılmıştır. Bu değerler hesaplanırken hem ürün kodu hem de platform
kodu doğru olduğunda tahminin doğru olduğu kabul edilmiştir.</p>
      <p>Çözümlenmek istenen sınıflandırma probleminin diğer sınıflandırma
problemlerinden ayırdedici özelliği aynı anda birden fazla sınıfın tahmin edilmek
isteniyor olmasıdır. Çözüm önerisi olarak üç farklı yaklaşım sunulmuş, önerilen bu üç
yaklaşım içinde hiyerarşik yaklaşımın daha iyi sonuçlar vermesi beklenirken tüm
yaklaşımlar benzer sonuçlar vermiştir.</p>
      <p>Hiyerarşik yaklaşım algoritmik olarak ve ortaya çıkan modellerin sayısı açısından
daha karmaşık bir yaklaşımdır. Oysa birinci yaklaşım, yani birleştirilmiş olan tek sınıfın
tahmin edilmesi algoritmik olarak daha basit bir yaklaşım olmasının yanında sadece tek
bir model ortaya koymaktadır. Bu anlamda aynı anda birden fazla sınıfın tahmin
edilmesi gereken böyle bir durumda sınıfların en başta birleştirilmesi yeterli
görünmektedir. Ancak pratikte ürün kodunu tek başına tahmin etmek %75 doğrulukla
değerli bir bilgi verdiği için hiyerarşik yaklaşım tercih edilmiştir.</p>
      <p>Hazırlanan servisin sisteme entegrasyonu ile birlikte yardım masası personeli artık
olay kaydı açarken ürün kodu ve platform kodu girişi yapmak zorunda olmayacaktır.
Sadece konu ve açıklama bilgisi girilecek ve sistem ürün ve platform bilgisini otomatik
olarak atayacaktır.</p>
      <p>Sistemin otomasyonu ve oluşacak olan yeni veri ile öğrenme algoritmaları yeniden
çalıştırıldığında; sistemin aynı ekibe kayıt atanmasına neden olacak alternatif ürün
platform kombinasyonları olması durumunda aynı kombinasyonu seçme eğilimi
göstereceğini beklediğimizden, tahminlemedeki doğruluğun da artacağını tahmin
etmekteyiz.</p>
      <p>Yeni olay kayıtları açılırken bu kayıtlara en çok benzeyen geçmişte açılmış ve
tamamlanmış olay kayıtları, bunların daha önce ne şekilde çözüldüğü bilgisi ile birlikte
önerilecek şekilde çalışmalar devam edecektir. Ayrıca kayıtlar ekiplere atandıktan
sonra kayıtların yazılım geliştiricilere atanması sürecinin de, geliştiricilerin iş yükü,
uzmanlıkları gibi bilgiler de dikkate alınarak, otomasyonu için çalışmaların devam
etmesi planlanmaktadır.</p>
      <p>Kaynaklar
10. PyPi Snowball-stemmer, https://pypi.python.org/pypi/snowballstemmer, last accessed
2017/06/03.
11. PyPi Stop-words, https://pypi.python.org/pypi/stop-words, last accessed 2017/06/03.
12. Tf-idf: A single page tutorial, http://www.tfidf.com, last accessed 2017/06/03.
13. Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., ... &amp;
Vanderplas, J.: Scikit-learn: Machine learning in Python. Journal of Machine Learning
Research 12.Oct (2011): 2825-2830.
14. Shihab, E., Ihara, A., Kamei, Y., Ibrahim, W. M., Ohira, M., Adams, B., Hassan, A. E.,
Matsumoto, K.: Predicting re-opened bugs: A case study on the eclipse project. Reverse
Engineering (WCRE), 2010 17th Working Conference on. IEEE, 2010.
15. Jalbert, N., Weimer, W.: Automated duplicate detection for bug tracking systems.</p>
      <p>Dependable Systems and Networks with FTCS and DCC, 2008. DSN 2008. IEEE
International Conference on. IEEE, 2008.
16. Scikit-learn: Machine learning in Python,
http://scikitlearn.org/stable/supervised_learning.html, last accessed 2017/08/25</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Serrano</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ciordia</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          : Bugzilla, ITracker, and
          <article-title>other bug trackers</article-title>
          .
          <source>IEEE software 22.2</source>
          (
          <year>2005</year>
          ):
          <fpage>11</fpage>
          -
          <lpage>13</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Bugzilla</given-names>
            <surname>Homepage</surname>
          </string-name>
          , https://bugzilla.mozilla.org,
          <source>last accessed</source>
          <year>2017</year>
          /06/02.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Anvik</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hiew</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murphy</surname>
            ,
            <given-names>G. C.</given-names>
          </string-name>
          :
          <article-title>Who should fix this bug?</article-title>
          .
          <source>Proceedings of the 28th international conference on Software engineering. ACM</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Baysal</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>M. W.</given-names>
          </string-name>
          , Cohen,
          <string-name>
            <surname>R.:</surname>
          </string-name>
          <article-title>A bug you like: A framework for automated assignment of bugs</article-title>
          .
          <source>Program Comprehension</source>
          ,
          <year>2009</year>
          .
          <source>ICPC'09. IEEE 17th International Conference on. IEEE</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Matter</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuhn</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nierstrasz</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Assigning bug reports using a vocabulary-based expertise model of developers</article-title>
          .
          <source>Mining Software Repositories</source>
          ,
          <year>2009</year>
          . MSR'
          <volume>09</volume>
          . 6th IEEE International Working Conference on. IEEE,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bhattacharya</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neamtiu</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shelton</surname>
            ,
            <given-names>C. R.</given-names>
          </string-name>
          : Automated, highly
          <article-title>-accurate, bug assignment using machine learning and tossing graphs</article-title>
          .
          <source>Journal of Systems and Software 85.10</source>
          (
          <year>2012</year>
          ):
          <fpage>2275</fpage>
          -
          <lpage>2292</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tong</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gu</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gall</surname>
          </string-name>
          , H.:
          <article-title>Combining text mining and data mining for bug report classification</article-title>
          .
          <source>Journal of Software: Evolution and Process</source>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Runeson</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alexandersson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nyholm</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Detection of duplicate defect reports using natural language processing</article-title>
          .
          <source>Proceedings of the 29th international conference on Software Engineering. IEEE Computer Society</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Menzies</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marcus</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Automated severity assessment of software defect reports</article-title>
          .
          <source>Software Maintenance</source>
          ,
          <year>2008</year>
          .
          <article-title>ICSM 2008</article-title>
          . IEEE International Conference on. IEEE,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>