Смещение и дисперсия с использованием Python
При обучении модели машинного обучения очень важно понимать смещение и дисперсию прогнозов вашей модели. Это помогает анализировать ошибки прогнозирования, что помогает нам в обучении более точным моделям машинного обучения. В этой статье я расскажу, как рассчитать смещение и дисперсию с помощью Python.
Что такое смещение и дисперсия?
Смещение – это разница между прогнозируемыми значениями и ожидаемыми результатами. Модель машинного обучения с низким смещением является идеальной моделью, и ожидается, что модель с высоким смещением будет иметь высокий уровень ошибок в обучающих и тестовых наборах.
Дисперсия – это изменчивость прогнозов вашей модели по разным наборам данных. Модель машинного обучения с высокой дисперсией указывает на то, что модель может хорошо работать с данными, на которых она была обучена, но она не будет хорошо обобщаться на наборе данных, который она никогда раньше не видела.
Смещение и дисперсия с использованием Python
Надеюсь, теперь вы поняли, что такое смещение и дисперсия в машинном обучении и как модель с высоким смещением и дисперсией может повлиять на производительность вашей модели в наборе данных, которого она никогда раньше не видела. В этом разделе я расскажу вам, как рассчитать смещение и дисперсию с помощью Python.
Вы должны использовать библиотеку scikit-learn в Python для реализации большинства алгоритмов машинного обучения. Но у нее нет функции для вычисления смещения и дисперсии вашей обученной модели. Итак, чтобы рассчитать смещение и дисперсию вашей модели с использованием Python, вам необходимо установить другую библиотеку, известную как mlxtend. Вы можете легко установить ее в своей системе с помощью команды pip:
- pip install mlxtend
Теперь давайте обучим модель машинного обучения, а затем посмотрим, как можно рассчитать смещение и дисперсию с помощью Python:
from mlxtend.evaluate import bias_variance_decomp import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.utils import shuffle from sklearn.metrics import mean_squared_error data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/student-mat.csv") data = data[["G1", "G2", "G3", "studytime", "failures", "absences"]] predict = "G3" x = np.array(data.drop([predict], 1)) y = np.array(data[predict]) from sklearn.model_selection import train_test_split xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2) linear_regression = LinearRegression() linear_regression.fit(xtrain, ytrain) y_pred = linear_regression.predict(xtest)
Итак, до сих пор мы обучали модель машинного обучения с использованием алгоритма линейной регрессии, ниже показано, как мы можем вычислить ее:
mse, bias, variance = bias_variance_decomp(linear_regression, xtrain, ytrain, xtest, ytest, loss='mse', num_rounds=200, random_seed=123) print("Average Bias : ", bias) print("Average Variance : ", variance)
Average Bias : 3.909459558063484 Average Variance : 0.07349200663859749
Резюме
Смещение – это разница между прогнозируемыми значениями и ожидаемыми результатами. Дисперсия – это изменчивость прогнозов вашей модели по разным наборам данных. Надеюсь, вам понравилась эта статья о том, как рассчитать смещение и дисперсию модели машинного обучения.