Karar ağaçları uzun zamandır makine öğreniminin temel taşıydı, sezgisel, kural tabanlı mantık ve her iki sınıflandırma ve regresyon görevleriyle başa çıkma yeteneğinin bir parçasıydı. şeffaf yapı onları yorumlanabilirliklerin kritik olduğu senaryolar için, kredi puanlamaları, tıbbi tanı ve müşteri çakal tahminleri gibi. ancak, organizasyonlar her zaman veri setleri toplayarak - bu kadar büyük veri işleme algoritmaları için tasarlanmış - tek ekran işleme için tasarlanmış.
Bir Karar Ağacı Nedir?
Bir karar ağacı, bölgeye ait olan özelliği bölmenin denetimli bir öğrenme modelidir ve her bölgeye bir tahmin tayin edilir. Model, yeniden kayıt altına alınır: her iç düğümde, bir karar kuralı testinde bir özellik ve sonuçları iki veya daha fazla şubeye böler.
Bir bölünmenin kalitesi, ortaya çıkan çocuk düğümlerinin olumsuzluğunu veya heterojenliğini ölçen bir kriter tarafından ölçülmektedir:
- [FONT:0)Gini dürtüsü[[Dönem: 0:0)) [CART): Hayırlı sınıflardaki sınıfların dağılımına göre etiketlenen rastgele seçilmiş bir elementin yanlış sınıflandırılması olasılığını ölçer.
- [FONT:0)Entropy[Dönetici: 0,3, C4.5): Node'deki belirsizlik veya bilgi miktarı, bölünmeden sonra entropideki azalmadır; en yüksek bilgi kazanç elde eden özellik seçilir.
- [0]Variance azaltımı[[[Dönetici:0)[Döneticiler): Her çocuk içinde hedefin ağırlığına sahip olmak; toplam değişkenliği en aza indiren bölünme seçilir.
Karar ağaçları otomatik olarak doğrusal olmayan ilişkileri ve özellikleri ele alır, minimum veri işleme öncesi ( ölçeklendirmeye gerek yoktur), ve a set ofurFLT:0) olarak görselleştirilebilir.).Bu özellikler onları ideal bir temel model yapar ve rastgele ormanlar ve gradient-boosted ağaçlar gibi daha güçlü bir şekilde bir bina bloğu yapar.
Big Data'daki Scalability Challenge
Veri setleri milyonlarca sıraya ve binlerce özellikte büyüdüğünde, geleneksel karar ağacı algoritmaları temel şişelerle karşı karşıya kalır:
- [FONT:0]Memory kısıtlamaları[[Dönetici: En iyi bölünme seçimi için sürekli özellikler hafızaya yükleme gerektirir.For datasets over available RAM, İşletim sistemi takas etmek için tatil yapar, ağır ölçüde degrading performansı.
- [FONT:0)C ⁇ karmaşıklığı[DÜDÜDÜDÜDÜDÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ: ×[DÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ
- [FONT:0]Sequential nature[[Dönetici: 1) Geleneksel ağaç indüksiyonu doğal olarak kesindir - her zaman düğüm, ebeveyninin bölünmüş kararına bağlıdır. Bazı paralelleştirme mümkün olsa da (örneğin, bölünmüşleri paralel olarak değerlendirin), genel algoritma birçok makinede iyi ölçeklendirmez.
- [FONT:0]Disk I/O[DÜDÜDÜDÜDÜDÜDÜSÜSÜDÜSÜSÜŞÜN: 0 )DÜSÜŞÜNÜ: Veriler hafızaya sığmıyorsa, tekrar tekrar disk tabanlı veriler ciddi geç kalmışlara neden olur.
Büyük veri çerçeveleri bu zorlukların dağıtılmış depolama, paralel işleme ve hız ve ölçeklerdeki büyük gelişmeler için en az doğruluk sağlayan yaklaşık algoritmaları ele almalıdır.
Apache Spark: Bir Dağıtılmış Hesaplama Powerhouse
Apache Spark, geniş ölçekli veri işleme için tasarlanmış açık kaynaktır. Anahtar mimari yenilikleri şunları içerir:
- [FONT:0)Resilient Dağılım Datasets (RDDs))[değiştir | kaynağı değiştirmiş bir grupla bölmek, paralel operasyonlara izin vermek.
- [FONT=0)DataFrame API[[Dönetici: 1))[Döneticileri, bir ilişki masasına benzer şekilde, Catalyst sorgulayıcısı aracılığıyla yapılan optimizasyonlarla ilgili olarak, sütunlara benzer bir üst düzey soyutlama.
- [FONT:0)In-memory processing[[Dönetici: Veriler, Hadoop MapReduce ile karşılaştırılarak disk I/O'yu hafızada önbelleklenebilir.
- [FONTlib[DDDDDDDDDDD) ● Ortak algoritmaların uygulanmasına ilişkin, karar ağaçları, rastgele ormanlar ve gradient-boosted ağaçlar dahil olmak üzere, sayısal makinelere entegre edilebilir bir makine öğrenme kütüphanesidir.
Spark'ın iteratif hesaplamaları verimli bir şekilde gerçekleştirme yeteneği - geçiş arasındaki hafızada verileri tutmak - özellikle eğitim karar ağaçları için iyi uygun hale getirmek, bu da birden fazla kişinin bölünmüş adaylara değerlendirmesini gerektirir.
Spark MLlib ile Karar Ağaçlarını Uygulamayın
Spark MLlib, kümedeki verileri bölmek ve sürekli özellikler için her türlü verileri bulmak için paralel olarak uygular.Inglisher (binary) ağacı) Her iki sınıflandırma ve regresyon için yapı için yapılandırılır.The algorithm is parallelized by partitioning data across the cluster and using a histogram-based approach for continuous features. instead of sorting all data to find every possible partition, MLlib bins feature values into separate intervals (max)
Data Hazırlık
Eğitimden önce, ham veriler bir format Spark anlayışına dönüştürülmelidir. Anahtar adımlar şunlardır:
- [FONT:0)Ana Sayfa[Döneticileri)[Döneticileri)[Döneticileri)[Döneticileri ile ilgili olarak kategorik özelliklerle ilgili olarak kopyalanır; belirtilmişse veya kategorik özellikleri de idare edebilir.
- [FONT:0)Ana Sayfa vektörü[[Dönetici:0)))[Dönetici ve indekslenmiş kategorik) tek bir vektör sütunu ile birleştirilmelidir.
- [FONT=0)Label encoding[[Dönetici: 1. Sınıf için etiket sütunu sayısal bir indeks olmalıdır (e.g., 0,1,2). UseENFLT:2).StringIndexer
- [FONT:0]Handling eksik değerleri[[DÜDÜDÜDÜDÜ:2)[DÜDÜDÜDÜDÜ: 1) Eksik özellikleri olan Rows, eğitimden önce özel bir boru hattıyla ele alınmalıdır.
Tüm bu dönüşümler bir İZFLT'ye zincirlenebilir:0)ML Boru Hattı[DK:1), iş akışı yenidenroducible ve kolay dağıtmayı sağlar.
Model Eğitim
Bir veri olarak hazırlanan verilerle, “tehdit” sütunu ve bir “Label” sütunu içeren bir veri kümesi, eğitim basittir.Programlar ya da [[0)DecisionTreeClassifier) veya [[Dönetici|s [Döneticileri]] ve çağrılar:0)
- [FONT:0)maxDepth[[DÜDÜT:1): Ağacın maksimum derinliği (default 5). Deeper ağaçları daha karmaşık kalıpları yakalayabilir, ancak aşırı yükleme ve yorumlama riskini artırabilir.
- [FONT=0)maxBins[[DÜDÜT:1): Sürekli özellikleri (default 32) ayırarken kullanılan bin sayısı.
- [FONT:0]))[[[Dönetici]: Sınıf seçimi için kullanılan boşluk ölçüleri, “görüntü” veya “kanç”; regresyon için “değişim” için.
- [FONT:0][DönemlerPerNode[[Dönler: 1 ): Bir bölünmeden sonra bir yaprak node olması gereken minimum örnek (default 1). Bu değeri artırmak nadir desenlere aşırı yüklemeye yardımcı olur.
- [FONT:0]minInfoGain[[Dönetici: 1 ): Bir bölünme için gerekli minimum bilgi (default 0.0).
- [FONT:0][[Dönemli: ► Türlü (parçalık ve ayrımı) için rastgele tohum.
Eğitim sırasında, Spark, her bir düğüm için verileri dağıtır ve en iyi bölünmeyi belirler.Her bir kesintiye uğrama, iç histogramlar için kompakttır, iletişim üstogramları çok büyük veri kümeleri için bile yönetilebilir.
Hiperparametre Tuning
En iyi hiperparametreleri bulmak genellikle çapraz-validasyon veya bir tren-validasyon bölünmüşlüğü içerir. Spark MLlib, ve [[Döneticiler[Döneticiler)[Döneticiler için kullanılabilir.[Döneticiler, yüksek çözünürlükte, yüksek çözünürlükte veya yüksek çözünürlükte kullanılabilir.
Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme Değerlendirme
Model eğitilmiş olduğunda, test setini (veya yeni verileri) çağırarak dönüştürmek için kullanılabilir. tahminler yeni bir sütun olarak eklenmiştir. Değerlendirme ölçümleri göreve bağlıdır:
- [FONT=0)Kuşturma[[Dönetici: 0) Doğru, hassas, hatırla, F1-seks, karışıklık matrisi, ROC-AUC ( ikili sınıflandırma için) Spark's [[Dönetici:2)BinaryClassificationEvaluator[DÜye Olmayanlar[DÜye Olmayanlar İçin Tıklayınız.
- [FONT=0)Regresyon[Dönetici:) <>Komşu hata (MSE), mutlak hata (MAE), R2 (tahmin etme konusunda etkili olan) kullanım [Dönetici).
Model aynı zamanda onun hakkında da incelenebilir:0)DebugString[Dönetici: 1) Bu yöntem, ağaç yapısını baskılayan ve öğrenilen kuralların mantıklı olduğunu doğrulayan bir yöntem.
Spark üzerinde ensemble Yöntemleri: Rastgele Ormanlar ve GBTs
Tek bir karar ağacı yorumlanabilirken, yüksek değişken ve sınırlı doğruluktan muzdarip olabilir. Spark MLlib ayrıca birden çok karar ağaçları birleştiren iki güçlü örnek yöntemin dağıtılmış uygulamaları sunar:
Rastgele Ormanlar
rastgele orman birçok ağaç (sihirli tarafından kontrol edilir:0) sayısız yüksek doğruluk sağlar[Döneticileri değiştirmiş)[Döneticileri değiştirmiş ve her bir düğümün rastgele alt kümesinden ayrılır.[Döneticileri değiştirmiş gibi) Bu dekore edilmiş bir şekilde, kümede birden çok ağaç inşa ederek, "Dönemli ağaçlarla aynı şekilde genişletilebilirlik"[Döneticileri)
GradientBoosted Trees (GBTs-)
Gradient, ağaçlarının eşit bir şekilde güçlendirilmesini sağlar, her yeni ağaç, önceki topluluğun ikametini doğrulamaktadır, ancak dikkatli bir şekilde ayarlanır, ancak Spark hala her bir iteration içinde dağıtır. GBT:3 (öğrenme oranı) ve-FLT:4 tipi (dokuz)[Dönetici için regresyon için regresyon için regresyon için).
Her iki benzerlik yöntemi aynı ölçeklenebilir avantajlardan yararlanır: büyük ölçekli veri işleme, hata toleransı ve veri kesinti boru hatlarıyla entegrasyon.
Gerçek Dünya Uygulamaları
Spark ile inşa edilen karar ağaçları ve onların toplulukları endüstriler arasında dağıtılıyor:
- [FONT:0)Kredi risk değerlendirme[[Dönetici: Bankalar gelir, kredi tarihi ve borç-to- gelir oranı gibi özellikleri onaylayacak veya inkar edecek kredi ağaçları kullanır.
- [FONT:0)Müşteri churn tahmin): Telekomünikasyon ve SaaS şirketleri, müşterilerin hangi müşterilerin davranışsal özellikleri üst boyutsal olarak ele alacağını tahmin etmek için kullanım loglarını, destek etkileşimleri ve demografik verileri analiz eder.
- [FONT:0]Fraud algılama[[[DÜDÜT:1): Finansal kurumlar ağaç topluluğu benzeyenleri kullanarak gerçek zamanlı olarak işlem alır. Çünkü ağaçlar yorumlanabilir, uyumluluk takımları bir işlemin neden bayraklandığını açıklayabilir.
- [FONT:0) Tahmin edici bakım[Dönetici: Üretim sensörleri zaman serisi verilerinin terabaylarını üretir; regresyon ağaçları titreşim, sıcaklık ve basınç okumalarına dayanan ekipman başarısızlığı olasılığı tahmin eder.
- [FONT:0)Sağlık bakım analizi[[Dönetici: Hastane sistemleri, tüm kaynakları tahmin etmek için elektronik sağlık kayıtları üzerinde karar ağacı modelleri inşa eder.
Her durumda, verilerin tam nüfusuna ölçeklendirme yeteneği - bir örnekten daha sağlam ve adil modellere kadar.
Üretim için En İyi Uygulamalar
Spark'daki karar ağaçlarının en çok elde etmek için aşağıdakileri düşünün:
- [FONT=0)Eğitim verileri[[DÜT 1: 1 ): DataFrame'de ayar veya çapraz-validasyon sırasında diskten geri dönmeden sonra veriye dayalı olarak kullanılan kullanımlar için kullanılan bilgiler.
- [FONT=0] Veri kümesine göre ([Dönetici: 2): Paraziğe dayalı sınıflarla sınıflandırmak, aşırı sınıflar veya sınıf ağırlıkları kullanmak (Spark'ın karar ağaçları doğrudan desteklemiyor; uygun şekilde örneklenebilirsiniz.
- [FONT:0) Kaynak kullanımı[[Dönetici: 1 ): Yüksek bir yüksek çözünürlükte derin bir ağaç ) Değer, sürücüyü artırmak için OOM'un yanı sıra sürücüyü artırmak veya sürücüyü artırmak için kullanılabilir.
- [FONT:0)Use has important[[[Dönetici: Eğitimden sonra, alıntılama özelliklerine dikkat etmek için önemli puanlar sunar, eğitim süresini azaltır ve yorumlara fayda sağlar.
- [FONT:0)Serialize ve hizmet[DÜT:1): ML Boru Hattının [[DÜD:3) ve [[DÜDÜDÜDÜDÜ: 4) Sürekli eğitim modellerine devam etmek için, ağacı kuralları basit bir görünüme dönüştürmek veya modeli Spark'ın akışı veya toplu hizmet etmek.
Dış Kaynaklar
Daha fazla okuma ve pratik örnekler için, bu yazara atıfta bulun:
- [0]Apache Spark MLlib Karar Ağacı Dokümantasyon[Dönem: 1)
- [0]Wikipedia: Karar Ağacı Öğrenmesi).
- [FONT:0]Scikit- Learning Decision Trees (To karşılaştırma için)).
- [FONT:0]Databricks Blog: Rastgele Ormanlar ve MLlib'de Güçlendirici).
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Karar ağaçları, veri bilim insanının aracı olan bir araç olarak kalır, eşsiz bir şeffaflık ve tahmin edici bir güç sunar. Apache Spark'da bunları uygulamakla, organizasyonlar binlerce milyardan fazla sıraya kadar ağaçlara bu kadar değerli olan yorumlardan ölçeklenebilirlik sağlayabilirler. Spark'ın birleşik veri işleme motoruyla bir araya getirdiği karar ağaçları, hızlı eğitim, ayarlama ve en büyük veri boru hatlarıyla sorunsuz bir şekilde entegrasyon sağlayarak, rastgele ormanlar ve gradient ağaçları için bloklar inşa edebilir.