Rastgele Orman, denetimli öğrenme tekniğine ait popüler bir makine öğrenme algoritmasıdır. ML'de hem Sınıflandırma hem de Regresyon problemleri için kullanılabilir. ' kavramına dayanmaktadır. topluluk öğrenimi, bu bir süreçtir karmaşık bir sorunu çözmek ve modelin performansını artırmak için birden fazla sınıflandırıcının birleştirilmesi.
Adından da anlaşılacağı gibi, 'Rastgele Orman, belirli bir veri kümesinin çeşitli alt kümeleri üzerinde bir dizi karar ağacını içeren ve bu veri kümesinin tahmin doğruluğunu artırmak için ortalamayı alan bir sınıflandırıcıdır.' Rastgele orman, tek bir karar ağacına güvenmek yerine her ağaçtan tahmin alır ve tahminlerin çoğunluk oylarına dayanarak nihai çıktıyı tahmin eder.
Ormanda daha fazla sayıda ağaç olması daha yüksek doğruluk sağlar ve aşırı uyum sorununu önler.
bash değişkeni
Aşağıdaki diyagram Rastgele Orman algoritmasının çalışmasını açıklamaktadır:
Not: Rastgele Orman Algoritmasını daha iyi anlamak için Karar Ağacı Algoritması bilgisine sahip olmanız gerekir.
Rastgele Orman için Varsayımlar
Rastgele orman, veri kümesinin sınıfını tahmin etmek için birden fazla ağacı birleştirdiğinden, bazı karar ağaçlarının doğru çıktıyı tahmin etmesi, bazılarının ise tahmin edememesi mümkündür. Ancak tüm ağaçlar birlikte doğru çıktıyı tahmin eder. Bu nedenle, daha iyi bir Rastgele orman sınıflandırıcısı için aşağıda iki varsayım bulunmaktadır:
- Sınıflandırıcının tahmin edilen bir sonuç yerine doğru sonuçları tahmin edebilmesi için veri kümesinin özellik değişkeninde bazı gerçek değerlerin bulunması gerekir.
- Her ağaçtan elde edilen tahminlerin korelasyonları çok düşük olmalıdır.
Neden Rastgele Ormanı kullanmalısınız?
Rastgele Orman algoritmasını neden kullanmamız gerektiğini açıklayan bazı noktalar aşağıda verilmiştir:
- Diğer algoritmalara göre daha az eğitim süresi gerektirir.
- Verimli bir şekilde çalıştırdığı büyük veri kümesinde bile çıktıyı yüksek doğrulukla tahmin eder.
- Ayrıca büyük miktarda veri eksik olduğunda doğruluğu koruyabilir.
Rastgele Orman algoritması nasıl çalışır?
Rastgele Orman çalışmaları iki aşamalıdır; birincisi N karar ağacını birleştirerek rastgele ormanı oluşturmak, ikincisi ise ilk aşamada oluşturulan her ağaç için tahminlerde bulunmaktır.
Çalışma süreci aşağıdaki adımlarda ve şemada açıklanabilir:
Aşama 1: Eğitim setinden rastgele K veri noktası seçin.
Adım 2: Seçilen veri noktalarıyla (Alt Kümeler) ilişkili karar ağaçlarını oluşturun.
Aşama 3: Oluşturmak istediğiniz karar ağaçları için N sayısını seçin.
von neumann mimarisi
Adım-4: Adım 1 ve 2'yi tekrarlayın.
Adım 5: Yeni veri noktaları için her karar ağacının tahminlerini bulun ve yeni veri noktalarını çoğunluk oyu kazanan kategoriye atayın.
Algoritmanın çalışması aşağıdaki örnekle daha iyi anlaşılabilir:
Örnek: Birden fazla meyve görüntüsü içeren bir veri kümesi olduğunu varsayalım. Böylece bu veri seti Rastgele orman sınıflandırıcısına verilir. Veri seti alt kümelere bölünür ve her karar ağacına verilir. Eğitim aşamasında, her karar ağacı bir tahmin sonucu üretir ve yeni bir veri noktası oluştuğunda, sonuçların çoğunluğuna dayanarak Rastgele Orman sınıflandırıcısı nihai kararı tahmin eder. Aşağıdaki görüntüyü göz önünde bulundurun:
Rastgele Orman Uygulamaları
Rastgele ormanın çoğunlukla kullanıldığı dört sektör bulunmaktadır:
geçiş yöntemi java
Rastgele Ormanın Avantajları
- Rastgele Orman, hem Sınıflandırma hem de Regresyon görevlerini gerçekleştirebilir.
- Büyük veri kümelerini yüksek boyutlu olarak işleyebilir.
- Modelin doğruluğunu artırır ve aşırı uyum sorununu önler.
Rastgele Ormanın Dezavantajları
- Rastgele orman hem sınıflandırma hem de regresyon görevleri için kullanılabilse de Regresyon görevleri için daha uygun değildir.
Rastgele Orman Algoritmasının Python Uygulaması
Şimdi Rastgele Orman Algoritması ağacını Python kullanarak uygulayacağız. Bunun için daha önceki sınıflandırma modellerinde kullandığımız 'user_data.csv' veri setinin aynısını kullanacağız. Aynı veri setini kullanarak Rastgele Orman sınıflandırıcısını aşağıdaki gibi diğer sınıflandırma modelleriyle karşılaştırabiliriz. Karar Ağacı Sınıflandırıcısı, KNN, SVM, Lojistik Regresyon vb.
Uygulama Adımları aşağıda verilmiştir:
- Veri Ön İşleme adımı
- Rastgele orman algoritmasını Eğitim setine uydurma
- Test sonucunu tahmin etmek
- Sonucun doğruluğunu test edin (Karışıklık matrisinin oluşturulması)
- Test seti sonucunun görselleştirilmesi.
1.Veri Ön İşleme Adımı:
Ön işleme adımının kodu aşağıdadır:
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv('user_data.csv') #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test)
Yukarıdaki kodda verileri ön işleme tabi tuttuk. Şu şekilde verilen veri kümesini yüklediğimiz yer:
2. Rastgele Orman algoritmasının eğitim setine uyarlanması:
Şimdi Rastgele orman algoritmasını eğitim setine sığdıracağız. Buna uyacak şekilde içe aktaracağız RandomForestSınıflandırıcı gelen sınıf sklearn.ensemble kütüphane. Kod aşağıda verilmiştir:
#Fitting Decision Tree classifier to the training set from sklearn.ensemble import RandomForestClassifier classifier= RandomForestClassifier(n_estimators= 10, criterion='entropy') classifier.fit(x_train, y_train)
Yukarıdaki kodda, sınıflandırıcı nesnesi aşağıdaki parametreleri alır:
Çıktı:
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None, oob_score=False, random_state=None, verbose=0, warm_start=False)
3. Test Seti sonucunun tahmin edilmesi
Modelimiz eğitim setine uyduğu için artık test sonucunu tahmin edebiliyoruz. Tahmin için yeni bir tahmin vektörü y_pred oluşturacağız. Aşağıda bunun kodu verilmiştir:
#Predicting the test set result y_pred= classifier.predict(x_test)
Çıktı:
Tahmin vektörü şu şekilde verilir:
c++ bölünmüş dize
Yukarıdaki tahmin vektörünü ve test seti gerçek vektörünü kontrol ederek sınıflandırıcının yaptığı yanlış tahminleri belirleyebiliriz.
4. Karışıklık Matrisinin Oluşturulması
Şimdi doğru ve yanlış tahminleri belirlemek için karışıklık matrisini oluşturacağız. Aşağıda bunun kodu verilmiştir:
#Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred)
Çıktı:
Yukarıdaki matriste görebileceğimiz gibi, 4+4= 8 hatalı tahmin Ve 64+28= 92 doğru tahmin.
5. Eğitim Seti sonucunun görselleştirilmesi
Burada eğitim seti sonucunu görselleştireceğiz. Eğitim seti sonucunu görselleştirmek için Rastgele orman sınıflandırıcısına yönelik bir grafik çizeceğiz. Sınıflandırıcı, Lojistik Regresyonda yaptığımız gibi SUV arabasını Satın almış veya Satın Almamış kullanıcılar için evet veya Hayır tahmininde bulunacaktır. Aşağıda bunun kodu verilmiştir:
Java'da yöntem geçersiz kılma
from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Çıktı:
Yukarıdaki görüntü, eğitim seti sonucuyla çalışan Rastgele Orman sınıflandırıcısının görselleştirme sonucudur. Karar ağacı sınıflandırıcısına çok benzer. Her veri noktası user_data'nın her kullanıcısına karşılık gelir ve mor ve yeşil bölgeler tahmin bölgeleridir. Mor bölge SUV aracı satın almayan kullanıcılar için, yeşil bölge ise SUV satın alan kullanıcılar için sınıflandırılmıştır.
Yani Rastgele Orman sınıflandırıcısında, Satın Alınan değişkeni için Evet veya Hayır tahmini yapan 10 ağaç aldık. Sınıflandırıcı tahminlerin çoğunu aldı ve sonucu sağladı.
6. Test seti sonucunun görselleştirilmesi
Şimdi test seti sonucunu görselleştireceğiz. Aşağıda bunun kodu verilmiştir:
#Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm(Test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Çıktı:
Yukarıdaki görüntü test setinin görselleştirme sonucudur. Aşırı Uyum sorunu olmadan minimum sayıda hatalı tahmin (8) olup olmadığını kontrol edebiliriz. Sınıflandırıcıdaki ağaç sayısını değiştirerek farklı sonuçlar elde edeceğiz.