Karar Ağaçları neden hesaplamalı olarak pahalı değil?


38

In R Uygulamaları ile İstatistiksel Öğrenme An Introduction , yazarlar uydurma olduğunu yazmak karar ağacını çok hızlıdır, ama bu benim için bir anlam ifade etmiyor. Algoritma, her bir özelliğin içinden geçmeli ve optimal bölünmeyi bulmak için mümkün olan her şekilde bölümlendirmelidir. gözlemli sayısal özellikler için bu, her özellik için bölümle sonuçlanabilir .nn

İkili bölmenin nasıl çalıştığını yanlış mı anlıyorum? Yoksa bu algoritmanın uzun sürmemesinin bir nedeni var mı?


1
Soru için +1. Bu ders notunu kontrol etmeye başlayabilirsiniz , sayfa 15, algoritması yerine kullanın . O(N)O(N2)
Haitao Du

Yanıtlar:


40

Karar ağaçları algoritmaları bir ağaca ulaştıklarında olası tüm ağaçları hesaplamaz. Yapmışlarsa, NP-sert çözme yapacaklardı.sorun. Karar ağacı yerleştirme algoritmaları tipik olarak yerleştirme işleminde açgözlü kararlar verir; her aşamada, verilen düğümdeki verilerle optimal bir bölünme bulmak için alt sorunu optimize eder ve yerleştirme sürecinde ilerlemeye devam eder. Ayrıca, karar ağacında daha derine ilerlerken, bölme kuralını daha küçük bir veri kümesi üzerinde optimize etmek için, onu verilen düğüme ulaştıran daha küçük bir veri kümesine sahipsiniz. Bu seçeneklerin tümü, verilen düğümdeki verilerin doğrusal taramalarıdır. Bunu yapmak karmaşık değildir, ancak çok sayıda gözleminiz veya bölünecek çok sayıda ortak değişkeniniz varsa hesaplama açısından biraz pahalı olabilir. Bununla birlikte, işlerin çoğu ayrılabilir ve üzerinde çalışmak üzere farklı makinelere gönderilebilir, böylece hesaplama mimarisini geliştirmenin yollarını büyütebilirsin.


10
Başka bir deyişle, ikili aramayla az çok karşılaştırılabilir.
Robert Harvey,

1
@Robert Harvey, takma işlemindeki safsızlık işlevlerini optimize ederek dengeli bölünmeyi garanti ettiğinizi hatta hatta teşvik ettiğinizi düşünmüyorum. İkili arama eşdeğeri arama karmaşıklığını elde etmek için dengeli bölmeyi zorlamanız veya en azından teşvik etmeniz gerekir. log2(N)
Lucas Roberts

2
Kabul etti, ancak prensip hala geçerli. (Bu yüzden "az ya da çok" kelimeleri kullandım)
Robert Harvey

2

Karar ağaçları oluşturmak için CART ve C4.5 algoritmaları arasında bazı farklılıklar vardır. Örneğin, CART özellikleri seçmek için Gini Impurity'yi kullanırken, C.4.5 Shannon Entropy'i kullanıyor. Farklılıkların cevapla alakalı olduğunu sanmıyorum, bu yüzden bunlar arasında ayrım yapmayacağım.

Karar ağaçlarını sandığınızdan daha hızlı yapan şey şudur:

  1. Diğerlerinin de söylediği gibi, bu algoritmalar 1 görünümlü algoritmalardır. Yerel optimizasyonlar yaparlar. Her dalda, kullandıkları metriği (Gini veya Entropy) maksimize eden / minimize eden kuralı seçerler. Bu, mantıklı bir işleç kullanmanın and, daha iyi bir ağaç elde edilmesine neden olacak kuralları kaçırabilecekleri anlamına gelir . Bu, özellik mühendisliği yaparken çok dikkatli / akıllı olmanız gerektiği anlamına gelir. Örneğin, ne kadar insanın içileceğini tahmin etmeye çalıştığınızı, bunun gibi mühendisler için bir özellik isteyebilirsiniz new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Karar ağaçları bu kuralları kaçırabilir veya gereklerinden daha az önem verebilir.
  2. Daha da önemlisi, karar ağaçları tarafından kullanılan ölçütler adım adım hesaplanabilir . Bir özelliğiniz olduğunu söyleyin . Karar ağacının metriği hesaplaması , sonra metriği tekrar hesaplaması , sonra tekrar vb. İşlemi yapması gerekmez . Gini ve Entropi seçildi, çünkü artımlı olarak hesaplanabilirler. Her şeyden önce, her özellik sıralanır; böylece . İkincisi, hesapladığınızda , sonucu kolayca hesaplamak için kullanabilirsiniz . Ortalama yapmak gibi. Ortalama bir örnek varsa, , ve size başka bir değeri verirseniz, ortalama performansınızı ucuz bir şekilde güncelleyebilirsiniz,X1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1 . Gini katsayısı , numune için kolayca artımlı olarak hesaplanabilen bir miktar toplamı olarak hesaplanır.
  3. Karar ağaçları paralelleştirilebilir. Her bir düğüm bağımsız olan iki daldan oluşur. Bu nedenle, her dalda, ağaç oluşumunu paralelleştirme fırsatınız var. Ayrıca, özellik seçiminin kendisi de paralelleştirilebilir. Paketleri xgboostbu kadar hızlı yapan şey budur . Degrade yükseltme sıralıdır ve paralelleştirilemez, ancak ağaçların kendisi yapabilir.

1

Sadece cevapları zenginleştirmek için,

Hiyerarşik eksene paralel karar ağaçları hızlıdır (CART, C4.5), ancak hiyerarşik olmayan karar ağaçları veya daha doğru olmalarına rağmen olmayan eğik bölümleri uygulayanlar gibi başka alternatifler de vardır. Eğer ilgileniyorsanız, aşağıdaki referansları kontrol ediniz. (Bunlar seçkin bir seçim değildir).

Sigara hiyerarşik:

Grubinger, T., Zeileis, A. ve Pfeiffer, K.,., 2014. Evtree: RJStat'ta genel olarak optimal sınıflandırma ve regresyon ağaçlarının evrimsel öğrenimi. Yazılım 61 (1), 1-29.

Eğik bölmeler:

Murthy, SK, Kasif, S. ve Salzberg, S., 1994. Eğik karar ağaçlarının indüksiyonu için bir sistem. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. ve Kamath, C., 2003. Evrimsel algoritmalarla eğik karar ağaçlarının uyarılması. IEEE Trans. Evol. Comput. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. ve Salzberg, S., 1993. Eğik karar ağaçlarının uyarılması. J. Artif. Intell. Res. 2 (2), 1002-1007.

İyi şanslar!

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.