Büyük boyutlu verilerde classification ve birkaç soru


#1

Merhaba,

Deep learning öğrenmeye yeni başladım. Şuan tf backendinde keras üzerine iris datasette bir classification yaptım fakat 100k instance’a sahip bir projede kafamda soru işaretleri olutkaldım. Kullandığım dataset :

https://archive.ics.uci.edu/ml/datasets/Localization+Data+for+Person+Activity

Kısaca şuanki datasette 25 insanin bel, göğüs ve ayak bileklerine takılan sensörlerin; x y z spatial locationlari, timestampler, kişi bilgisi, sensörün takıldığı yer olmak üzere 6 attribute ve yapılan aktiviteyi gösteren bir output var.

Deep learningin çok temel noktalarını kaçırdığımı düşünüyorum.Anlamadığım noktalar şunlar:

1-) Benden istenen şey bu verisetinde classification yapmam. Preprocessing aşamasında sizce herhangi bir vektörel konum, açısal yön hesaplamalara gerek var mı? Yoksa inputları layerlara gönderip output almak yeterli mi?
2-) Eğer yeterliyse, accuracy hesaplarken, verilerde her insan için ayrı 6bin entry ve yaklaşık 800 farklı aktivite var. Test datasını split ederken lossu minimumda tutmak için bunu nasıl göz önünde bulundurabiliriz?
3-) Datasetin training aşamasını hızlandırmam için neler önerirsiniz?

Biraz uzun oldu :slight_smile: Teşekkürler


#2

Böyle bir düşüncen varsa niye önce temelini sağlamlaştıracak şekilde ya ilgili ders videolarını ya da slaytlarını bir gözden geçirmiyorsun? Kod üzerinden machine learning öğrenilmez.

Dene gör. Şurada kaç kişi bu datasette çalışmış olabilir? Hadi şansa çalışan birilerini buldun kaç kişi senin kafandaki işlemleri önceden tecrübe etmiş olabilir? “Gerek var mı?” türünden bir sorunun tek cevabı var, o da deneyini yapıp, sonucuna bakman. Eğer baseline’ından iyi sonuç alıyorsan “Gerek varmış” sonucuna ulaşırsın.

Test datasını split ederken herhangi bir şeyi göz önünde bulundurmazsın. Random bir şekilde datanı bölersin ve test split’ine ne düşerse onu test amaçlı kullanırsın. “Loss’u minimumda tutabilecek test spliti nasıl olur?” sorusunun cevabı da “Olmaz”. Ha şayet böyle bir iş yaparsan, aldığın sonuçlar hileli olur zaten.

  • Patatesten daha iyi bir GPU sahibi ol.
  • Paran GPU almaya yetmiyorsa, AWS/Google Cloud/Azure’dan GPU serverı kirala
  • Paran buna da yetmiyorsa, Google Colab’ı araştır (zaten az sonra biri gelip blog’unun linkini atar). Bunun için para vermene gerek yok; ama beleş olmasından dolayı sınırlamaları var. Hoş senin case’inde sıkıntı olacağını sanmam.

#4

Aslında burda kendim yanlış ifade etmiştim. GPU dışındaki yöntemleri sormak istemiştim. Pruning gibi örneğin.


#3

Öncelikle yanıtlarınız için teşekkürler. Aslında test aşamasında temel anlamadığım şey şu; iris datada mesela bir bitkinin yaprak uzunlukları vs temel alınarak bir veri oluşturulmuş ve. bu uzunluk bilgilerinden hangi bitki türü olduğunu anlayabiliyoruz. Bu verisetinde ise örneğin her insanın yürürkenki sensör konumları için 120 farklı veri var . Bunun hata orananı arttırabileceği düşünüyorum.


#5

GPU haricinde training süreni kısaltmak için yapabileceğin her şeyin trade-off’u var:

  • Data size’ını küçültebilirsin (sampling vs. ile)
  • Optimizer’ını değiştirebilirsin. Adam kullanıyorsan gradient descent’e geçiş belki. Hatta momentum verirsen hızlanma ihtimali var. Ama bu çok case-dependent bir yöntem. Hiç bir kazancın olmayabilir üstüne performans kötüleşebilir, training süresini kısaltabilir ama gene performans düşebilir, training süreni arttırabilir ama performans da yükselebilir. Kısaca denemeden sonucunu öngörmek zor.
  • Learning rate’in değerini arttırabilirsin, ama bu da kötü local minimum/maksimumlara takılmana sebep olabilir.
  • Network parametreleriyle oynayabilirsin. Daha büyük CNN filterları, daha az sayıda hidden nodelu fully connected layerlar vs. Ancak bu da case-dependent olarak istediğin sonucu verebilir ya da vermeyebilir.

Bunlar haricinde de yapabileceğin pek bir şey gelmiyor aklıma. Trade-off’u olmadan training’i hızlandırmanın en temiz yolu günün sonunda GPU kullanmak.


#6

Yani hata oranının artması zaten doğal. Senin amacın da zaten o hata oranını azaltacak bir model tasarlamak değil mi? Hatayı düşürmenin yolu, test dataseti üzerinde yapılacak işlemlerden değil training sonucunda oluşturduğun modelden geçiyor.