İçgörü Kütüphanesi'ne Dön

Makine Öğrenim Modelleri Oluşturmak ve Veri Sınıflandırmak

Onbinlerce dijital veri ile yapılan sosyal araştırmaların veri sınıflandırması nasıl bu kadar hızlı yapılıyor? Cevabı basit: Makine Öğrenim Modelleri ile. Peki Makine Öğrenim Modeli nedir?

5 dakikalık okuma
Başlamadan Önce

Bu yazı, Verizekalılar İçgörü Kütüphanesi'nin 7. yazısı. Bu yazıya başlamadan önce aşağıdakileri okuduğundan emin ol.

Biliyoruz ki hayatımızdaki her şey dijitalleşti. En basit işlerin bile artık robotlarla, makinelerle yapılmaya başlandığı bu dönemde, veri sınıflandırmasını sadece insan gücü ile yapmanın da oldukça büyük bir kaynak kaybına yol açacağını kabul ediyoruz.

Konvansiyonel araştırmalara göre çok daha hızlı tamamlanan ve dijital veri ile yapılan sosyal araştırmalarda bazen onbinlerce verinin işaretlenmesi gerekebilir. Peki bu kadar veriye rağmen veri sınıflandırması nasıl bu kadar hızlı yapılıyor? Cevabı basit: Makine Öğrenim Modelleri ile.

Makine öğrenimi, kendisine iletilen verilerle öğrenen ya da performansı iyileştiren sistemler oluşturmaya odaklanan bir yapay zeka alt kümesidir. Makine öğreniminin veri sınıflandırmada kullanımı ise, önceden bir kişi tarafından sınıflandırılan belirli sayıda verinin makineye öğretilmesi ve sonrasında makinenin benzer konulu büyük verileri aynı şekilde ve yüksek hızda otomatik olarak sınıflandırması işlemidir.

Eğitim Seti (Training Set) ve Test Seti Hazırlama

Makine öğrenim modeli oluşturmanın ilk adımı, araştırma ihtiyacına göre, veride elle (bir kişinin veri okuyarak yaptığı) sınıflandırma yapılmasıdır.

Sınıflandırma yapılacak kategoriler:

  • İki başlıklı-sınıflı yani binary (pozitif-negatif, kullanıcı-kullanıcı değil, kadın-erkek, hasta-hasta yakını gibi)
  • Çok sınıflı yani multi-class (müşteri hizmetleri-uygulama-kalite-lojistik-ekonomik, pozitif-nötr-negati gibi) olabilir.

Makine öğrenim modelleri 100-200’lük bir veri setini işaretlemekte de kullanılabilir; ancak bu modeller genellikle insan gücü ile işaretleme yapmanın zaman kaybı olacağı ya da çok uzun zaman alacağı 50.000-100.000 ya da daha fazla verinin otomatik işaretlenmesi için kullanılır.

Örnekle açıklamak gerekirse; diyelim ki elimizde 1.000 veriden oluşan bir veri seti var ve bu veride sınıflandırma yaptıktan sonra gelecek projeler-araştırmalar için benzer verileri otomatik olarak işaretleyen bir makine öğrenim modeli oluşturmak istiyoruz. Bunun için izlememiz gereken birkaç önemli adım var:

  • İlk adımımız bu veri setinin tamamını (1000 paylaşımı) okuyarak el ile işaretlemek olacak. Biraz zaman aldığını biliyoruz, ancak merak etmeyin bir sonraki benzer setlerde işaretlemeyi sizin yerinize makina yapacak.
  • İkinci olarak, elle işaretlediğimiz veriyi eğitim seti ve test seti olarak 2’ye ayırmamız gerekiyor. Bu ayrımı, verinin %80’ini eğitim seti, %20’sini test seti olarak ya da %75’ini eğitim seti, %25’ini test seti olarak yapabiliriz.
  • Bizim senaryomuzda %80’e %20 kuralı ile çalıştığımızı düşünelim. Yani eğitim seti olarak 800 paylaşımı ayırmamız (farklı bir excel dosyasına öğrenim seti olarak kaydetmemiz) gerekiyor.
  • Bu ayrım sırasında dikkat edilmesi gereken en önemli şeylerden biri, eğitim setinde her kategoride eşit sayıda veri olmasını sağlamaktır. Örneğin pozitif ve negatif kategorilerinden oluşan binary (iki kategorili) sınıflandırma yapılacaksa; eğitim setinde 400 pozitif, 400 negatif içeriğin yer alması gerekir. Bunun nedeni eğitim seti ile oluşturulacak modelde herhangi bir kategorinin ağırlıklı olmamasını (istatistiksel olarak her kategorinin işaretlenme ihtimalinin eşit olmasını) sağlamaktır. Multi-class makine öğrenim modelleri için de kural aynı şekildedir.
  • Eğitim setimizi hazırladıktan sonra, kalan 200’lük veri ise test setimiz olacak, yani eğitim seti ile oluşturduğumuz makina öğrenim modelini bu set ile test edeceğiz.

Modelin Test Edilmesi

800 paylaşımdan oluşan, her kategorisinde eşit sayıda veri bulunan işaretlenmiş veri setimizi (eğitim seti) makineye öğrettikten sonra, kalan 200’lük veri ile de oluşturduğumuz makine öğrenim modelini test etmeliyiz. 200’lük veri setini de daha önce işaretlemiştik, şimdi modelin ne kadarını bizim gibi yani doğru işaretlediğini kontrol etme vakti. Modelimiz test setinde %80’in üzerindeki veriyi doğru işaretlediyse görece iyi bir model diyebiliriz. Eğer doğruluk oranımız (AR - accuracy rate) %90’ın üzerinde ise gerçekten iyi çalışan bir model oluşturmuşuz demektir. Doğruluk oranının %90'ın üzerinde olması bu makine öğrenim modeli ile yapılan sınıflandırmada her 10 veriden en az 9'unun doğru sınıflandırıldığı anlamına gelir.

Önemli Notlar

Makine öğrenimi modeli oluşturulacak veri setinde olması gereken optimum veri sayısına deneme-yanılma yöntemi ile karar verebiliriz. Bazı modellerin yüksek doğruluk payı ile çalışabilmesi için modelinizde yer alacak her bir etiket için 500 örnek veri bulunan bir eğitim seti (örneğin veride “uygulama” ve “müşteri hizmetleri” kategorilerinde işaretleme yaptırmak istiyoruz, o halde her bir kategoriden 500 içeriğin bulunduğu bir eğitim seti) yeterli olabilirken, daha karmaşık verilerden oluşan ve fazla sayıda kategoride işaretlenmiş (multi-class) bir veri ile model oluşturulmak istendiğinde eğitim setinde daha fazla sayıda veri yani örnek olması gerekir.

Makine öğrenim modelini oluşturduktan sonra ilk aşama toplam veriden ayırdığımız test seti ile modeli test etmektir, ancak tek bir veri seti ile test yapmak bazen yeterli olmayabilir. Bu nedenle çapraz doğrulama (k-fold cross-validation) yapılması yani tek bir veri setinden birden fazla makine öğrenim modeli oluşturulması, bu modellerin farklı test setleri ile kontrol edilmesi ve hepsinin doğruluk payının ortalamasının alınması oldukça önemlidir. Çapraz doğrulamayı daha detaylı anlatmak için bir önceki senaryomuza geri dönelim.

1000’lik veri setimizin bir kısmı ile modelimizi eğitmek, bir kısmı ile eğittiğimiz modelimizin başarısını değerlendirmek istemiştik. Basit yaklaşım ile verinin %80’ini eğitim için, %20’sini de test için ayırmıştık. Ancak burada veri parçalanırken verinin dağılımına bağlı olarak modelin eğitim ve testinde bazı sapmalar (bias) ve hatalar oluşabilir. İşte k-fold cross validation yani çapraz doğrulama, veriyi belirlenen bir k sayısına göre eşit parçalara böler, her bir parçanın hem eğitim hem de test için kullanılmasını sağlar, böylelikle dağılım ve parçalanmadan kaynaklanan sapma ve hataları minimuma indirir. Ancak modeli k kadar eğitmek ve test etmek gibi ilave bir veri işleme yük ve zamanı ister. Bu durum eğitim ve testi kısa süren küçük ve orta hacimli veriler için sorun olmasa da büyük hacimli veri setlerinde hesaplama ve zaman yönünden maliyetli olabilir.