Алгоритъмът Random Forest се доказа като един от най-търсените алгоритъм в областта на машинното обучение. Това се дължи основно на факта, че той широко решава проблема, причинен от неговия родителски алгоритъм Decision Tree, пренастройване. Дърветата на решенията са обвинявани в ниско отклонение и висока дисперсия, тъй като те оценяват всеки възел в дървото и често в крайна сметка следват същия модел, вместо да обобщават обучението.

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

Настройката на хиперпараметъра също е основна функция, налична в алгоритъма Random Forest, която ни позволява да настроим фино параметрите, за да оптимизираме производителността на алгоритъма.

В тази статия ще се съсредоточа върху внедряването на Random Forest върху регресионен набор от данни и след това ще обсъдя как можем да настроим фино хиперпараметрите, за да оптимизираме производителността на моделите.

Изтеглих горния набор от данни от Kaggle и импортирах всички необходими библиотеки и набора от данни. За да видите набора от данни, се използва командата df.head().

Всички възможни трансформации са извършени върху набора от данни и сега данните са подготвени за алгоритъма за машинно обучение.

Моделът Random Forest е създаден с всички стойности по подразбиране на хиперпараметрите, които са налични в класа RandomForest на библиотеката sckitlearn. Първото дърво на решенията на Random Forest е начертано с командата model.estimators_[0].

Точността на базовия модел е 90,54%, което е добро число за начало, но с точност на обучението от 98,5%, можем да заключим, че моделът е прекалено подходящ. Но ако фино настроим модела с различни стойности на хиперпараметрите, можем допълнително да оптимизираме модела с по-добра точност и също така да елиминираме пренастройването в по-голяма степен.

Първо нека разберем различните хиперпараметри, които sckitlearn ни предлага за случайната гора.

(i). n_estimators : Това обозначава броя на дърветата на решенията, които трябва да бъдат създадени в модела на произволната гора. Обикновено колкото по-голям е броят на дърветата, толкова по-добре се представя моделът. Но големият брой дървета може да забави изчислението, поради което е необходимо да се намери оптимална стойност.

(ii). max_depth: Това означава максималната степен, до която нашите дървета могат да се разделят. Ако стойността е по-висока от оптималната стойност, моделът ще бъде склонен да прекалява. Но ниската дълбочина може да попречи на процеса на обучение. Затова се препоръчва да се намери подходящо място, за да се осигури добра точност.

(iii). min_samples_split: Това показва минималните проби, които трябва да присъстват във възлите, след като са се разделили от родителския възел. Ако това условие не е изпълнено, тогава разделянето няма да се случи в родителския възел.

(iv).max_samples: Това показва максималния брой проби, които трябва да се вземат предвид от родителския набор от данни, за да се направят дърветата на решенията по време на процеса на стартиране.

(v). max_features: Това обозначава максималния брой функции, които трябва да се вземат предвид при стартиране.

(vi). bootstrap= вярно или невярно. Стойността по подразбиране на bootstrap е True, но за да деактивираме bootstrap, можем да я присвоим като False и целият набор от данни ще бъде взет под внимание за формирането на дървета за вземане на решения.

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

След създаването на модела с оптималните стойности на хиперпараметрите се наблюдава, че има 0,9% увеличение на точността на модела. Дори точността на обучението е намалена до 95,7%, което показва, че е взето и прекомерно оборудване.

Случайните гори са предпочитани поради оптимизацията, гъвкавостта и надеждността, които предоставят в сравнение с дърветата на решенията. Докато оптимизираме даден модел, нашата работа е да проучим и намерим подходящо място за всички хиперпараметри, за да подобрим цялостната производителност на алгоритъма.