Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Python ve Scikit-Learn ile Rastgele Orman Algoritması için Kesin Kılavuz

Giriş

Rastgele Orman algoritması, en esnek, güçlü ve yaygın olarak kullanılan algoritmalardan biridir. sınıflandırma ve regresyonolarak inşa edilmiş Karar Ağaçları topluluğu.

Bunlara aşina değilseniz - merak etmeyin, tüm bu kavramları ele alacağız.

Bu derinlemesine uygulamalı kılavuzda, bir sezgi karar ağaçlarının nasıl çalıştığı, kümelemenin bireysel sınıflandırıcıları ve regresörleri nasıl desteklediği, rastgele ormanların ne olduğu ve uçtan uca bir mini proje aracılığıyla Python ve Scikit-Learn kullanarak rastgele bir orman sınıflandırıcısı ve regresörü oluşturma ve bir araştırma sorusunu yanıtlama.

Şu anda kadınlarla ilgili verileri analiz eden bir araştırma grubunun parçası olduğunuzu düşünün. Grup 100 veri kaydı topladı ve bu ilk kayıtları kadınları kategorilere ayırarak organize edebilmek istiyor: hamile olmak ya da olmamak ve kırsal ya da kentsel alanlarda yaşamak. Araştırmacılar, her kategoride kaç kadının olacağını anlamak istiyor.

Tam olarak bunu yapan bir hesaplama yapısı var. ağaç yapı. Bir ağaç yapısı kullanarak, her kategori için farklı bölümleri temsil edebileceksiniz.

Karar ağaçları

Bir ağacın düğümlerini nasıl doldurursunuz? burası Karar ağaçları Odaklanmak

Kayıtları önce gebeliğe göre bölebiliyoruz, sonra kentsel ya da kırsalda yaşayarak bölebiliyoruz. Dikkat edin, bunu farklı bir sırayla yapabiliriz, önce kadınların yaşadıkları bölgeye sonra da hamilelik durumlarına böleriz. Buradan, ağacın doğal bir hiyerarşiye sahip olduğunu görebiliriz. Bilgiyi organize etmenin yanı sıra, bir ağaç bilgiyi hiyerarşik bir şekilde organize eder - bilginin görünme sırası önemlidir ve sonuç olarak farklı ağaçlara yol açar.

Aşağıda, açıklanan ağacın bir örneği verilmiştir:

Ağaç görüntüsünde 7 kare var, üstteki toplam 100 kadına tekabül ediyor, bu üstteki kare alttaki iki kareyle bağlantılı, kadınları 78 hamile olmayan ve 22 hamile olarak bölüyor ve önceki iki kareden de dört kare var; Kadınları kendi bölgelerine göre bölen yukarıdaki her kareye bağlı iki kare, hamile olmayanlar için 45 kentte, 33 kırsal kesimde ve hamileler için 14, kırsalda 8 ve kentte XNUMX yaşıyor. Sadece bir ağaca bakarak, bu bölümleri anlamak ve her bir "katmanın" öncekilerden nasıl türetildiğini görmek kolaydır, bu katmanlar ağaçtır. seviyeleri, seviyeler derinlik ağacın:

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Yukarıdaki resimde ilk ağaç seviyesinin seviye 0 sadece bir karenin olduğu yerde, ardından seviye 1 iki karenin olduğu yerde ve seviye 2 dört karenin olduğu yerde. Bu bir derinlik 2 ağaç.

0 seviyesinde, ağacı oluşturan ilk karedir. kök düğüm, bu kökün iki tane var alt düğümler 1. seviyede, yani üst düğümler 2. seviyedeki dört düğüme bakın. Şimdiye kadar bahsettiğimiz “karelerin” aslında düğümler; ve önceki her düğümün, çocukları olan sonraki düğümlerin ebeveyni olduğu. Aynı ebeveyne sahip her seviyenin alt düğümleri çağrılır. kardeşler, sonraki resimde görülebileceği gibi:

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Bir önceki resimde, seviye 1'i de iç düğümler, kök ve son düğümler arasında olduklarında, bunlar yaprak düğümleri. Yaprak boğumları bir ağacın son kısmıdır, baştaki 100 kadından kaç tanesi hamile ve kırsalda yaşıyor dersek bunu yapraklara bakarak yapabiliriz. Yani yapraklardaki sayı ilk araştırma sorusunu cevaplayacaktır.

Kadınların yeni kayıtları olsaydı ve daha önce onları kategorize etmek için kullanılan ağaç şimdi bir kadının araştırmanın bir parçası olup olmayacağına karar vermek için kullanılsaydı, yine de çalışır mıydı? Ağaç aynı kriterleri kullanacak ve hamile olan ve kırsal bir bölgede yaşayan bir kadın katılmaya uygun olacaktır.

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Yukarıdaki görsele baktığımızda her bir ağaç düğümünün “katılımcı mı?”, “hamile mi?”, “kırsalda mı yaşıyor?” sorularına verdiği cevapların evet, evet ve evet, öyle görünüyor ki ağaç bir karara varabilir, bu durumda kadının araştırmaya katılmasına izin verebilir.

Bu öz karar ağaçları, manuel bir şekilde yapılır. Makine Öğrenimini kullanarak, nihai kararların doğruluğunu en üst düzeye çıkaracak şekilde bu ağacı bizim için otomatik olarak oluşturan bir model oluşturabiliriz.

Not: Bilgisayar Bilimlerinde ikili ağaçlar, genel ağaçlar, AVL ağaçları, yayvan ağaçlar, kırmızı siyah ağaçlar, b-ağaçları vb. gibi çeşitli ağaç türleri vardır. Burada, karar ağacının ne olduğuna dair genel bir fikir vermeye odaklanıyoruz. . cevabına bağlı ise Evet or yok hayır her düğüm için soru ve dolayısıyla her düğümün en fazla iki çocuk, "daha küçük" düğümler solda olacak şekilde sıralandığında, bu, karar ağaçlarını şu şekilde sınıflandırır: ikili ağaçlar.

Önceki örneklerde, ağacın ya sınıflandırmak katılımcı veya katılımcı olmayan olarak yeni veriler veya sorular da “kaç katılımcı?”, “kaç tanesi hamile?”, “kaç tanesi kırsal alanda yaşıyor?” şeklinde değiştirilebilir. miktar kırsal bölgede yaşayan hamile katılımcıların

Veriler sınıflandırıldığında, bu, ağacın bir performans gösterdiği anlamına gelir. sınıflandırma görev ve veri miktarı bulunduğunda, ağaç bir gerileme görev. Bu, karar ağacının hem sınıflandırma hem de regresyon için kullanılabileceği anlamına gelir.

Artık bir karar ağacının ne olduğunu, nasıl kullanılabileceğini ve onu tanımlamak için hangi terminolojinin kullanıldığını anladığımıza göre, onun sınırlamalarını merak edebiliriz.

Rastgele Ormanları Anlamak

Bir katılımcı kentsel ve kırsal alanlar arasındaki ayrımda yaşıyorsa karara ne olur? Ağaç bu rekoru kırsala mı, kente mi ekler? Oldukça net olduğu için bu verileri şu an sahip olduğumuz yapıya sığdırmak zor görünüyor.

Ayrıca araştırmaya teknede yaşayan bir kadın katılsa kırsal mı kentsel mi sayılır? Bir önceki durumda olduğu gibi, ağaçtaki mevcut seçenekler dikkate alınarak sınıflandırma yapmak zorlu bir veri noktasıdır.

Karar ağacı örneğini biraz daha düşünürsek, ağacın zaten sahip olduğu bir modeli izlediğini göz önünde bulundurarak yeni verileri doğru bir şekilde sınıflandırabildiğini görebiliriz - ancak ağacı tanımlayan ilk verilerden farklı kayıtlar olduğunda, ağaç yapısı çok katı, kayıtları sınıflandırılamaz hale getiriyor.

Bu, karar ağacının katı olabileceği ve olasılıklarının sınırlı olabileceği anlamına gelir. İdeal bir karar ağacı daha esnek olabilir ve daha incelikli görünmeyen verileri barındırabilir.

Çözüm: Tıpkı "iki çift göz birden daha iyi görür" gibi, iki model de tipik olarak birden daha doğru yanıt verir. (Ağaç yapısında kodlanmış) bilgi temsillerindeki çeşitliliği hesaba katarak, birden fazla benzer ağaç arasındaki biraz farklı yapıların katılığı artık sınırlayıcı değildir, çünkü bir ağacın eksiklikleri bir başkası tarafından "tamamlanabilir". Birçok birleştirerek ağaçlar birlikte, bir orman.

İlk sorunun cevabına gelince, bunun ağaç yapraklarında kodlanacağını zaten biliyoruz - ama bir yerine çok sayıda ağacımız olduğunda ne değişir?

Ağaçlar bir sınıflandırma için birleştirilirse, sonuç cevapların çoğu tarafından belirlenir, buna denir çoğunluk oylaması; ve bir gerileme durumunda, ormandaki her bir ağacın verdiği sayı, ortalama.

Topluluk Öğrenimi ve Model Topluluklar

Bu yöntem olarak bilinir toplu öğrenme. Toplu öğrenmeyi uygularken, çıktının ayrıştırılabilmesini ve diğer çıktılarla birleştirilebilmesini (manuel olarak veya mevcut kitaplıkları kullanarak) sağlayabildiğiniz sürece herhangi bir algoritmayı karıştırabilirsiniz. Tipik olarak, birden çok karar ağacı gibi aynı türden birden çok modeli bir araya getirirsiniz, ancak yalnızca aynı model türü topluluklara katılmakla sınırlı değilsiniz.

Birleştirme, bir soruna daha iyi genelleme yapmanın ve hafif bir performans artışı elde etmenin pratik olarak garantili bir yoludur. Bazı durumlarda, birleştirme modelleri bir sonuç verir. önemli öngörü gücünde artış ve bazen çok az. Bu, eğittiğiniz ve değerlendirdiğiniz veri kümesine ve modellerin kendisine bağlıdır.

Karar ağaçlarını birleştirmek getiri sağlar önemli bireysel ağaçlara kıyasla performans artışları. Bu yaklaşım, araştırma ve uygulamalı makine öğrenimi topluluklarında popüler hale geldi ve o kadar yaygındı ki, karar ağaçları topluluğuna halk arasında bir ad verildi. ormanve yaratılmakta olan yaygın orman türü (rastgele bir özellik alt kümesindeki karar ağaçlarından oluşan bir orman), adı popüler hale getirdi. rastgele ormanlar.

Geniş ölçekli kullanım göz önüne alındığında, Scikit-Learn gibi kitaplıklar aşağıdakiler için sarmalayıcılar uygulamıştır: RandomForestRegressors ve RandomForestClassifiers, araştırmacıların kendi topluluklarını oluşturmaktan kaçınmasına izin vermek için kendi karar ağacı uygulamalarının üzerine inşa edilmiştir.

Rastgele ormanlara dalalım!

Rastgele Orman Algoritması Nasıl Çalışır?

Aşağıdakiler, rastgele orman algoritmasını yürütürken uygulanan temel adımlardır:

  1. Bir dizi rasgele kayıt seçin, veri kümesinden 4, 20, 76, 150 ve hatta 2.000 gibi herhangi bir sayı olabilir. N kayıtlar). Sayı, veri kümesinin genişliğine bağlı olacaktır, ne kadar genişse, o kadar büyük olur N olabilir. Burası rasgele Algoritmanın adı kısmından geliyor!
  2. Bunlara dayalı bir karar ağacı oluşturun N rastgele kayıtlar;
  3. Algoritma için tanımlanan ağaç sayısına veya ormandaki ağaç sayısına göre 1. ve 2. adımları tekrarlayın. Bu, rastgele veri kaydı kümelerinden daha fazla ağaç üretir;
  4. 3. adımdan sonra, sonuçları tahmin eden son adım gelir:
    • Sınıflandırma durumunda: ormandaki her ağaç, yeni kaydın ait olduğu kategoriyi tahmin edecektir. Bundan sonra, yeni rekor, çoğunluk oyu alan kategoriye atanır.
    • Regresyon durumunda: ormandaki her ağaç yeni kayıt için bir değer tahmin eder ve nihai tahmin değeri, ormandaki tüm ağaçların tahmin ettiği değerlerin ortalaması alınarak hesaplanır.

Rastgele bir özellik alt kümesine uyan her ağaç, hesaplama maliyetini daha düşük tutarken, birleştirme ile düzeltilen diğer bazı özellikler hakkında zorunlu olarak hiçbir bilgiye sahip olmayacaktır.

Tavsiye: Rastgele Orman, Karar Ağaçlarını temel olarak kullandığından, Karar Ağaçlarının nasıl çalıştığını anlamak ve yapıları hakkında bir sezgi oluşturmak için onlarla bireysel olarak biraz pratik yapmak çok yararlıdır. Rastgele ormanlar oluştururken, bir ağacın maksimum derinliği, bir yaprak düğümde olması gereken minimum örnek sayısı, iç bölünmeleri belirlemek için bahse konu kriterler vb. veri kümesi ve yeni noktalara genelleştirme. Uygulamada, genellikle Random Forests, Gradient Boosting veya Extreme Gradient Boosting veya diğer ağaç tabanlı metodolojileri kullanacaksınız, dolayısıyla tek bir karar ağacının hiperparametrelerini iyi bir şekilde kavramak, toplulukları ayarlamak için güçlü bir sezgi oluşturmaya yardımcı olacaktır.

Ağaçların nasıl çalıştığına dair bir sezgi ve Rastgele Ormanlar hakkında bir anlayışla – geriye kalan tek şey, onları veriler üzerinde inşa etme, eğitme ve ayarlama alıştırması yapmaktır!

Scikit-Learn ile Rastgele Orman Modelleri Oluşturma ve Eğitme

Şimdiye kadar kullanılan örneklerin hamilelik, yaşam alanı ve kadınla ilgili olmasının bir nedeni vardı.

2020'de Bangladeş'ten araştırmacılar, özellikle kırsal alanlarda yaşayanlar göz önüne alındığında, hamile kadınlar arasındaki ölüm oranının hala çok yüksek olduğunu fark ettiler. Bu nedenle, bir IOT izleme sistemi kullandılar. anne sağlığı riskini analiz etmek. IoT sistemi, Bangladeş'in kırsal bölgelerindeki farklı hastanelerden, toplum kliniklerinden ve anne sağlığı hizmetlerinden veri topladı.

Toplanan veriler daha sonra virgülle ayrılmış değer (csv) dosyasında düzenlendi ve şuraya yüklendi: UCI'nin makine öğrenimi deposu.

Bu, pratik yapmak ve hamile bir kadının bir hastalığı olup olmadığını anlamaya çalışmak için kullanacağımız verilerdir. düşük, orta or yüksek ölüm riski.

not: veri setini indirebilirsiniz okuyun.

Sınıflandırma için Rastgele Ormanı Kullanma

Kadının olup olmadığını bilmek istediğimiz için düşük, orta or yüksek ölüm riski, yani üç sınıflı bir sınıflandırma yapacağız. Bir problemin ikiden fazla sınıfı varsa buna a denir. çok sınıflı problemin aksine, ikili problem (iki sınıf arasında seçim yaptığınızda, genellikle 0 ve 1).

Bu ilk örnekte, Random Forest sınıflandırıcısı ve Python'un Scikit-Learn'ü ile çok sınıflı bir sınıflandırma modeli uygulayacağız.

Bu sorunu çözmek için kitaplıkları yükleme, verileri okuma, özet istatistiklere bakma ve daha iyi anlamak için veri görselleştirmeleri oluşturma gibi olağan makine öğrenimi adımlarını izleyeceğiz. Ardından, verileri ön işleme ve bölme, ardından bir model oluşturma, eğitme ve değerlendirme.

Kütüphaneleri İçe Aktarma

Verileri okumak için Pandas'ı, görselleştirmek için Seaborn ve Matplotlib'i ve harika yardımcı yöntemler için NumPy'yi kullanacağız:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
Veri Kümesini İçe Aktarma

Aşağıdaki kod, veri kümesini içe aktarır ve onu bir python'a yükler DataFrame:

dataset = pd.read_csv("../../datasets/random-forest/maternal_health_risk.csv")

Verilerin ilk beş satırına bakmak için, head() komut:

dataset.head()

Bu çıktılar:

    Age SystolicBP  DiastolicBP BS      BodyTemp    HeartRate   RiskLevel
0   25  130         80          15.0    98.0        86          high risk
1   35  140         90          13.0    98.0        70          high risk
2   29  90          70          8.0     100.0       80          high risk
3   30  140         85          7.0     98.0        70          high risk
4   35  120         60          6.1     98.0        76          low risk

Burada araştırma sırasında toplanan tüm özellikleri görebiliriz.

  • Yaş: yıl cinsinden yaşlar.
  • Sistolik BP: gebelik sırasında önemli bir özellik olan mmHg cinsinden Kan Basıncının üst değeri.
  • DiastolicBP: mmHg cinsinden daha düşük Kan Basıncı değeri, hamilelik sırasında bir başka önemli özellik.
  • BS: molar konsantrasyon cinsinden kan şekeri seviyeleri, mmol/L.
  • HeartRate: Dinlenme kalp atış hızı, dakika başına vuruş cinsinden.
  • RiskLevel: Hamilelik sırasındaki risk seviyesi.
  • BodyTemp: vücut sıcaklığı.

Artık neyin ölçüldüğünü daha iyi anladığımıza göre, veri türlerine şu şekilde bakabiliriz: info():

dataset.info()

Bunun sonucu:


RangeIndex: 1014 entries, 0 to 1013
Data columns (total 7 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   Age          1014 non-null   int64  
 1   SystolicBP   1014 non-null   int64  
 2   DiastolicBP  1014 non-null   int64  
 3   BS           1014 non-null   float64
 4   BodyTemp     1014 non-null   float64
 5   HeartRate    1014 non-null   int64  
 6   RiskLevel    1014 non-null   object 
dtypes: float64(2), int64(4), object(1)
memory usage: 55.6+ KB

Bakmaktan RangeIndex satırında 1014 kayıt olduğunu görebiliriz ve sütun Non-Null Count verilerin herhangi bir eksik değere sahip olmadığını bildirir. Bu, eksik veriler için herhangi bir işlem yapmamız gerekmeyeceği anlamına gelir!

içinde Dtype sütununda her değişkenin türünü görebiliriz. Şu anda, float64 gibi sütunlar BS ve BodyTemp 15.0, 15.51, 15.76, 17.28 gibi herhangi bir aralıkta değişebilen sayısal değerlere sahip olmaları sayısal olarak sürekli (bir kayan noktalı sayıya her zaman 0 ekleyebilirsiniz, ad infinitem). Öte yandan, gibi değişkenler Age, SystolicBP, DiastolicBP, ve HeartRate tipte int64, bu, sayıların yalnızca birime göre değiştiği anlamına gelir, örneğin 11, 12, 13, 14 - kalp atış hızımız 77.78 olmayacak, ya 77 ya da 78 - bunlar sayısal olarak ayrık değerler. Ve bizde de var RiskLevel Birlikte object type, bu genellikle değişkenin bir metin olduğunu ve muhtemelen onu bir sayıya dönüştürmemiz gerekeceğini gösterir. Risk seviyesi düşükten yükseğe doğru büyüdüğü için, kategorilerde ima edilen bir sıralama vardır, bu onun bir kategorik olarak sıralı değişkeni.

not: Her verinin türüne bakmak ve bağlamına göre mantıklı olup olmadığına bakmak önemlidir. Örneğin, yarım kalp atış hızı birimine sahip olmak mantıklı değildir, bu nedenle bu, tamsayı tipinin ayrık bir değer için yeterli olduğu anlamına gelir. Bu olmadığında, verilerin türünü Pandas'la değiştirebilirsiniz. astype() mülkiyet – df['column_name'].astype('type').

Veri türlerine baktıktan sonra kullanabiliriz describe() her sütunun ortalama değerleri, standart sapma, nicelikler, minimum ve maksimum veri değerleri gibi bazı tanımlayıcı istatistiklerde zirve yapmak için:

dataset.describe().T 

Yukarıdaki kod şunu gösterir:

            count   mean        std         min     25%     50%     75%     max
Age         1014.0  29.871795   13.474386   10.0    19.0    26.0    39.0    70.0
SystolicBP  1014.0  113.198225  18.403913   70.0    100.0   120.0   120.0   160.0
DiastolicBP 1014.0  76.460552   13.885796   49.0    65.0    80.0    90.0    100.0
BS          1014.0  8.725986    3.293532    6.0     6.9     7.5     8.0     19.0
BodyTemp    1014.0  98.665089   1.371384    98.0    98.0    98.0    98.0    103.0
HeartRate   1014.0  74.301775   8.088702    7.0     70.0    76.0    80.0    90.0
RiskLevel   1014.0  0.867850    0.807353    0.0     0.0     1.0     2.0     2.0

Çoğu sütun için, ortalama değerler çok uzak standart sapma (std) – bu, verilerin mutlaka iyi niyetli bir istatistiksel dağılımı takip etmediğini gösterir. Olsaydı, riski tahmin ederken modele yardımcı olurdu. Burada yapılabilecek şey, verileri sanki tüm dünya nüfusundan veya daha fazlasından alınmış gibi daha temsili hale getirmek için ön işleme tabi tutmaktır. normalize. Ancak, Rastgele Orman modellerini kullanırken bir avantaj sınıflandırma, doğal ağaç yapısının, her değişken için her ağaç düzeyindeki değere böldüğünde, normalleştirilmemiş verilerle iyi başa çıkabilmesidir.

Ayrıca, ağaçları kullandığımızdan ve sonuçtaki sınıf oylamayla elde edileceğinden, doğal olarak farklı değerler arasında karşılaştırma yapmıyoruz, yalnızca aynı değer türleri arasında karşılaştırma yapıyoruz, bu nedenle bu durumda özellikleri aynı ölçeğe ayarlamak gerekli değildir. . Bu, Rastgele Orman sınıflandırma modelinin şu anlama gelir: ölçek değişmezive özellik ölçeklendirme yapmanız gerekmez.

Bu durumda, veri ön işlemede atabileceğimiz adım kategorik olanı dönüştürmektir. RiskLevel sütun sayısal bir sütuna dönüştürülür.

Verileri Görselleştirme

dönüştürmeden önce RiskLevel, ayrıca bir Scatterplot ile her özellik çifti için nokta kombinasyonlarına ve histogram eğrisini görselleştirerek noktaların nasıl dağıldığına bakarak verileri hızlı bir şekilde görselleştirelim. Bunu yapmak için Seaborn'u kullanacağız. pairplot() her iki arsayı birleştiren. Her bir özellik kombinasyonu için her iki grafiği de oluşturur ve risk seviyelerine göre renk kodlu noktaları görüntüler. hue özelliği:

g = sns.pairplot(dataset, hue='RiskLevel')
g.fig.suptitle("Scatterplot and histogram of pairs of variables color coded by risk level", 
               fontsize = 14, 
               y=1.05); 

Yukarıdaki kod üretir:

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Arsaya bakıldığında ideal durum, eğriler ve noktalar arasında net bir ayrım olması olacaktır. Gördüğümüz gibi, üç tür risk sınıfı çoğunlukla birbirine karışmıştır, çünkü ağaçlar noktalar arasındaki boşlukları sınırlandırırken dahili olarak çizgiler çizerler, ormandaki daha fazla ağacın daha fazla alanı sınırlayabileceğini ve noktaları daha iyi sınıflandırabileceğini varsayabiliriz.

Yapılan temel keşifsel veri analizi ile, verileri önceden işleyebiliriz. RiskLevel sütun.

Sınıflandırma için Veri Ön İşleme

Emin olmak için sadece üç sınıf vardır. RiskLevel verilerimizde ve yanlışlıkla başka hiçbir değer eklenmemişse, kullanabiliriz unique() sütunun benzersiz değerlerini görüntülemek için:

dataset['RiskLevel'].unique()

Bu çıktılar:

array(['high risk', 'low risk', 'mid risk'], dtype=object)

Sınıflar kontrol edilir, şimdi bir sonraki adım her değeri bir sayıya dönüştürmektir. Sınıflandırmalar arasında bir sıralama olduğu için, 0, 1 ve 2 değerlerini belirtmek için kullanabiliriz. düşük, orta ve yüksek riskler. Python'u izleyerek sütun değerlerini değiştirmenin birçok yolu vardır. basit, karmaşıktan daha iyidir mottosunu kullanacağız. .replace() yöntemini kullanın ve bunları tamsayı temsilleriyle değiştirin:

dataset['RiskLevel'] = dataset['RiskLevel'].replace('low risk', 0).replace('mid risk', 1).replace('high risk', 2)

Değerleri değiştirdikten sonra, verileri modeli eğitmek için kullanılacak olana bölebiliriz. Özellikler or Xve tahmin etmek istediğimiz şey, etiketler or y:

y = dataset['RiskLevel']
X = dataset.drop(['RiskLevel'], axis=1)

bir kere X ve y setler hazır, Scikit-Learn's kullanabiliriz train_test_split() onları tren ve test setlerine daha fazla ayırma yöntemi:

from sklearn.model_selection import train_test_split

SEED = 42
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, 
                                                    random_state=SEED)

Önerileri: sonucu yeniden üretilebilir yapmak istiyorsanız rastgele bir durum çekirdeği kullanmayı unutmayın. Kılavuzdaki sonuçların aynısını yeniden oluşturabilmeniz için rastgele bir durum çekirdeği kullandık.

Burada, verilerin %20'sini test için ve %80'ini eğitim için kullanıyoruz.

RandomForestClassifier Eğitimi

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Scikit-Learn altında uygulanan topluluklar sklearn.ensemble modül. Sınıflandırma için kullanılan ve oy çokluğunun alındığı bir karar ağaçları topluluğu, RandomForestClassifier.

Tren ve test setlerine sahip olarak, RandomForestClassifier sınıflandırın ve modeli oluşturun. Başlamak için, ayarlayarak üç ağaçlı bir orman oluşturalım. n_estimators parametresini 3 olarak ve her ağacın üç düzeyi olacak şekilde ayarlayarak max_depth2 için:

from sklearn.ensemble import RandomForestClassifier

rfc = RandomForestClassifier(n_estimators=3, 
                             max_depth=2,
                             random_state=SEED)

Not: İçin varsayılan değer n_estimators is 100. Bu, topluluğun öngörü gücünü ve genellemesini artırır, ancak görselleştirmeyi ve incelemeyi kolaylaştırmak için daha küçük bir tane oluşturuyoruz. Sadece 3 ağaçla – onları görselleştirebilir ve inceleyebiliriz el ile hem tek tek ağaçlara hem de onların birbirine bağımlılığına ilişkin sezgimizi daha da geliştirmek için. aynı şey için de geçerli max_depth, Olduğu bir None, yani ağaçlar, verileri gerektiği gibi sığdırmak için daha da derinleşebilir.

Modeli verilerin etrafına sığdırmak için - fit() yöntemi, eğitim özellikleri ve etiketlerinde geçiş:


rfc.fit(X_train, y_train)

y_pred = rfc.predict(X_test)

Artık modelin ne kadar başarılı olduğunu değerlendirmek için tahmin edilen etiketleri gerçek etiketlerle karşılaştırabiliriz! Modeli değerlendirmeden önce topluluğa bir göz atalım.

Modele biraz daha derinlemesine bakmak için, ağaçların her birini ve verileri nasıl böldüklerini görselleştirebiliriz. Bu, kullanılarak yapılabilir. tree Scikit-Learn'e yerleşik modül ve ardından topluluktaki her bir tahmin edici arasında döngü:


from sklearn import tree

features = X.columns.values 
classes = ['0', '1', '2'] 



for estimator in rfc.estimators_:
    print(estimator)
    plt.figure(figsize=(12,6))
    tree.plot_tree(estimator,
                   feature_names=features,
                   class_names=classes,
                   fontsize=8, 
                   filled=True, 
                   rounded=True)
    plt.show()

Yukarıdaki kod, ağaç çizimlerini görüntüler:

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.
Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.
Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Üç ağacın nasıl farklı olduğuna dikkat edin. İlki ile başlar BS özellik, ikinci ile DiastolicBPve üçüncüsü ile BS Yeniden. Üçüncüsü farklı sayıda örneğe baksa da. Sağ dalda, ilk iki ağaç da kullanmaya karar verir. Age yaprak seviyesinde, üçüncü ağaç ise BS özellik. Yalnızca üç tahminciyle, ölçeği büyütmenin, son derece doğru bir modelde başarılı bir şekilde bir araya getirilebilecek zengin, çeşitli bir bilgi temsili sağladığı açıktır.

Ormanda ne kadar çok ağaç olursa, model o kadar çeşitli olabilir. Yine de, özelliklerin rastgele bir alt kümesine uyan pek çok ağaçta olduğu gibi, azalan getirilerin bir noktası vardır, toplulukta çok fazla çeşitlilik sunmayan oldukça az sayıda benzer ağaç olacaktır ve bunlar, çok fazla oy gücü ve topluluğu, eğitim veri kümesine fazla sığacak şekilde çarpıtarak, doğrulama kümesine yönelik genellemeye zarar verir.

Daha önce daha fazla ağaç olması ve bunun model sonuçlarını nasıl iyileştirebileceği hakkında bir hipotez yapılmıştı. Sonuçlara bir göz atalım, yeni bir model oluşturalım ve hipotezin geçerli olup olmadığına bakalım!

RandomForestClassifier'ı Değerlendirme

Scikit-Learn, aşağıdakileri sağlayarak taban çizgileri oluşturmayı kolaylaştırır: DummyClassifier, tahminleri çıkaran giriş özelliklerini kullanmadan (tamamen rastgele çıktılar). Modeliniz daha iyiyse DummyClassifier, biraz öğrenme oluyor! Öğrenmeyi en üst düzeye çıkarmak için çeşitli hiperparametreleri otomatik olarak test edebilirsiniz. RandomizedSearchCV or GridSearchCV. Bir taban çizgisine sahip olmanın yanı sıra, modelinizin performansını çeşitli ölçümlerin merceğinden değerlendirebilirsiniz.

Algoritmayı değerlendirmek için kullanılabilecek bazı geleneksel sınıflandırma ölçütleri kesinlik, geri çağırma, f1 puanı, doğruluk ve karışıklık matrisidir. İşte her biri hakkında kısa bir açıklama:

  1. Hassas: amacımız, sınıflandırıcımız tarafından hangi doğru tahmin değerlerinin doğru kabul edildiğini anlamak olduğunda. Kesinlik, bu gerçek pozitif değerleri, pozitif olarak tahmin edilen örneklere böler;

$$
kesinlik = frac{text{gerçek pozitifler}}{text{gerçek pozitifler} + metin{yanlış pozitifler}}
$$

  1. Geri çağırmak: sınıflandırıcımız tarafından gerçek pozitiflerden kaçının tanımlandığını anlamak için genellikle hassasiyetle birlikte hesaplanır. Geri çağırma, gerçek pozitiflerin pozitif olarak tahmin edilmesi gereken herhangi bir şeye bölünmesiyle hesaplanır.

$$
hatırlama = frac{text{gerçek pozitifler}}{text{gerçek pozitifler} + metin{yanlış negatifler}}
$$

  1. F1 skoru: dengeli mi yoksa harmonik ortalama kesinlik ve hatırlama. En düşük değer 0 ve en yüksek değer 1'dir. f1-score 1'e eşittir, tüm sınıfların doğru tahmin edildiği anlamına gelir - bu, gerçek verilerle elde edilmesi çok zor bir puandır (neredeyse her zaman istisnalar vardır).

$$
metin{f1-skor} = 2* frak{metin{kesinlik} * metin{hatırlama}}{metin{kesinlik} + metin{hatırlatma}}
$$

  1. Karışıklık Matrisi: ne kadar numunenin doğru veya yanlış olduğunu bilmemiz gerektiğinde her sınıf. Doğru ve doğru tahmin edilen değerlere denir. gerçek pozitifler, pozitif olarak tahmin edilen ancak pozitif olmayanlara denir yanlış pozitif. Aynı isimlendirme gerçek negatifler ve yanlış negatifler negatif değerler için kullanılır;

  2. doğruluk: sınıflandırıcımızın kaç tahminin doğru çıktığını açıklar. En düşük doğruluk değeri 0 ve en yüksek doğruluk değeri 1'dir. Bu değer, bir yüzde elde etmek için genellikle 100 ile çarpılır:

$$
doğruluk = frac{metin{doğru tahmin sayısı}}{metin{toplam tahmin sayısı}}
$$

Not: Makine öğrenimini uygulamak isteyeceğiniz herhangi bir gerçek veri üzerinde %100 doğruluk elde etmek neredeyse imkansızdır. %100 doğrulukta bir sınıflandırıcı veya hatta %100'e yakın bir sonuç görürseniz şüpheci olun ve değerlendirme yapın. Bu sorunların yaygın bir nedeni veri sızıntısıdır (eğitim testinin bir kısmının doğrudan veya dolaylı olarak bir test setine sızdırılması). “İyi bir doğruluğun” ne olduğu konusunda bir fikir birliği yoktur, çünkü öncelikle verilerinize bağlıdır – bazen %70'lik bir doğruluk yüksek olabilir! Bazen, bu gerçekten düşük bir doğruluk olacaktır. Genelde, birçok model için %70'in üzerinde yeterlidir, ancak bunu belirlemek alan araştırmacısına kalmıştır.

Gerekli kitaplıkları içe aktarmak ve sonuçlara bakmak için aşağıdaki betiği çalıştırabilirsiniz:

from sklearn.metrics import classification_report, confusion_matrix

cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d').set_title('Maternal risks confusion matrix (0 = low risk, 1 = medium risk, 2 = high risk)')

print(classification_report(y_test,y_pred))

Çıktı şunun gibi görünecek:

                precision    recall  f1-score   support

           0       0.53      0.89      0.66        80
           1       0.57      0.17      0.26        76
           2       0.74      0.72      0.73        47

    accuracy                           0.58       203
   macro avg       0.61      0.59      0.55       203
weighted avg       0.59      0.58      0.53       203

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Sınıflandırma raporunda, geri çağırmanın yüksek olduğunu, sınıf 0.89 için 0 olduğunu, sınıf 2 için hem kesinliğin hem de geri çağırmanın yüksek olduğunu, 0.74, 0.72 olduğunu ve sınıf 1 için düşük olduğunu, özellikle hatırlamanın 0.17 ve kesinliğin 0.57 olduğunu gözlemleyin. . Her üç sınıf için ayrı ayrı hatırlama ve kesinlik arasındaki ilişki, F1 hatırlama ve kesinlik arasındaki harmonik ortalama olan puan - model yapıyor tamam 0 sınıfı için, 1. sınıf için oldukça kötü ve 2. sınıf için iyi.

Model, nesneyi tanımlarken çok zorlanıyor. orta riskli vakalar.

Rastgele orman sınıflandırıcımızın yalnızca 3 ağaçla elde ettiği doğruluk 0.58 (%58) – bu, sonuçların yarısından biraz fazlasını doğru yaptığı anlamına gelir. Bu düşük bir doğruluktur ve belki de daha fazla ağaç eklenerek geliştirilebilir.

Karışıklık matrisine bakarak, hataların çoğunun orta riskli 52 kaydı düşük riskli olarak sınıflandırırken olduğunu görebiliriz, bu da sınıf 1'in düşük hatırlaması hakkında daha fazla fikir verir. riskli hastalar

Daha fazla içgörü oluşturmak için kontrol edilebilecek başka bir şey de, tahmin yaparken sınıflandırıcı tarafından en çok hangi özelliklerin dikkate alındığıdır. için atılması gereken önemli bir adımdır. açıklanabilir makine öğrenimi sistemlerive modellerdeki yanlılığın belirlenmesine ve azaltılmasına yardımcı olur.

Bunu görmek için, feature_importances_ sınıflandırıcının özelliği. Bu bize yüzdelerin bir listesini verecektir, böylece şuna da erişebiliriz: feature_names_in_ özelliği, her özelliğin adını almak, bunları bir veri çerçevesinde düzenlemek, en yüksekten en düşüğe doğru sıralamak ve sonucu çizmek için:


features_df = pd.DataFrame({'features': rfc.feature_names_in_, 'importances': rfc.feature_importances_ })


features_df_sorted = features_df.sort_values(by='importances', ascending=False)


g = sns.barplot(data=features_df_sorted, x='importances', y ='features', palette="rocket")
sns.despine(bottom = True, left = True)
g.set_title('Feature importances')
g.set(xlabel=None)
g.set(ylabel=None)
g.set(xticks=[])
for value in g.containers:
    g.bar_label(value, padding=2)

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Sınıflandırıcının çoğunlukla aşağıdakileri nasıl dikkate aldığına dikkat edin. kan şekeri, sonra biraz diyastolik basınç, vücut ısısı ve karar vermek için biraz yaş, bunun da sınıf 1'deki düşük hatırlama ile ilgisi olabilir, belki orta riskli verilerin, olmayan özelliklerle ilgisi olabilir. model tarafından çok dikkate alınmıştır. Bunu araştırmak için özellik önemleriyle daha fazla oynamayı deneyebilir ve modeldeki değişikliklerin kullanılan özellikleri etkileyip etkilemediğini ve ayrıca bazı özellikler ile tahmin edilen sınıflar arasında önemli bir ilişki olup olmadığını görebilirsiniz.

Sonunda sonuçları nasıl etkilediğini görmek için daha fazla ağaç içeren yeni bir model oluşturmanın zamanı geldi. oluşturalım rfc_ 900 ağaçlı, 8 seviyeli ve aynı tohumlu orman. Sonuçlar düzelecek mi?

rfc_ = RandomForestClassifier(n_estimators=900, 
                             max_depth=7,
                             random_state=SEED)
rfc_.fit(X_train, y_train)
y_pred = rfc_.predict(X_test)

Metrikleri hesaplama ve görüntüleme:

cm_ = confusion_matrix(y_test, y_pred)
sns.heatmap(cm_, annot=True, fmt='d').set_title('Maternal risks confusion matrix (0 = low risk, 1 = medium risk, 2 = high risk) for 900 trees with 8 levels')

print(classification_report(y_test,y_pred))

Bu çıktılar:

                precision    recall  f1-score   support

           0       0.68      0.86      0.76        80
           1       0.75      0.58      0.65        76
           2       0.90      0.81      0.85        47

    accuracy                           0.74       203
   macro avg       0.78      0.75      0.75       203
weighted avg       0.76      0.74      0.74       203

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Bu, daha fazla ağaç ve daha özel ağaçlar (daha yüksek seviyeler) eklemenin metriklerimizi nasıl iyileştirdiğini gösterir. 1. sınıf için hala düşük bir geri çağırma oranımız var, ancak doğruluk şu anda %74'tür. Yüksek riskli vakaları sınıflandırırken F1 puanı 0.85'tir, bu da önceki modeldeki 0.73'e kıyasla yüksek riskli vakaların artık daha kolay tanımlandığı anlamına gelir!

Günlük bir projede, örneğin hassasiyete benzer bir metrikle yüksek riskli vakaları belirlemek daha önemli olabilir. duyarlılık istatistiklerde. Bazı model parametrelerinde ince ayar yapmayı deneyin ve sonuçları gözlemleyin.

Şimdiye kadar, Rastgele Ormanın verileri sınıflandırmak için nasıl kullanılabileceğine dair genel bir anlayış elde ettik - bir sonraki bölümde, aynı modelin regresyon ile değerleri nasıl tahmin ettiğini görmek için aynı veri setini farklı bir şekilde kullanabiliriz.

Regresyon İçin Rastgele Ormanları Kullanma

Bu bölümde, Scikit-Learn kullanarak regresyon problemlerini çözmek için Rastgele Orman algoritmasının nasıl kullanılabileceğini inceleyeceğiz. Bu algoritmayı uygulamak için izlenen adımlar, sınıflandırma için gerçekleştirilen adımlarla hemen hemen aynıdır, model türü ve tahmin edilen veri türünün yanı sıra - artık sürekli değerler olacaktır - veri hazırlamada tek bir fark vardır.

için regresyon yapıldığından Sayısal değerler – veri kümesinden sayısal bir değer seçelim. Sınıflandırmada kan şekerinin önemli olduğunu gördük, bu nedenle diğer özelliklere göre tahmin edilebilir olmalıdır (çünkü bazı özelliklerle ilişkiliyse, bu özellik de onunla ilişkilidir).

Sınıflandırma için yaptıklarımızın ardından öncelikle kütüphaneleri ve aynı veri setini import edelim. Bunu zaten sınıflandırma modeli için yaptıysanız, bu kısmı atlayabilir ve doğrudan eğitim için veri hazırlamaya gidebilirsiniz.

Kitaplıkları ve Verileri İçe Aktarma
import pandas as pd
import numpy as np
import maplotlib.pyplot as plt
import seaborn as sns

dataset = pd.read_csv("../../datasets/random-forest/maternal_health_risk.csv")
Regresyon için Veri Ön İşleme

Bu bir regresyon görevidir, dolayısıyla sınıfları tahmin etmek yerine veri setinin sayısal sütunlarından birini tahmin edebiliriz. Bu örnekte, BS sütun tahmin edilecektir. Bunun anlamı y veri içerecek kan şekeri verileri, ve X veriler kan şekerinin yanı sıra tüm özellikleri içerecektir. ayırdıktan sonra X ve y veri, tren ve test setlerini bölebiliriz:

from sklearn.model_selection import train_test_split

SEED = 42

y = dataset['BS']
X = dataset.drop(['BS'], axis=1) 

X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, 
                                                    random_state=SEED)
RandomForestRegressor Eğitimi

Artık veri kümemizi ölçeklendirdiğimize göre, bu regresyon problemini çözmek için algoritmamızı eğitmenin, biraz değiştirmenin zamanı geldi – ormanda 20 ağaç ve her biri 4 seviyeli bir model oluşturacağız. Bunu yapmak için aşağıdaki kodu çalıştırabilirsiniz:

from sklearn.ensemble import RandomForestRegressor

rfr = RandomForestRegressor(n_estimators=20, 
                            max_depth=3, 
                            random_state=SEED)

rfr.fit(X_train, y_train)
y_pred = rfr.predict(X_test)

Tüm parametrelerin ayrıntılarını bulabilirsiniz. RandomForestRegressor resmi belgelerde.

20 ağacı çizmek ve incelemek biraz zaman ve özveri gerektireceğinden, sınıflandırma ağacından ne kadar farklı olduğuna bakmak için sadece ilkini çizebiliriz:

from sklearn import tree

features = X.columns

first_tree = rfr.estimators_[0]

plt.figure(figsize=(15,6))
tree.plot_tree(first_tree,
               feature_names=features,
               fontsize=8, 
               filled=True, 
               rounded=True);

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Regresyon ağacının zaten her düğüme düşen verilere atanmış bir değeri olduğuna dikkat edin. Bunlar, 20 ağacı birleştirirken ortalaması alınacak değerlerdir. Sınıflandırmada yaptıklarımızı takip ederek, değerleri hesaplarken regresyon modelinin hangi değişkenleri daha fazla dikkate aldığını görmek için özellik önemlerini de çizebilirsiniz.

Bir makine öğrenimi problemini çözerken son ve son adıma geçmenin ve algoritmanın performansını değerlendirmenin zamanı geldi!

Bir RandomForestRegressor'u Değerlendirme

Regresyon problemleri için, bir algoritmayı değerlendirmek için kullanılan metrikler, ortalama mutlak hata (MAE), ortalama karesel hata (MSE) ve ortalama karesel hatanın (RMSE) köküdür.

  1. Ortalama Mutlak Hata (MAE): Öngörülen değerleri gerçek değerlerden çıkardığımızda, hataları elde ettiğimizde, bu hataların mutlak değerlerini toplar ve ortalamalarını alırız. Bu metrik, modelin her tahmini için genel hata kavramını verir, ne kadar küçük (0'a yakınsa) o kadar iyidir.

$$
mae = (frac{1}{n})sum_{i=1}^{n}sol | Gerçek – Öngörülen hak |
$$

Not: Ayrıca karşılaşabilirsiniz y ve ŷ denklemlerde gösterim. bu y gerçek değerleri ifade eder ve ŷ tahmin edilen değerlere

  1. Ortalama Kare Hatası (MSE): MAE metriğine benzer, ancak hataların mutlak değerlerinin karesini alır. Ayrıca, MAE'de olduğu gibi, ne kadar küçük veya 0'a yakınsa o kadar iyidir. Büyük hataları daha da büyütmek için MSE değerinin karesi alınır. Dikkat edilmesi gereken bir nokta, değerlerinin boyutu ve aynı veri ölçeğinde olmaması nedeniyle genellikle yorumlanması zor bir metrik olmasıdır.

$$
mse = toplam_{i=1}^{D}(Gerçek – Tahmini)^2
$$

  1. Kök Ortalama Kare Hatası (RMSE): MSE ile ortaya çıkan yorumlama problemini, verinin aynı birimlerine geri ölçeklendirmek için nihai değerinin karekökünü alarak çözmeye çalışır. Hatalı verinin gerçek değerini göstermemiz veya göstermemiz gerektiğinde yorumlanması daha kolay ve iyidir. Verilerin ne kadar değişebileceğini gösterir, bu nedenle, 4.35'lik bir RMSE'ye sahipsek, modelimiz ya gerçek değere 4.35 eklediği için ya da gerçek değere ulaşmak için 4.35'e ihtiyaç duyduğu için hata yapabilir. 0'a ne kadar yakınsa o kadar iyidir.

$$
rmse = sqrt{ toplam_{i=1}^{D}(Gerçek – Öngörülen)^2}
$$

Bu üç metrikten herhangi birini şu şekilde kullanabiliriz: karşılaştırmak modeller (eğer birini seçmemiz gerekiyorsa). Aynı regresyon modelini farklı argüman değerleriyle veya farklı verilerle karşılaştırabilir ve ardından değerlendirme metriklerini dikkate alabiliriz. Bu olarak bilinir hiperparametre ayarı – bir öğrenme algoritmasını etkileyen hiperparametrelerin ayarlanması ve sonuçların gözlemlenmesi.

Modeller arasında seçim yaparken en küçük hataya sahip olanlar genellikle daha iyi performans gösterir. Modelleri izlerken, metrikler kötüleşirse, modelin önceki bir sürümü daha iyiydi veya modelin performansından daha kötü performans göstermesi için verilerde bazı önemli değişiklikler vardı.

Bu değerleri bulmak için aşağıdaki kodu kullanabilirsiniz:

from sklearn.metrics import mean_absolute_error, mean_squared_error

print('Mean Absolute Error:', mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(mean_squared_error(y_test, y_pred)))

Çıktı şöyle olmalıdır:

Mean Absolute Error: 1.127893702896059
Mean Squared Error: 3.0802988503933326
Root Mean Squared Error: 1.755078018320933

20 ağaçla, kök ortalama kare hatası 1.75'tir ve bu düşüktür, ancak yine de ağaç sayısını artırarak ve diğer parametrelerle deneyler yaparak bu hata muhtemelen daha da küçülebilir.

Rastgele Orman kullanmanın avantajları

Herhangi bir algoritmada olduğu gibi, onu kullanmanın avantajları ve dezavantajları vardır. Sonraki iki bölümde, sınıflandırma ve gerileme için rastgele orman kullanmanın artılarına ve eksilerine bir göz atacağız.

  1. Rastgele orman algoritması önyargılı değildir, çünkü birden fazla ağaç vardır ve her ağaç rastgele bir veri alt kümesi üzerinde eğitilir. Temel olarak, rastgele orman algoritması "kalabalığın" gücüne dayanır; bu nedenle algoritmanın genel yanlılık derecesi azalır.
  2. Bu algoritma çok kararlıdır. Veri kümesine yeni bir veri noktası girilse bile, yeni veri bir ağacı etkileyebileceğinden genel algoritma çok fazla etkilenmez, ancak tüm ağaçları etkilemesi çok zordur.
  3. Rastgele orman algoritması, hem kategorik hem de sayısal özelliklere sahip olduğunuzda iyi çalışır.
  4. Rastgele orman algoritması, verilerde eksik değerler olduğunda veya ölçeklendirilmediğinde de iyi çalışır.

Rastgele Orman kullanmanın dezavantajları

  1. Rastgele ormanların ana dezavantajı, karmaşıklıklarında yatmaktadır. Büyük toplulukları eğitirken bir araya getirilen çok sayıda karar ağacı nedeniyle çok daha fazla hesaplama kaynağı gerektirirler. Yine de - modern donanımla, büyük bir rastgele ormanı bile eğitmek çok zaman almaz.

Daha İleriye Gidiyoruz – El Tipi Uçtan Uca Proje

Meraklı doğanız daha ileri gitmek istemenizi sağlıyor mu? bizim kontrol etmenizi öneririz Rehberli Proje: "Uygulamalı Ev Fiyat Tahmini - Python'da Makine Öğrenimi".

Python ve Scikit-Learn PlatoBlockchain Veri Zekası ile Rastgele Orman Algoritmasının Kesin Kılavuzu. Dikey Arama. Ai.

Bu rehberli projede – güçlü geleneksel makine öğrenimi modellerinin yanı sıra derin öğrenme modellerini nasıl oluşturacağınızı öğrenecek, Ensemble Learning'den faydalanacak ve bir Scikit-Learn ve Keras modellerinden oluşan bir çantadan ev fiyatlarını tahmin etmek için meta-öğrenicileri eğiteceksiniz.

Tensorflow'un üzerine inşa edilen derin öğrenme API'si Keras'ı kullanarak mimarileri deneyecek, bir yığın model topluluğu oluşturacak ve bir meta-öğrenci Bir evin fiyatını bulmak için sinir ağı (seviye-1 modeli).

Derin öğrenme şaşırtıcıdır - ancak buna başvurmadan önce, sorunu aşağıdaki gibi daha basit tekniklerle çözmeyi denemeniz önerilir. sığ öğrenme algoritmalar. Temel performansımız bir Rastgele Orman Regresyonu algoritma. Ek olarak – Scikit-Learn aracılığıyla aşağıdaki gibi teknikler aracılığıyla model toplulukları oluşturmayı keşfedeceğiz: sarkık ve oylama.

Bu uçtan uca bir projedir ve tüm Makine Öğrenimi projeleri gibi, bununla başlayacağız - ile Açıklayıcı Veri Analizi, Ardından Veri ön işleme ve sonunda Sığ Bina ve Derin Öğrenme Modelleri daha önce araştırdığımız ve temizlediğimiz verilere uyması için.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı