Geçen sefer, Makine Öğrenimi modeli için en önemli değerlendirme tekniklerinden bazılarını ele aldık. Birisi ölçüm olarak yalnızca doğruluğu körü körüne kullandığında, gerçekten “Ağaçlar İçin Ormanı göremez” diyebiliriz. :) Şaka bir yana, veriler dengesiz olduğunda, modeli doğru bir şekilde değerlendirmek için genellikle doğruluğun yeterli olmadığını gördük.
Başlıktan da anlaşılacağı gibi, popüler Makine Öğrenimi tekniklerini kapsayan yolculuğumuza devam ediyoruz. Bugünün konusunda Karar Ağaçları ve Rastgele Ormanlarımız var. Daha sonraki sürüm gelişmiş bir sürüm olduğundan veya daha doğrusu, birden çok Karar Ağacının bir kombinasyonu olduğundan, bu iki algoritmayı birlikte ele almaya karar verdim.
Makale ile Karar Ağaçları ve Rastgele Orman sınıflandırıcılarını başlangıç düzeyinde açıklamaya çalışacağım. Ayrıca, gerçek verilerle ilgili bazı ilginç örnekler verilmiştir. Bunu okuduktan sonra, umarım kendi sınıflandırıcınızı kullanmaya hazır olursunuz.
Makalenin yapısı :
Karar Ağacı tanımıyla başlayalım. Bir Karar Ağacı düşündüğümüzde, en iyisi gerçek bir ağaç düşünmektir; burada düğümler, modelin sınıflandırmak istediğimiz nesne veya değerle ilgili sorduğu soruları temsil eder. Diğer bir deyişle, verilerin özelliklerine (sürekli tamsayılar veya kayan değerler veya sınıflar veya etiketler) dayalı olarak, model , veri kümesindeki her nesneyi doğru şekilde sınıflandırmak için kullanılan kurallar oluşturur . Bu örnekte, yağışları türüne göre sınıflandırmak için kullanılan basit bir Karar Ağacı sunacağım. Her düğümün iki sonucu vardır (dallar), örneğin yağış KATI veya SIVI veya yağış bulutlardan DÜŞMEKTEDİR veya ZEMİN SEVİYESİNDE oluşmuştur .
Karar Ağaçlarının bazı önemli özellikleri vardır: kök, derinlik, düğüm, yaprak, yarıklar (dallar) vb.
Kök: Yağış Türü
Derinlik : Bir sonuç almadan önceki bölünme sayısı, bizim durumumuzda, 3
Karar Düğümü : bölünmekte olan görüntüdeki her "dikdörtgen"
Yaprak : Bölünmeyen her "dikdörtgen" (son satırda olanlar)
Bölmeler : Verinin daha küçük bir bölümünü elde etmek için sorduğumuz "sorular", yani sıvı veya katı
Karar Ağaçları, genellikle Karar Ağacı Regresörleri olarak adlandırılan regresyon için de kullanılabilir. Bir sınıflandırıcı ağacının farkı yalnızca, sınıflandırıcının bir sınıfı veya etiketi öngördüğü, regresörün sürekli bir değer, bir sayı, yani 26 Kasım'da ne kadar yağmur yağacağını tahmin ettiği sonuçtadır.
Şimdi bir Ağacın amacını anlıyoruz, ama bir Ağaç Ormanı olabilir mi? Elbette yapabilir! Rastgele Orman, birçok Karar Ağacı topluluğudur. Her Ağaç, bunun için yalnızca özelliklerin bir RASTGELE kısmında (alt küme) ve eğitim verilerinin bir RASTGELİK bölümünde (alt küme) eğitilir. Böylelikle, her Ağaç eğitim verisine fazla uyma eğilimindedir, ancak bir topluluk olarak, birkaç düzine Ağaç için sonuç ortalaması alınır (veya çoğunluk oyu ), bu nedenle, aşırı uyumdan kurtulmuş bir sonuç elde ederiz. Bakalım Yağış Sınıflandırıcımızın Rastgele Orman olarak yaratırsak nasıl görüneceğini görelim.
Dolayısıyla bu örnekte, her biri 2 derinliğe sahip üç Ağaç sunulmaktadır. Şimdi, diyelim ki, ilk ve sonuncusu elde edilen yağışın "Hoar" olduğunu, ikincisi ise "Sis" i öngörüyor. "Çoğunluk Oylaması", "Hoar" olarak nihai tahminin yapılmasına neden olacaktır. Resimde de belirtildiği gibi, N sayıda bireysel Ağaca sahip olabiliriz. Her bir Ağacın farklı özellikler (" sorular ") kullanacağına dikkat etmek önemlidir . Sınıflandırıcıların durumunda çoğunluk oyu kullanılırken, Regresyon durumlarında ortalama oy kullanılır.
Makine Öğreniminde, birden çok bireysel modeli (bu durumda Karar Ağaçları) birleştirme sürecine " Topluluk Öğrenimi " denir .
Sonraki birkaç bölümde, iki popüler veri kümesinde Scikit-learn Karar Ağacı ve Random Forest sınıflandırıcılarını uygulayacağız.
Veri kümelerimizi yüklemeden önce, ilk olarak bağımlılıkları içe aktarıyoruz.
Karar Ağacı sınıflandırıcı sınıfı ağaç modülünden yüklenirken Random Forest sınıfı Scikit-learn'ün topluluk modülünden yüklenir. Ayrıca, ithal train_test_split eğitim ve test setleri, içine verilerimizi bölmek confusion_matrix sonuçları değerlendirmek, ağaç Karara Ağacı ve görselleştirmek için önişleme sayısal etiketlere tanımlayıcı özellikleri (sayısal olmayan) dönüştürmek için Etiket Encoder kullanmak için.
Daha sonra verileri içe aktarabiliriz. Bu sefer Kaggle'dan iris veri kümesini ve Udacity'den yakıt ekonomisi veri kümesini kullanıyoruz . Amacımız , Iris çiçeklerinin çiçek türlerini ( Sınıfı ) ve arabalar için araç sınıfını ( VClass ) tahmin etmektir .
Verilere gizlice girme.
Tahmin edici olarak aktarım türünü ve sürücü türünü kullanmayı planladığımız için, açıklayıcı (sayısal olmayan) özellikleri tam sayılara dönüştürmek için Etiket Kodlayıcıyı otomobil veri kümesine uygulamamız gerekir.
Çiçek veri setinde, tüm özellikler sayısal ve benzer büyüklük sırasına sahiptir, bu nedenle herhangi bir ön işleme uygulanmamıştır. Özelliklerin büyüklük sıralaması büyük ölçüde farklılık gösteriyorsa veya aykırı değerler mevcutsa, normalleştirme şiddetle tavsiye edilir.
Modeli oluşturmadan önceki son adım olarak, verileri eğitim ve test veri kümelerine ayırdık.
Karar Ağacı sınıflandırıcısını oluştururken birkaç parametre seçilebilir. Ağaç modelini tanımladığımızda bunlardan bazılarından daha önce bahsedilmişti. Scikit-learn, ağacın maksimum derinliğini, ölçütü, random_state, max_leaf_nodes, max_features vb. Seçmemize izin verir. Bu veri kümesiyle, tatmin edici bir sonuç verdiği için varsayılan ayarlarla gittim.
Ardından, Iris veri kümesi için bir Random Forest sınıflandırıcısı oluşturuyoruz. Burada Scikit-learn, topluluktaki (n_estimator), ölçüt, maksimum derinlik (ağaçların), max_features vb. Toplam Karar Ağacı sayısını tek bir Karar Ağacı oluştururken olduğu gibi benzer parametreleri değiştirme seçeneği verdi. Yine, iyi sonuçlar nedeniyle varsayılan ayarlar seçildi.
Her iki sınıflandırıcı ile aynı sonuçlar elde edildi. Iris-Versicolor'un yalnızca bir örneği Iris-Virginica olarak yanlış sınıflandırıldı.
Sınıflandırıcıların daha büyük, daha karmaşık bir veri kümesinde nasıl performans gösterdiğini görelim.
Arabalar için eğitim doğruluğu% 93 ile tatmin ediciyken, test doğruluğu% 73'e düştü.
Random Forest sınıflandırıcısı ile biraz daha iyi bir sonuç elde edilir.
Yine, eğitim% 93'te kalırken test doğruluğu% 76 ile biraz daha iyi. Daha sonra daha iyi sonuçlar elde etmek için modellerimizi "ayarlamaya" çalışacağız.
Scikit-learn, birkaç farklı hiperparametre için en iyi sınıflandırıcıyı bulmayı çok kolaylaştıran GridSearchCV adlı bir yöntem sağlar . GridSearchCV girişi olarak istenen sınıflandırıcıyı, seçilen hiperparametreleri ve değerlendirme metriğini içeren bir sözlüğü (veya listeyi) alır. Varsayılan değerlendirme ölçütü doğruluktur, ancak diğer ölçütler de mümkündür, örneğin ROC eğrisi veya F1 puanı altındaki alan .
Karar Ağacı modeli için sadece max_depth'i seçtik . Bu durum için en iyi hiperparametreyi, eğitim doğruluğunu ve test doğruluğunu çiziyoruz.
Araç yakıt ekonomisi veri seti durumunda, GridSearchCV Karar Ağacı modelinin en iyi derinliğinin 19 olduğunu ve% 75,1'lik bir test doğruluğu sağladığını buldu. Varsayılan hiperparametrelerin aksine% 2,1 artış.
: Rastgele Orman sınıflandırıcı halinde biz ayarlamak için 3 hyperparameters seçtiğiniz n_estimators (topluluk ağaçların sayısı), MAX_DEPTH ağaçları ve max_features (ağaç başına özelliklerin maksimum sayı).
Bu durumda GridSearchCV'nin hesaplama gereksinimlerinin oldukça yüksek olduğunu, bu nedenle sahip olduğunuz CPU türüne bağlı olarak bu adım biraz zaman alacaktır. Örneğin, bu durumda modelin her birinin puanını alabilmesi için 6x28x7 = 1176 Rastgele Orman inşa etmesi gerekir. N_jobs parametresi ile hesaplama sırasında kullanılan işlemci evrelerinin sayısı seçilebilir (-1 tüm kullanılabilir evrelerin kullanılmasını sağlarken, pozitif bir tamsayı belirli sayıda evreyi seçer).
Random Forest sınıflandırıcısındaki varsayılan hiperparametre değerlerinin aksine, biraz daha iyi bir doğruluk elde etmeyi başardık. GridSearchCV yöntemi, topluluktaki 500 karar ağacının varsayılan 100 ağaçtan daha iyi sonuçlar verdiğini buldu. Ayrıca, yedi özelliğin tümünü kullanmak yerine, buradaki model ağaç başına yalnızca 2 özellik seçmiştir. Muhtemelen algoritmayı farklı ve daha uzun hiperparametre aralıklarıyla çalıştırmak, doğrulukta daha fazla artışa neden olacaktır, ancak ek zaman-çaba sorgulanabilir.
Buradaki kazanç% 0,5'tir.
Bu yazı ile Karar Ağaçları ve Rastgele Ormanlar terimlerini basitleştirmeye çalıştım. Her iki algoritma da hem Sınıflandırma hem de Regresyon için kullanılabilir. Bu örnekte Sınıflandırmayı ele aldım.
Ayrıca, iki veri setinde DT ve RF sınıflandırmasına yönelik basit bir yaklaşım, çok iyi ve tatmin edici bir sonuçla sunulmuştur. Bu nedenle Scikit-learn DecisionTree ve RandomForest sınıfları kullanıldı.
Scikit-learn, GridSearchCV adı verilen model hiperparametre ayarı için harika bir araç sağlar . Uygulama basittir, ancak özellikle rastgele Ormanlar söz konusu olduğunda önemli bir hesaplama gücü gerektirir.
Bu makale veya çalışmamla ilgili herhangi bir soru veya öneriniz için LinkedIn aracılığıyla benimle iletişime geçmekten çekinmeyin .
Umarım makaleyi yararlı ve anlaşılır bulmuşsunuzdur.
Ayrıca diğer makalelerimi Medium'da bulabilirsiniz .
Zaman ayırdığınız için teşekkürler, Şerefe! 🙂
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Bir ürün yöneticisi olarak sürekli olarak ekibimi ve kendimi daha verimli ve etkili hale getirmenin yollarını arıyorum. Aşağıda, zamandan tasarruf etmek ve daha fazla etki yaratmak için ChatGPT'yi bir Proje Yöneticisinin iş akışına nasıl dahil edebileceğinize dair birkaç başlangıç fikri verilmiştir.
MIT Seçim Laboratuvarı'nda yüksek lisans araştırmacısı ve doktora derecesi olan Jesse Clark tarafından yazılmıştır.
Oakland, CA'da halka açık verileri kullanarak hava kalitesini tahmin etmek Google ve EDF, Oakland'daki hava kirliliğini haritalama çalışmalarını yayınladığında, bu çalışmanın sonuçları büyük ilgi gördü. Yayınladıkları veriler, hava kalitesinin Doğu ve Batı Oakland'daki şehir bloklarına göre nasıl değiştiğini gösteren ilk veri kümelerinden biriydi.
Daniel Fleck ve David Lubert ile yazılmıştır Dizimizin ilk blogu, bir veri bilimi projesini uygun şekilde değerlendirmek için Net Şimdiki Değer (NPV), İç Getiri Oranı (IRR) ve Karlılık Endeksi'ni (PI) kullanmaya odaklanacaktır. Ayrıca, bir veri bilimi metodolojisinin kullanılmasının, bu aynı ekonomik ölçütlerin girdilerini daha yüksek kaliteli değerlendirmeler geliştirmek için nasıl daha da iyileştirebileceğini tartışacağız.
Öz bileşimi ve SVD için yararlı olan doğrusal cebir temel kavramını anlayın Bu makalede, öz ayrıştırma veya tekil değer ayrıştırma (SVD) gibi matris çarpanlara ayırma yöntemlerini anlamanın ilginç bir yolu olan temel kavramını öğreneceksiniz. Tanımlar Temel, vektör uzaylarını (vektör setleri) tanımlamak için kullanılan bir koordinat sistemidir.