Может ли хорошая модель иметь низкое значение квадрата R?

#python #machine-learning #scikit-learn #regression #mean-square-error

Вопрос:

Я сделал линейную регрессию с помощью scikit learn

когда я вижу свою среднеквадратичную ошибку в тестовых данных, она очень низкая (0,09).

когда я вижу свой рейтинг r2_ в своих тестовых данных, он также очень мал (0,05)

согласно тому, что я знаю, когда среднеквадратичная ошибка невелика, нынешняя модель хороша, но r2_score очень меньше, что говорит нам о том, что модель не очень хороша

Я не понимаю, хороша моя регрессионная модель или нет

Может ли хорошая модель иметь низкое значение квадрата R или плохая модель может иметь низкое значение среднеквадратичной ошибки?

Ответ №1:

R^2-это показатель того, насколько хорошо вы подходите для представления данных.

Допустим, ваши данные имеют линейный тренд и некоторый шум на нем. Мы можем построить данные и посмотреть, как меняется R^2:

Данные

Я собираюсь создать некоторые данные, используя numpy :

 xs = np.random.randint(10, 1000, 2000) ys = (3 * xs   8)   np.random.randint(5, 10, 2000)  

Немного Разрозненных Данных

В форме

Теперь мы можем создать подходящий объект с помощью scikit

 reg = LinearRegression().fit(xs.reshape(-1, 1), ys.reshape(-1, 1))  

И мы можем получить оценку по этой подгонке.

 reg.score(xs.reshape(-1, 1), ys.reshape(-1, 1))  

Мой R^2 был: 0.9999971914416896

Неверные данные

Допустим, у нас есть набор более разрозненных данных (в нем больше шума).

 ys2 = (3 * xs   8)   np.random.randint(500, 1000, 2000)  

Очень Разрозненные Данные

Теперь мы можем рассчитать оценку ys2 , чтобы понять, насколько хорошо наши xs данные соответствуют ys2 :

 reg.score(xs.reshape(-1, 1), ys2.reshape(-1, 1))  

Мой R^2 был: 0.2377175028951054

Оценка низкая. мы знаем, что тенденция данных не изменилась. Это все еще 3x 8 (шум). Но ys2 находятся дальше от подходящего.

Итак, R^2-это показатель того, насколько хорошо ваша подгонка отражает данные. Но важно состояние самих данных. Возможно, даже с низким баллом вы получите наилучшую возможную подгонку. Так как данные рассеиваются из-за шума.