Web Server Sunucu Loglarının K-Komşu Algoritması ile İ ncelenmesi İçindekiler 1 Özet... 2 2 Giriş... 3 3 Uygulama... 4 4 Sonuçlar... 6 1
1 Özet Web sunucu logları üzerinde veri madenciliği yapmanın temel amacı, web sunucu üzerinde yer alan ilgili web sitesinde kullanıcılar tarafından erişilen içeriklerin incelenerek kullanıcıya özel ve benzersiz bir tavsiye sistemi kurulması ve web sitesi üzerinde iyileştirme çalışmalarının yapılmasını sağlamaktır. Bu yazıda K-Komşu algoritması ile erişim logları üzerinde kümeleme analizi yapılarak, siteye giriş yapan kullanıcılara benzersiz bir tavsiye sistemi kurulmaya çalışılmıştır. 2
2 Giriş Web Sunucuları kendine gelen her isteğe ait bilgiyi detaylı olarak log dosyalarına kaydeder. Her web sunucusunun kendine ait bir log yapısı vardır (Tablo 1). IIS Web server ına ait log örneği altta yer almaktadır. IIS Log File Example (IIS 6.0) The following example shows an IIS log file entry, as viewed in a text editor: 192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -, Table 10.6 lists and describes the fields recorded in this example. Table 10.6 Example of an IIS Log File Entry Field Appears As Description Client IP address 192.168.114.201 The IP address of the client. User name - The user is anonymous. Date 03/20/01 This log file entry was made on March 20, 2001. Time 7:55:20 This log file entry was recorded at 7:55 A.M. Service and instance W3SVC2 This is a Web site, and the site instance is 2. Server name SERVER The name of the server. Server IP 172.21.13.45 The IP address of the server. Time taken 4502 This action took 4,502 milliseconds. Client bytes sent 163 The number of bytes sent from the client to the server. Server bytes sent 3223 The number of bytes sent from the server to the client. Service status code 200 The request was fulfilled successfully. Windows status code 0 The request was fulfilled successfully. Request type GET The user issued a GET, or download, command. Target of operation /DeptLogo.gif The user wanted to download the DeptLogo.gif file. Parameters - There were no parameters passed. Saklanan bu bilgiler veri madenciliğinde kullanılabilecek önemli kaynaklardır. Veri madenciliğinde kullanılacak olan bilgi log içinden süzülerek temizlenmeli, geriye sadece ölçümleme yapılacak olan bilgi kümesi bırakılmalıdır. Bu nedenle log dosyasında yer alan resim dosyaları, media dosyaları, döküman ve diğer uzantılı dosyalara ait bilgiler olabileceğinden inceleme dışında bırakılmalıdır. Analiz aşamasında K-Komşu algoritması kullanılacaktır. Bu veri inceleme algoritması, araştırma ve örneklemeye yönelik bir algoritma olduğundan içerik tavsiye sistemi için kullanılabilir. K en yakın komşuluğunda temel düşünce komşunun yaptığı gibi yap tır. Eğer belirli bir kişinin davranışı tahmin edilmek isteniyorsa, veri uzayında o kişiye yakın, kişinin davranışlarına bakılır. Yakında yer alan davranış kümesi bize tavsiye edilebilecek içerik kümesini verecektir.bu küme, K Komşu uzaklık formülünün hesaplanması ile ortaya çıkacak olan ve belirlenen k parametresi kadar olacaktır. 3
3 Uygulama Uygulamada kullanılacak olan örnek log dosyası ClarkNET (C.NET veri kümesi) web sunucularından elde edilmiştir. Log dosyasının saf hali ve gerekli bilgileri http://ita.ee.lbl.gov/html/contrib/clarknet- HTTP.html linkinden incelenebilir. Log dosyasının, data mining işleminde kullanılabilmesi için öncelikle verinin istenilen özellikleri sağlayacak şekilde ve gereksiz olan veri katarlarından temizlenmesi gerekmektedir. Verinin ham haline ait örnek satırlar Tablo 1 de gösterilmiştir. Tablo 1. Sunucu loglarının ham hali 204.249.225.59 - - [28/Aug/1995:00:00:34-0400] "GET /pub/rmharris/catalogs/dawsocat/intro.html HTTP/1.0" 200 3542 access9.accsyst.com - - [28/Aug/1995:00:00:35-0400] "GET /pub/robert/past99.gif HTTP/1.0" 200 4993 access9.accsyst.com - - [28/Aug/1995:00:00:35-0400] "GET /pub/robert/curr99.gif HTTP/1.0" 200 5836 world.std.com - - [28/Aug/1995:00:00:36-0400] "GET /pub/atomicbk/catalog/sleazbk.html HTTP/1.0" 200 18338 ppp19.glas.apc.org - - [28/Aug/1995:00:00:43-0400] "GET /atomicbk/ HTTP/1.0" 304 - ppp19.glas.apc.org - - [28/Aug/1995:00:00:46-0400] "GET /atomicbk/direct.gif HTTP/1.0" 304 - cssu24.cs.ust.hk - - [28/Aug/1995:00:00:46-0400] "GET /pub/job/vk/v-line.gif HTTP/1.0" 200 1254 ppp19.glas.apc.org - - [28/Aug/1995:00:00:48-0400] "GET /atomicbk/scotth.gif HTTP/1.0" 200 790 freenet3.scri.fsu.edu - - [28/Aug/1995:00:00:48-0400] "GET /pub/rjgula/network.htm HTTP/1.0" 200 2017 ppp19.glas.apc.org - - [28/Aug/1995:00:00:48-0400] "GET /atomicbk/orders.gif HTTP/1.0" 304 - ppp19.glas.apc.org - - [28/Aug/1995:00:00:48-0400] "GET /atomicbk/seanc.gif HTTP/1.0" 200 734 kuts4p01.cc.ukans.edu - - [28/Aug/1995:00:00:49-0400] "GET /pub/sshay/home.html HTTP/1.0" 200 3145 Log dosyasında yer alan.htm ve.html uzantılı dosyalara ait veriler dışındaki tüm satırların temizlenmesi gerekmektedir. Bu temizleme işlemi için regular expression destekli bir metin editöründen faydalanılarak, içinde.htm geçmeyen satırların temizlenmesi ^((?!htm).)*$ ifadesi ile sağlanabilir. Temizleme işleminden sonra oluşan verinin son hali Tablo 2 de gösterilmiştir. Tablo 2. Sunucu loglarının temizlenmiş hali 204.249.225.59;28/Aug/1995;00:00:34;/pub/rmharris/catalogs/dawsocat/intro.html;200 3542 world.std.com;28/aug/1995;00:00:36;/pub/atomicbk/catalog/sleazbk.html;200 18338 er6.rutgers.edu;28/aug/1995;00:00:37;/pub/rjgula/network.htm;200 2017 cyclom1-1-6.intersource.com;28/aug/1995;00:00:37;/pub/k2/jeep/jxj.htm;200 3254 d24-1.cpe.brisbane.aone.net.au;28/aug/1995;00:00:38;/pub/eurocent/home.htm;200 2534 freenet3.scri.fsu.edu;28/aug/1995;00:00:48;/pub/rjgula/network.htm;200 2017 kuts4p01.cc.ukans.edu;28/aug/1995;00:00:49;/pub/sshay/home.html;200 3145 d24-1.cpe.brisbane.aone.net.au;28/aug/1995;00:00:55;/pub/eurocent/german.htm;200 1008 piweba4y.prodigy.com;28/aug/1995;00:00:55;/larouche/waco.html;200 14041 Loki.async.smsu.edu;28/Aug/1995;00:00:55;/pub/ahasuer/heinlein/about.html;200 7173 Yapılan log analiz uygulamasında kullanıcı, tarih, zaman ve istekte bulunan url bilgileri kullanılan veri alanlarını oluşturmaktadır. Kullanılan log dosyasına ait okuma işleminden sonra oluşan veri kümesini (toplam kayıt) tarih bazında filtrelemek için log dosyasında yer alan tarih bilgisi tekil olarak alınarak, log dosyasının ait olduğu tarih aralık bilgisi elde edilmiş olur. Belli bir tarih seçilerek yapılan filtreleme işlemi ile o tarihe ait kayıt adedi (filtrelenmiş kayıt), benzersiz sayfa ziyaretleri (tekil sayfa) ve benzersiz kullanıcı ziyaretleri (tekil kullanıcı) bilgileri oluşturulmuş olur. İşlem süresini kısaltmak için tekil kullanıcı bazında kayıtları azaltarak öneri sisteminin daha hızlı çalışması amaçlanmıştır. Tekil kullanıcıların sayısı ve ziyaret edilen url sayısı arttıkça öneri sunma zamanı bağlı olarak dahada artacaktır. Belirtilen kullanıcı adedi ile öneri sistemi için kullanılacak olan örneklem kümesi oluşturulmuş olmaktadır. Örneklem kümesi oluşturulurken seçilen adede göre log dosyasından rasgele kullanıcı ziyaretleri seçilmektedir. 4
Örneklem kümesi oluşturulduktan sonra öneri sisteminin simule edilmesi sağlanmıştır. Böylelikle bir sitede gezen bir kullanıcının ziyeret ettiği(seçilen sayda) öneri sisteminin gösterilmesine çalışmıştır. Oluşturulan kümedeki tüm url bilgileri tekil olarak bir url listesine eklenmektedir. K parametresini oluşturan öneri adedi, belirtilen kümeye ait kaç adet önerinin oluşturulacağını bildirmekte kullanılmaktadır. Kullanıcı url adedi ise bir bakıma frekans değerine karşılık gelmektedir. Bu parametre değeri ile öneri seçiminde bir kullanıcıya ait kullanılacak en fazla url adedi belirlenmektedir. Belirlenen url sayısı kullanıcının ziyaret ettiği url sayısından fazla ise, kullanıcının ziyaret ettiği url sayısı frekans olarak belirlenir. Önerileri Tamamla seçeneği ile, kullanıcıların tercih ettiği urllerden oluşturulan toplam öneri url adedi istenen (k parametresi) değerden az olduğu durumlarda eksik kalan kısmın en çok ziyaret edilen urller arasından gösterilmesi sağlanmaktadır. Öneri seçim metodu, url listesinden seçilmiş olan url in ait olduğu klasör içinde ziyaret edilen tüm urlleri bulur. Bulunan urllerden bir sonra ziyaret edilmiş olan sayfa url bilgisini öneri listesine ekler. Böylelikle kullanıcı bazında 2 basamaklı ziyaretler kullanılarak öneri sistemi oluşturulur. 5
4 Sonuçlar Bu çalışmada, internet ortamındaki kullanıcılar için sunucu loglarından yola çıkarak öneri yöntemi geliştirildi. Melez öneri sisteminde diğer kullanıcıların bir sonraki tercihlerinden yola çıkılarak bir öneri sistemi geliştirilmiş ve K-Komşu Algoritmasından faydanılmıştır. Kullanıcı tercihlerinin yanında içeriği süzerken faklı algoritmalar kullanılabilir. Zaman kriterlerinden yararlanılarak belirli bir t anına ( son 30 dk.) ait loglar incelenebilir. Kullanıcıların gezdiği url kullanılarak kullanıcı bazlı yol haritaları çıkarılarak, bu yol haritaları üzerinden de önerme yapılabilir. Bu işlem daha net öneri listesi sunmasına karşın performans açısından yavaşlamaya neden olabilir. Ayrıca çalışmada sunucu log yapısı, kullanılabilirliğinin arttırılması ve filtreleme işlemlerinden bahsedilmiştir. Öneri sistemi oluşturulurken performans optimizasyonu gözönüne alınmamıştır. Canlı sistemlerde ve anlık öneri yapılması gereken durumlarda optimizasyon işlemlerinin yapılması gerekmektedir. 6