logo

Алгоритъм на произволна гора

Random Forest е популярен алгоритъм за машинно обучение, който принадлежи към техниката за контролирано обучение. Може да се използва както за проблеми с класификация, така и за регресия в ML. Тя се основава на концепцията за обучение в ансамбъл, което е процес на комбиниране на множество класификатори за решаване на сложен проблем и подобряване на производителността на модела.

Както подсказва името, „Random Forest е класификатор, който съдържа редица дървета на решения за различни подмножества от даден набор от данни и взема средната стойност, за да подобри точността на прогнозиране на този набор от данни.“ Вместо да разчита на едно дърво на решенията, произволната гора взема прогнозата от всяко дърво и въз основа на мнозинството от гласовете на прогнозите и прогнозира крайния резултат.

По-големият брой дървета в гората води до по-висока точност и предотвратява проблема с претоварването.

латексов шрифт

Диаграмата по-долу обяснява работата на алгоритъма Random Forest:

Алгоритъм на произволна гора

Забележка: За да разберете по-добре алгоритъма на произволната гора, трябва да имате познания за алгоритъма на дървото на решенията.

Предположения за произволна гора

Тъй като произволната гора комбинира множество дървета, за да предскаже класа на набора от данни, е възможно някои дървета на решенията да предскажат правилния изход, докато други не. Но заедно всички дървета предсказват правилния резултат. Следователно, по-долу са две предположения за по-добър класификатор на случайни гори:

  • Трябва да има някои действителни стойности в променливата на характеристиките на набора от данни, така че класификаторът да може да предвиди точни резултати, а не предполагаем резултат.
  • Прогнозите от всяко дърво трябва да имат много ниски корелации.

Защо да използвате Random Forest?

По-долу са някои точки, които обясняват защо трябва да използваме алгоритъма Random Forest:

  • Отнема по-малко време за обучение в сравнение с други алгоритми.
  • Той предвижда изход с висока точност, дори за големия набор от данни, който работи ефективно.
  • Може също така да поддържа точност, когато голяма част от данните липсват.

Как работи алгоритъмът Random Forest?

Random Forest работи в две фази, първата е да се създаде произволна гора чрез комбиниране на N дърво на решения, а втората е да се правят прогнози за всяко дърво, създадено в първата фаза.

Работният процес може да бъде обяснен в стъпките и диаграмата по-долу:

Етап 1: Изберете произволни K точки от данни от набора за обучение.

Стъпка 2: Изградете дърветата на решенията, свързани с избраните точки от данни (подмножества).

Стъпка-3: Изберете числото N за дърветата на решенията, които искате да изградите.

Стъпка-4: Повторете стъпка 1 и 2.

mb до gb

Стъпка-5: За нови точки от данни намерете прогнозите за всяко дърво на решенията и присвоете новите точки от данни към категорията, която печели повечето гласове.

Работата на алгоритъма може да се разбере по-добре от примера по-долу:

Пример: Да предположим, че има набор от данни, който съдържа множество изображения на плодове. И така, този набор от данни се дава на класификатора на случайни гори. Наборът от данни е разделен на подмножества и даден на всяко дърво на решенията. По време на фазата на обучение всяко дърво на решения произвежда прогнозен резултат и когато възникне нова точка от данни, въз основа на по-голямата част от резултатите, класификаторът Random Forest прогнозира окончателното решение. Разгледайте изображението по-долу:

Алгоритъм на произволна гора

Приложения на Random Forest

Има основно четири сектора, където най-често се използва произволна гора:

    Банкиране:Банковият сектор използва най-вече този алгоритъм за идентифициране на кредитния риск.Лекарство:С помощта на този алгоритъм могат да се идентифицират тенденциите на заболяването и рисковете от заболяването.Земеползването:Чрез този алгоритъм можем да идентифицираме областите с подобно земеползване.Маркетинг:Маркетинговите тенденции могат да бъдат идентифицирани с помощта на този алгоритъм.

Предимства на Random Forest

  • Random Forest е в състояние да изпълнява както задачи за класификация, така и за регресия.
  • Той е способен да обработва големи набори от данни с висока размерност.
  • Подобрява точността на модела и предотвратява проблема с пренастройването.

Недостатъци на Random Forest

  • Въпреки че произволната гора може да се използва както за задачи за класификация, така и за регресия, тя не е по-подходяща за задачи за регресия.

Внедряване на Python на алгоритъм за случайна гора

Сега ще имплементираме дървото на алгоритъма на произволната гора с помощта на Python. За целта ще използваме същия набор от данни „user_data.csv“, който сме използвали в предишни модели на класификация. Използвайки същия набор от данни, можем да сравним класификатора Random Forest с други класификационни модели, като напр. Класификатор на дървото на решенията, KNN, SVM, логистична регресия и др.

абстрактен клас в java

Стъпките за внедряване са дадени по-долу:

  • Стъпка на предварителна обработка на данни
  • Напасване на алгоритъма за произволна гора към набора за обучение
  • Прогнозиране на резултата от теста
  • Тествайте точността на резултата (матрица за създаване на объркване)
  • Визуализиране на резултата от тестовия набор.

1. Стъпка на предварителна обработка на данни:

По-долу е кодът за стъпката на предварителна обработка:

 # 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) 

В горния код сме обработили предварително данните. Къде сме заредили набора от данни, който е даден като:

Алгоритъм на произволна гора

2. Напасване на алгоритъма Random Forest към набора за обучение:

Сега ще напаснем алгоритъма за произволна гора към набора за обучение. За да го монтираме, ще импортираме RandomForestClassifier клас от sklearn.ансамбъл библиотека. Кодът е даден по-долу:

 #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) 

В горния код обектът на класификатора приема следните параметри:

    n_оценители=Необходимият брой дървета в произволната гора. Стойността по подразбиране е 10. Можем да изберем произволно число, но трябва да се погрижим за проблема с прекомерното оборудване.критерий=Това е функция за анализиране на точността на разделянето. Тук сме взели „ентропия“ за получаване на информация.

Изход:

 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. Прогнозиране на резултата от тестовата серия

Тъй като нашият модел е монтиран към комплекта за обучение, сега можем да предвидим резултата от теста. За прогнозиране ще създадем нов вектор за прогнозиране y_pred. По-долу е кодът за него:

 #Predicting the test set result y_pred= classifier.predict(x_test) 

Изход:

Прогнозният вектор е даден като:

Алгоритъм на произволна гора

Чрез проверка на горния прогнозен вектор и тестов набор реален вектор, можем да определим неправилните прогнози, направени от класификатора.

съдържа python

4. Създаване на матрицата на объркването

Сега ще създадем матрицата на объркването, за да определим правилните и неправилните прогнози. По-долу е кодът за него:

 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

Изход:

Алгоритъм на произволна гора

Както можем да видим в горната матрица, има 4+4= 8 грешни прогнози и 64+28= 92 правилни прогнози.

5. Визуализиране на резултата от тренировъчния комплект

Тук ще визуализираме резултата от тренировъчния набор. За да визуализираме резултата от набора за обучение, ще начертаем графика за класификатора на случайни гори. Класификаторът ще предвиди „да“ или „не“ за потребителите, които са закупили или не са закупили автомобила SUV, както направихме в логистичната регресия. По-долу е кодът за него:

 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() 

Изход:

Алгоритъм на произволна гора

Изображението по-горе е резултатът от визуализацията за класификатора Random Forest, работещ с резултата от набора за обучение. Той е много подобен на класификатора на дървото на решенията. Всяка точка от данни съответства на всеки потребител на user_data, а лилавите и зелените региони са регионите за прогнозиране. Лилавият регион е класифициран за потребителите, които не са закупили автомобила SUV, а зеленият регион е за потребителите, закупили SUV.

алгоритми за сортиране обединяване сортиране

И така, в класификатора Random Forest сме взели 10 дървета, които са предвидили Да или НЕ за променливата Purchased. Класификаторът взе по-голямата част от прогнозите и предостави резултата.

6. Визуализиране на резултата от тестовия набор

Сега ще визуализираме резултата от тестовия набор. По-долу е кодът за него:

 #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() 

Изход:

Алгоритъм на произволна гора

Изображението по-горе е резултатът от визуализацията за тестовия набор. Можем да проверим дали има минимален брой неправилни прогнози (8) без проблем с пренастройване. Ще получим различни резултати, като променим броя на дърветата в класификатора.