Google PlayStore Uygulamaların Ne Kadar Yıldız Aldığının Tahmini
Merhabalar herkese bu makalemde,sizlere yapmış olduğum bir projeden bahsetmek istiyorum.Projede GooglePlayStore da bulunan uygulamaların ne kadar yıldız alacağını tahmin etmeye çalıştım.
Öncelikle Kaggle dan bulduğumuz verisetini sizinle paylaşmak istiyorum.
Veriseti linki= https://www.kaggle.com/lava18/google-play-store-apps
Bu verisetinin içinde iki adet csv dosyası bulunmaktadır.Bunlardan ilki uygulamaların isimleri, rating değerleri, ne zaman indirildiği tarih, kimlere hitap ettiği hakkında veriler barındırmaktadır.
İkinci csv dosyasında ise yine aynı şekilde uygulama isimleri ve kullanıcının girdiği yorumlar gibi çeşitli veriler bulunmaktadır.
Ben bu verisetini kullanıp uygulamaların rating değerlerinden yola çıkarak bir makine öğrenmesi modeli ile eğitmeye çalıştım.
Yukarıda Python ile kullandığım kütüphaneler bulunmaktadır. Hepimizin de bildiği gibi Python da kütüphane çağırmak için import yazıp gerekli kütüphanenin ismini yazmanız yeterli olacaktır.
Ben bu projemde veri bilimi ve analizi dışında,kullanıcının girdiği pozitif ,negatif ve nötr yorumlarda en fazla geçen kelimeyi bulmak için NLP yani Doğal Dil İşleme algoritmasını da kullandım.
Peki Nedir Bu NLP?
NLP yani Doğal Dil İşleme, doğal dillerin kurallı yapısının çözümlenerek anlaşılması veya yeniden üretilmesi amacını taşır.Kısacası insana getireceği kolaylıklar, yazılı dokümanların otomatik çevrilmesi, soru-cevap makineleri, otomatik konuşma ve komut anlama, konuşma sentezi, konuşma üretme, otomatik metin özetleme gibi birçok başlıkla özetleyebiliriz.
Hadi gelin yukarıdaki kodu tartışalım.Yazmış olduğum kodda NLP kullanarak uygulamalarda en fazla geçen kelimeleri elde ettim.En fazla good, weather vb. kelimeler kullanılmış görünmektedir.
Şimdi kodlamaya devam edelim.Yavaş yavaş model oluşturmaya başlayalım.İlk önce LogisticRegression algoritmasını deneyelim.
LogisticRegression Nedir?
LogisticRegression genelde kategorik değişkenler için kullanılır.Mesela bir kişinin kanser olup olmadığının tahmini veya 0,1 /yes,no gibi kategorik değerleri kullanan bir makine öğrenmesi algoritmasıdır.
LogisticRegression algoritmasını da öğrendikten sonra modele geçebiliriz.
Elimizde bulunan verisetinde bizim yıldız tahmini yapması için “Rating” değeri vardı ve bu değer bizim için hedef değişkendi.Modelimizi bu değişkene göre ayıralım.
Şimdi model oluşturmaya geçelim.Aşağıdaki adımları yapalım:
- Train(eğitme) ve test işlemi
- Modeli tanımlama( hangi modeli kullanmak istiyorsak)
- Modeli fit(eğitim) etme
- Modeli predict(tahmin edilen değer ) etme
- Confusion matrix kullanma(gerçek değer ile tahmin edilen değer arasındaki matris)
- En son olarak accuracy_score yani iki değer karşılaştırmasından çıkan en iyi sonucu bize gösterme
Ve LogisticRegression ‘dan elde edilen sonuç 0.75 yani bu değer kadar makine öğrenmeye çalışmıştır.
O zaman başka modelleri de kullanalım.
DecisionTreeRegressor ile yapalım.
DecisionTreeRegressor Nedir?
Karar ağacı(Decision tree), çok sayıda kayıt içeren bir veri kümesini, bir karar kuralları uygulayarak daha küçük verilere bölmek için kullanılan bir yapıdır.
DecisionTree, makine öğrenmesi algoritmalarından birisidir.Eksik verileri desteklemez.
Karar ağacını da öğrendiğimize göre yukarıdaki kodu incelemeye geçelim.
LogisticRegression da bahsetmiş olduğumuz model oluşturma adımlarının aynısını DecisionTreeRegressor içinde kullanacağız.
Model de kullandığımız max_depth(ağaç kökünden başlayıp bir yaprağa kadar olan yolun uzunluğu) ve min_samples_leaf(bir düğümde olması gereken örnek sayısı) değerlerini de tanımlamamız gerekmektedir.Geriye kalan kısım ise model oluşturma adımlarında yazmaktadır.
Bunun sonunda modelimiz DesicionTreeRegressor kullanarak 0.75 oranında başarıya ulaşmıştır.En sonda sınıflandırma raporuna(precision değerlerine) bakacak olursak rating değerlerinde 4 sayısının daha fazla olduğu ve bunu %76 oranında öğrendiği elde edilmektedir.
Aynı verisetini kullanarak farklı model yapalım.Bu sefer RandomForest kullanalım.
Nedir Bu RandomForest?
RandomForest algoritması da Decision tree gibi sınıflandırma için kullanılır. RandomForest algoritmasının çalışma mantığı birden fazla karar ağacı oluşturur. Bir sonuç üreteceği zaman bu karar ağaçlarındaki ortalama değer alınır ve sonuç üretilir.
Kodlamaya geçecek olursak aynı şekilde model oluşturma adımlarını uyguluyoruz.Fakat farklı bir model oluşturuyoruz.
Modelimizin içerisine n_estimators(kaç tane ağaç kullanacağımızın sayısı -bu değeri kendimiz belirleyebiliriz.)ve n_jobs(paralel olarak çalıştırmak, tüm işlemcileri kullanmak) değerlerini tanımlamak gerekmektedir.
Bu işlemlerin sonucunda bizim modelimiz 0.76 oranında başarı elde etmiştir.Sınıflandırma raporuna bakacak olursak rating değerindeki 4 lerin sayısını %81 oranına çıkartması modelin iyi bir şekilde öğrendiğini gösterir fakat 5 lerin %100 oranında tahmin etmesi kadar düşündürücü bir model olduğu da açıktır.Çünkü bir veri tam olarak tahmin edilemez.
Kullanılan Kaynaklar:
Sonuç:
Bu yazımızda bir veriseti üzerinde LogisticRegression , DecisionTreeRegressor ve RandomForestClassifier algoritmalarını kullanmayı öğrenmiş olduk.
Bu algoritmalar arasında en iyi sonuç verenin RandomForestClassifier olduğu sonucunu elde ettik.
Proje Linkleri :
Yazımı okuduğunuz için teşekkür ederim…