Algoritma geliştirme nasıl büyütülür?


18

Keşifsel veri analizi ve algoritmalar geliştirirken, zamanımın çoğunun görselleştirme, bazı kod yazma, küçük veri kümesinde çalıştırma, tekrarlama döngüsünde harcandığını görüyorum. Sahip olduğum veriler bilgisayar görme / sensör füzyon tipi şeyler olma eğilimindedir ve algoritmalar görme açısından ağırdır (örneğin nesne algılama ve izleme vb.) Ve raf dışı algoritmalar bu bağlamda çalışmaz. Bunun çok fazla yineleme aldığını (örneğin, algoritma türünü aramak veya algoritmadaki parametreleri ayarlamak veya bir görselleştirme hakkı elde etmek için) ve ayrıca küçük bir veri kümesinde bile çalışma sürelerinin oldukça uzun olduğunu görüyorum. hep birlikte biraz zaman alıyor.

Algoritma geliştirmenin kendisi nasıl hızlandırılabilir ve daha ölçeklenebilir hale getirilebilir?

Bazı özel zorluklar:

Yineleme sayısı nasıl azaltılabilir? (Esp. Özellikleri ne olursa olsun, ne tür bir algoritma farklı versiyonları denemeden ve davranışlarını incelemeden kolayca öngörülebilir görünmüyorsa)

Geliştirme sırasında daha büyük veri kümelerinde nasıl çalıştırılır? (Genellikle küçükten büyük veri kümesine gitmek, bir sürü yeni davranış ve yeni sorun görüldüğü zamandır)

Algoritma parametreleri nasıl daha hızlı ayarlanabilir?

Makine öğrenimi türü araçlarını algoritma geliştirmenin kendisine nasıl uygulayabilirim? (Örneğin, algoritmayı elle yazmak yerine, birkaç basit yapı taşı yazın ve bunları problemden öğrenilen bir şekilde birleştirin, vb.)

Yanıtlar:


7

Öncelikle, verilerinizle başa çıkmak için tek bir strateji uygulamayı zorlaştıracak kadar çok sayıda (zaman, bağlam ve diğerleri işlevinde) varyasyonlar varsa, daha önce geçici / bağlamsal / veri kümesinin karakterizasyonu. Verileri karakterize etmek, yani içeriğin hacminin veya özelliklerinin bazı kriterlere göre nasıl değiştiği hakkında bilgi çıkarmak, genellikle kaba kuvvet moda algoritmaları çıkarmaktan daha iyi bir anlayış (daha özlü ve kesin) sağlar.

Her soruyu cevaplamak için:

  1. karakterizasyon kesinlikle belirli veriler için uygun algoritmaları seçmeye çalışırken yineleme sayısını azaltmanın bir yoludur ;
  2. verilerinizin değişiklik gösterdiği ayrı bir dizi kriteriniz varsa, daha basit / spesifik çözümler uygulanırsa hangi bilgileri elde edeceğinizi / kaybedeceğinizi bileceği gibi çözümleri ölçeklendirmek çok daha kolay hale gelir ;
  3. bir karakterizasyondan sonra, ne tür belirli verilerle uğraşacağınızı bileceğiniz için parametreleri seçmek daha kolay olmalıdır ;
  4. son olarak, bu karakterizasyonu desteklemek için veri madenciliği / makine öğrenme algoritmalarını kullanabilirsiniz. Buna aşağıdakiler de dahildir:
    • verilerin boyutsallığını azaltmak için kümeleme algoritmaları;
    • sınıflandırma algoritmaları, zaman / bağlam / ... işlevindeki verilerin mevcut olabileceği belirli özelliklere karar vermeye yardımcı olmak için;
    • veri setinden belirli bilgileri tahmin etmek ve aynı zamanda daha sonraki analizler için kullanılan verileri geliştirmek / hassaslaştırmak için ilişkilendirme kuralları;
    • ve diğer olası stratejiler ve analizler.

Ve işte , verileri analiz etmek için yararlı bulabileceğiniz bazı kriterlerin bir listesi.


5

Yararlı bulabileceğiniz iki şey:

  1. doğru modeli ve en uygun parametreleri aramayı hızlandırmak için meta-öğrenme . Meta öğrenme, makine öğrenim araçlarını, eldeki sorun için doğru makine öğrenme aracını / parametrelerini bulma sorununa uygulamaktan oluşur. Örneğin pratik bir örnek için bu çalışma ;

  2. daha büyük veri kümelerinde algoritmayı hızlandırmak için gpucomputing . Örneğin, OpenCV, görüntüleri / videoları işlemede çok etkili olan ve CPU'lara göre 10 ila 100 hızlanma getirebilen GPU'ları kullanabilir . Bilgisayarınızda büyük olasılıkla gpucomputing özellikli bir GPU olduğundan, onu kullanarak çok zaman kazanabilirsiniz.


4

Büyük olasılıkla, bu YouTube demosunu ve şu makalelerle ilgili olan Google Tech Talk'u görmüş olmanız muhtemeldir :

Ve OpenTLD için GitHub'daki bu kod kümesi . Burada GitHub'daki "beni oku" yı işaretlerseniz , yazarın e-postasının (Zdenek Kalal) listelendiğini fark edersiniz , bu yüzden sorularınızla ilgili bir e-posta göndermeye veya hatta bu soruyu yanıtlamaya davet etmeye değebilir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.