(вывод lm по точкам), также с Python
Линейная регрессия - это очень простой, базовый, но очень эффективный подход к контролируемому обучению. Этот подход очень хорош для прогнозного анализа и построения общего подхода к любым данным, прежде чем переходить к более сложному алгоритму машинного обучения.
Линейная регрессия уже много обсуждается, и почти все книги, которые учат нас анализу, имеют ее описание, и гораздо больше материалов доступно в Интернете, поэтому я оставляю много деталей, кроме базового понимания того, что все дело в прогнозировании количественной реакции Y на основе единственного предиктора X исходя из предположения, что между ними существует линейная связь, конечно, некоторый коэффициент, перехват также играет решающую роль и не забывает случайную ошибку, которая делает все более реальным и земным почти везде !!!. Более подробная информация доступна на https://en.wikipedia.org/wiki/Linear_regression.
Предполагая, что мы достаточно знаем об этой концепции, и пробуем свои силы с реальными вещами, то есть написанием кода на R / Python. Во-первых, работая с R и беря уже чистые стандартные данные, зачем !!! Поскольку получение и очистка данных, обработка данных составляет почти 60–70% любого задания по науке о данных или машинному обучению.
Знай свои данные
library(alr3) Loading required package: car library(corrplot) data(water) ## load the data head(water) ## view the data Year APMAM APSAB APSLAKE OPBPC OPRC OPSLAKE BSAAM 1 1948 9.13 3.58 3.91 4.10 7.43 6.47 54235 2 1949 5.28 4.82 5.20 7.55 11.11 10.26 67567 3 1950 4.20 3.77 3.67 9.52 12.20 11.35 66161 4 1951 4.60 4.46 3.93 11.14 15.15 11.13 68094 5 1952 7.15 4.99 4.88 16.34 20.05 22.81 107080 6 1953 9.70 5.65 4.91 8.88 8.15 7.41 67594 filter.water <- water[,-1] ## Remove unwanted year # Visualize the data library(GGally) ggpairs(filter.water) ## It's multivaribale regaression
Магия LM начинается благодаря R
Это похоже на yi = b0 + b1xi1 + b2xi2 +… bpxip + ei для i = 1,2,… n. здесь y = BSAAM, а x1… xn - все остальные переменные.
mlr <- lm(BSAAM~., data = filter.water) summary(mlr) # Output Call: lm(formula = BSAAM ~ ., data = filter.water) Residuals: Min 1Q Median 3Q Max -12690 -4936 -1424 4173 18542 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 15944.67 4099.80 3.889 0.000416 *** APMAM -12.77 708.89 -0.018 0.985725 APSAB -664.41 1522.89 -0.436 0.665237 APSLAKE 2270.68 1341.29 1.693 0.099112 . OPBPC 69.70 461.69 0.151 0.880839 OPRC 1916.45 641.36 2.988 0.005031 ** OPSLAKE 2211.58 752.69 2.938 0.005729 ** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 7557 on 36 degrees of freedom Multiple R-squared: 0.9248, Adjusted R-squared: 0.9123 F-statistic: 73.82 on 6 and 36 DF, p-value: < 2.2e-16
Объяснение вывода
Остатки
Обычно он дает базовое представление о разнице между наблюдаемым значением зависимой переменной (Y) и прогнозируемым значением (X), он дает конкретные детали, например, минимальное, первое, среднее, третье четверть и максимальное значение, обычно оно не используется. в нашем анализе
Коэффициенты-перехват
Мы можем видеть, что все оставшиеся переменные идут с еще одной строкой «Перехват». Перехват предоставляет данные, когда все переменные равны 0, поэтому все измерения выполняются без учета какой-либо переменной, это опять же не так часто используется в обычных случаях, это среднее значение. y, когда x = 0
# Estimate Std. Error t value Pr(>|t|) # (Intercept) 15944.67 4099.80 3.889 0.000416 ***
Оценка коэффициента
Это увеличение X на одну единицу, а затем ожидаемое изменение Y, в этом случае смена единицы в OPS LAKE, затем на 2211,58 изменение единицы в BSAAM.
Коэффициент-Стд. Ошибка
Стандартное отклонение оценки называется стандартной ошибкой. Стандартная ошибка коэффициента определяет, насколько точно модель оценивает неизвестное значение коэффициента. Стандартная ошибка коэффициента всегда положительна.
Низкое значение этой ошибки будет полезно для нашего анализа, также используется для проверки доверительного интервала.
Значение коэффициента t
Значение t = оценка / стандартная ошибка
высокое значение t будет полезно для нашего анализа, так как это будет означать, что мы можем отклонить нулевую гипотезу, которая используется для вычисления значения p
Коэффициент Pr (›| t |)
индивидуальное значение p для каждого параметра, чтобы принять или отклонить нулевую гипотезу, это статистическая оценка x и y. Меньшее значение p позволяет нам отклонить нулевую гипотезу. все типы ошибок (истинно положительные / отрицательные, ложноположительные / отрицательные) выявляются, если мы неправильно анализируем значение p.
Звездочки отмечают значение p в стороне, определяя значимость значения, меньшее значение имеет высокую значимость.
# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Остаточная стандартная ошибка
Residual standard error: 7557 on 36 degrees of freedom
При нормальной работе средняя ошибка модели, насколько хорошо наша модель предсказывает данные в среднем.
Степень свободы подобна отсутствию точки данных, принимаемой во внимание для оценки с учетом параметра. Не уверен, но в этом случае у нас всего 43 точки данных и 7 переменных, поэтому удалено 7 точек данных (43–7) = 36 степеней свободы.
Множественный R-квадрат и Скорректированный R-квадрат
Multiple R-squared: 0.9248, Adjusted R-squared: 0.9123
Всегда от 0 до 1, высокое значение лучше. Процент вариации в переменной ответа, который объясняется вариацией в объясняющей переменной, это используется для расчета того, насколько хорошо модель объясняет вещи, когда мы не увеличиваем никакую переменную. тогда он также будет увеличиваться, и нет надлежащего предела, чтобы определить, насколько мы можем увеличить.
Мы берем запыленное значение, в котором мы не берем все переменные, только значимые переменные учитываются в скорректированном R в квадрате.
F-статистика
F-statistic: 73.82 on 6 and 36 DF
Это показывает взаимосвязь между предиктором и ответом, более высокое значение даст больше причин для отклонения нулевой гипотезы, его значимость для всей модели, а не какой-либо конкретный параметр.
DF - степень свободы
p-значение
p-value: < 2.2e-16
Общее значение p на основе F-статистики, обычно значение p менее 0,05 указывает на то, что общая модель значима.
Итак, Python
Я использую подход OLS (обычный метод наименьших квадратов), но то же самое можно получить с помощью SciPy, который дает более стандартный результат.
import pandas as pd import scipy.stats as stats from statsmodels.formula.api import ols mlr = ols("BSAAM~OPSLAKE+OPRC+OPBPC+APSLAKE+APSAB+APMAM", df).fit() print(mlr.summary())
Большинство параметров совпадают с выходными данными R, а остальные параметры можно использовать для следующей исследовательской работы :)
Все описание основано на общем восприятии. Пожалуйста, дайте мне знать, если что-то не так, и ваши отзывы очень приветствуются.