Автор оригинала: Pankaj Kumar.
Переменный компромисмент смещения – понимание концепций
Для оценки производительности модели необходимо, чтобы мы знаем о прогнозных ошибках в основном – предвзятость и дисперсию. Переменная смещения Tradeoff очень важная концепция в машинном обучении.
Наличие надлежащего понимания этих ошибок поможет создать хорошую модель, избегая подзарядки и преодоления данных при обучении алгоритма.
В этой статье мы поймем эту необходимую концепцию.
Что такое смещение?
Уплотнение – это разница между средним прогнозом нашей модели и правильным целевым значением, которое модель пытается предсказать.
Модель, имеющая высокую смещение, будет следить за нашей моделью и привести к увеличению различий в фактическом и прогнозируемом значении.
Чтобы понять предвзятость, давайте посмотрим на рисунок ниже:
Очень ясно, что на рисунке выше, что модель или линия не соответствовали данным хорошо, это отлично называется как Подзадание Отказ Это пример с высокой смещением в качестве разницы между фактическим значением (синие точки данных) и прогнозируемые значения (красная линия) высока.
Это всегда приводит к высокой ошибке на тренировках и тестовых данных.
Что такое дисперсия?
Дисперсия – это изменчивость моделей прогнозирования для данной точки данных, которая говорит нам распространение наших данных. Так что выглядит высокая дисперсия?
Модели с высокой дисперсией имеют очень сложный подходящий для данных, которые в основном означает, что наша модель только что запомнила данные тренировки. Благодаря этому наша модель не может дать правильные прогнозы в ранее невидимых данных.
Такие модели будут очень хорошо работать на тренировках, но имеют высокие скорости ошибок по тестовым данным.
Это известно как переоборудование Отказ
Какая общая ошибка?
Удобство и дисперсия дается:
- Смещение [f ‘(x)] [f’ (x) – f (x)]
- Дисперсия [ f ‘(x) ] [X ^ 2] -e [x] ^ 2
где f (x) – это настоящее значение, а F ‘(X) – это наша функция модели для прогнозирования значений, близких к F (x)
Единственным важным моментом, чтобы заметить здесь, является то, что общая ошибка в модели состоит из трех элементов.
Всего + дисперсия + неприводимая ошибка
Общая ошибка – это сумма смещения², дисперсия и неприводимая ошибка.
Здесь неприводимая ошибка – ошибка, которая не может быть уменьшена. Это присущий шум в наших данных. Но мы, безусловно, можем иметь контроль над количеством смещения и дисперсии, которую может иметь модель.
Следовательно, мы пытаемся получить оптимальные значения для смещения и дисперсии, изменяя сложность модели. Мы находим хороший баланс между смещением и дисперсией, так что общая ошибка минимальна.
Теперь, что такое дисперсия против смещения?
Если у нас есть очень простая модель, это означает, что у нас есть высокая смещение, а также низкая дисперсия, как мы видели в предыдущем разделе. Точно так же, если мы получим комплексную подгонку на наших учебных данных, мы говорим, что модель имеет высокую дисперсию и низкую смещение. В любом случае, мы не получим хорошие результаты.
Таким образом, компромисформа Bias Prance подразумевает, что между моделей и дисперсом должен быть подходящий баланс, чтобы общая ошибка минимизирована без переоценки и недостаточности данных.
Оптимальный баланс между смещением и дисперсией никогда не приведет к чрезмерному преобразованию или недостаточному заказу.
Пример переменных смещений в Python
Давайте посмотрим, как мы сможем рассчитать смещение и дисперсию модели. Запустите эту строку в командной строке, чтобы получить пакет.
pip install mlxtend
Вы можете скачать набор данных, используемый в этом примере здесь (Имя файла – balce.csv).
Давайте посмотрим, как мы можем определить смещение и дисперсию модели с использованием библиотеки MLXTEND.
#Importing the required modules from mlxtend.evaluate import bias_variance_decomp from sklearn.tree import DecisionTreeRegressor from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt from sklearn.metrics import mean_squared_error import pandas as pd import numpy as np #Reading the dataset df = pd.read_csv('score.csv') x = np.array(df.Hours).reshape(-1,1) y = np.array(df.Scores).reshape(-1,1) #Splitting the dataset into train and test set x_train,x_test, y_train, y_test = train_test_split(x,y, test_size = 0.4 , random_state = 0) #Making the model regressor = DecisionTreeRegressor(max_depth = 1) #Fitting the data to the model regressor.fit(x_train,y_train) #Calculating Bias and Variance avg_expected_loss, avg_bias, avg_var = bias_variance_decomp( regressor, x_train, y_train, x_test, y_test, loss='mse', random_seed=1) #Plotting the results x= np.linspace(min(x_train) , max(x_train), 100) plt.plot(x, regressor.predict(x)) plt.scatter(x_train , y_train , color = 'red') plt.xlabel('Hours') plt.ylabel('Score') plt.title('Model with a High Bias') print('average Bias: ',avg_bias) print('average Variance: ',avg_var)
average Bias: 10455.986051700678 average Variance: 61.150793197489904
Вышеуказанный график четко показывает, что наша модель не узнала хорошо, и, следовательно, имеет высокую смещение, потому что мы устанавливаем максимальную глубину дерева как 1. Такая модель при оценке на тестовом наборе получит плохие результаты.
Вы можете попробовать играть с кодом в другом наборе данных и использовать другую модель и изменение параметров для получения модели, которая имеет низкую смещение и низкую дисперсию.
Заключение
Уситие и дисперсия играют важную роль в решении, которую использовать прогнозную модель. В этой статье мы узнали о предвзятости и дисперсионной компромис-коридоре, как выглядит подходящим и переоцененным. И, наконец, мы узнали, что хорошая модель – это то, что будет иметь ошибку низкого смещения, а также ошибку низкой дисперсии.
Счастливое обучение