Ансамбълните методи се използват широко в машинното обучение за подобряване на производителността на предсказуемите модели. Две популярни техники за ансамбъл са пакетиране и произволни гори, които споделят някои прилики, но имат и ключови разлики. В тази публикация в блога ще разкрия тези прилики и разлики и ще проуча как всяка техника работи на практика. Независимо дали сте начинаещ в машинното обучение или опитен практик, тази публикация ще ви предостави цялостно разбиране за пакетирането и произволните гори и как да избирате между тях за вашите собствени проекти. Така че нека се потопим!

Какво представляват ансамбловите техники?

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

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

Поставянето в торби намалява прекомерното монтиране чрез въвеждане на произволност в моделите. Чрез обучение на всеки модел върху различна извадка от данни, пакетирането гарантира, че всеки модел е малко по-различен. Следователно, моделът на ансамбъла е по-малко вероятно да прекалява с данните за обучение.

Какво представлява техниката на ансамбъла за опаковане?

Поставянето в торбички (Bootstrap Aggregating) е техника за ансамбъл, която комбинира множество модели за подобряване на точността и надеждността на прогнозите в машинното обучение. Bagging създава множество извадки за стартиране на набора от данни и обучава всеки модел на различна извадка. Всеки модел прави прогноза, а крайната прогноза е средният или мнозинството от гласовете на всички модели

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

Поставянето в торби намалява прекомерното монтиране чрез въвеждане на произволност в моделите. Чрез обучение на всеки модел върху различна извадка от данни, пакетирането гарантира, че всеки модел е малко по-различен. Следователно, моделът на ансамбъла е по-малко вероятно да прекалява с данните за обучение.

Пример за кодиране:

Ето пример за код на Python за това как да използвате bagging с библиотека scikit-learn:

За да илюстрираме как работи пакетирането, нека разгледаме един прост пример, използвайки набора от данни на Boston Housing. Ще използваме дърво на решенията като наш основен модел и ще обучим ансамбъл за пакетиране, използвайки класа Bagging Regressor на scikit-learn:

from sklearn.datasets import load_boston
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

# Load the Boston Housing dataset
boston = load_boston()
X, y = boston.data, boston.target

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Define the base model
base_model = DecisionTreeRegressor(max_depth=5)

# Define the bagging ensemble
bagging_model = BaggingRegressor(base_estimator=base_model, n_estimators=10, random_state=42)

# Train the bagging model
bagging_model.fit(X_train, y_train)

# Evaluate the model on the test data
y_pred = bagging_model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("Mean squared error:", mse)

Какво представлява техниката на случаен горски ансамбъл?

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

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

За да се направи прогноза, всяко дърво на решенията в гората независимо класифицира входните данни и крайният резултат се определя чрез гласуване с мнозинство (за задачи за класификация) или осредняване (за задачи за регресия) за всички дървета.

Пример за кодиране:

Ето пример за това как да внедрите произволен горски класификатор в Python с помощта на scikit-learn:

В този пример първо зареждаме набора от данни за ириса и го разделяме на набори за обучение и тестване с помощта на функцията train_test_split. След това създаваме Произволен класификатор на гори със 100 дървета и обучаваме модела върху данните за обучение, като използваме метода за прилягане. И накрая, ние прогнозираме върху данните от теста, използвайки метода за прогнозиране и отпечатваме резултата за точност на модела, използвайки метода на резултата.

# Import required libraries
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Load iris dataset
iris = load_iris()

# Split dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)

# Create a Random Forest Classifier with 100 trees
rfc = RandomForestClassifier(n_estimators=100, random_state=42)

# Train the model on the training data
rfc.fit(X_train, y_train)

# Predict on the test data
y_pred = rfc.predict(X_test)

# Print the accuracy score of the model
print("Accuracy:", rfc.score(X_test, y_test))

Какви са приликите между техниката за учене на Random Forest и Bagging ensemble?

1. И двете използват първоначално зареждане за генериране на подмножества от данните за обучение: И Bagging, и Random Forest използват първоначално зареждане за генериране на подмножества от данните за обучение. Bootstrapping е техника за вземане на проби, която включва произволно вземане на проби от данните за обучение със замяна за генериране на множество подмножества от данните.

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

3. И двете използват паралелна обработка: И Bagging, и Random Forest могат да се възползват от паралелната обработка, за да ускорят процеса на обучение. Тъй като всеки базов модел може да се обучава самостоятелно, те могат да се обучават паралелно, което може значително да намали времето за обучение.

4. И двата комбинират прогнозите на множество базови модели:И Bagging, и Random Forest комбинират прогнозите на множество базови модели, за да направят окончателното прогнозиране. В Bagging прогнозите се комбинират с помощта на осредняване, докато в Random Forest прогнозите се комбинират с помощта на мажоритарен вот.

5. И двете могат да се използват с различни базови модели: И Bagging, и Random Forest могат да се използват с различни базови модели, включително дървета на решенията, логистична регресия и невронни мрежи.

6. И двете могат да обработват данни с големи размери: И Bagging, и Random Forest могат да обработват данни с големи размери, където броят на характеристиките е много по-голям от броя на пробите. Това е така, защото произволното подмножество от функции, използвани във всеки базов модел, помага да се намали размерността на данните и да се подобри производителността на обобщението на модела.

Каква е разликата между Random Forest и Bagging ensemble tehnika за обучение?

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

2. Избор на функции:В Random Forest се избира произволна подгрупа от функции за всеки базов модел. Това помага да се намали корелацията между базовите модели и да се подобри разнообразието на ансамбъла. В Bagging всички функции се използват за всеки базов модел.

3.Правило за вземане на решение: В Bagging правилото за вземане на решение за комбиниране на прогнозите на базовите модели обикновено е осредняване. В Random Forest правилото за вземане на решение обикновено е мнозинство.

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

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

6. Производителност: Random Forest често може да постигне по-висока точност на прогнозиране от Bagging поради способността му да намалява корелацията между базовите модели и да подобрява разнообразието на ансамбъла.

Заключение:

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