R Regresja krok po kroku i wielokrotna regresja liniowa [przykład krok po kroku]
Prosta regresja liniowa w R
Regresja liniowa odpowiada na proste pytanie: czy można zmierzyć dokładną relację między jedną zmienną przewidywaną a zestawem predyktorów?
Najprostszym modelem probabilistycznym jest model liniowy:
gdzie
- y = zmienna zależna
- x = zmienna niezależna
-
= składnik błędu losowego
-
= przechwycić
-
= Współczynnik x
Rozważmy następującą fabułę:
Równanie to jest przechwytem. Jeśli x równa się 0, y będzie równe wyrazowi wolnemu, 4.77. jest nachyleniem linii. Mówi, w jakiej proporcji zmienia się y, gdy zmienia się x.
Aby oszacować optymalne wartości oraz
, używasz metody zwanej Zwykłe najmniejsze kwadraty (OLS). Metoda ta stara się znaleźć parametry minimalizujące sumę kwadratów błędów, czyli odległość pionową pomiędzy przewidywanymi wartościami y i rzeczywistymi wartościami y. Różnica jest znana jako termin błędu.
Przed oszacowaniem modelu można określić, czy liniowa zależność między y i x jest wiarygodna, wykreślając wykres rozrzutu.
Wykres punktowy
Do wyjaśnienia koncepcji prostej regresji liniowej użyjemy bardzo prostego zbioru danych. Zaimportujemy średni wzrost i wagę amerykańskich kobiet. Zbiór danych zawiera 15 obserwacji. Chcesz zmierzyć, czy wzrost jest dodatnio skorelowany z wagą.
library(ggplot2) path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv' df <-read.csv(path) ggplot(df,aes(x=height, y = weight))+ geom_point()
Wyjście:
Wykres rozrzutu sugeruje ogólną tendencję do wzrostu y wraz ze wzrostem x. W kolejnym kroku zmierzysz o ile wzrasta za każdą dodatkową kwotę.
Oszacowania najmniejszych kwadratów
W prostej regresji OLS obliczenie oraz
jest proste. Celem tego samouczka nie jest pokazanie wyprowadzenia. Napiszesz tylko formułę.
Chcesz oszacować:
Celem regresji OLS jest zminimalizowanie następującego równania:
gdzie
jest rzeczywistą wartością i
jest wartością przewidywaną.
Rozwiązanie dla is
Należy pamiętać, że oznacza średnią wartość x
Rozwiązanie dla is
W R możesz użyć funkcji cov() i var() do oszacowania i możesz użyć funkcji mean() do oszacowania
beta <- cov(df$height, df$weight) / var (df$height) beta
Wyjście:
##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height) alpha
Wyjście:
## [1] -87.51667
Współczynnik beta oznacza, że na każdy dodatkowy wzrost waga wzrasta o 3.45.
Ręczne szacowanie prostego równania liniowego nie jest idealne. R zapewnia odpowiednią funkcję do estymacji tych parametrów. Wkrótce zobaczysz tę funkcję. Wcześniej przedstawimy, jak ręcznie obliczyć prosty model regresji liniowej. W swojej pracy jako analityk danych rzadko lub wcale nie będziesz w stanie oszacować prostego modelu liniowego. W większości sytuacji zadania regresji wykonywane są na wielu estymatorach.
Wielokrotna regresja liniowa w R
Bardziej praktyczne zastosowania analizy regresji wykorzystują modele, które są bardziej złożone niż prosty model liniowy. Model probabilistyczny, który obejmuje więcej niż jedną zmienną niezależną, nazywa się modele regresji wielokrotnej. Ogólna postać tego modelu to:
W notacji macierzowej możesz przepisać model:
Zmienna zależna y jest teraz funkcją k zmiennych niezależnych. Wartość współczynnika określa udział zmiennej niezależnej
oraz
.
Krótko przedstawimy założenie, które przyjęliśmy na temat błędu losowego z OLS:
- Średnia równa 0
- Wariancja równa
- Normalna dystrybucja
- Błędy losowe są niezależne (w sensie probabilistycznym)
Musisz rozwiązać , wektor współczynników regresji, który minimalizuje sumę kwadratów błędów między przewidywaną i rzeczywistą wartością y.
Rozwiązanie w formie zamkniętej to:
z:
- wskazuje transponować macierzy X
wskazuje odwracalna macierz
Korzystamy ze zbioru danych mtcars. Zapoznałeś się już ze zbiorem danych. Naszym celem jest przewidzenie mili na galon na podstawie zestawu funkcji.
Zmienne ciągłe w R
Na razie użyjesz tylko zmiennych ciągłych i odłożysz na bok cechy kategoryczne. Zmienna am jest zmienną binarną przyjmującą wartość 1, jeśli skrzynia biegów jest manualna i 0 dla samochodów z automatyczną skrzynią biegów; vs jest również zmienną binarną.
library(dplyr) df <- mtcars % > % select(-c(am, vs, cyl, gear, carb)) glimpse(df)
Wyjście:
## Observations: 32 ## Variables: 6 ## $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.... ## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1... ## $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ... ## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9... ## $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3... ## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...
Do obliczenia parametrów można użyć funkcji lm(). Podstawowa składnia tej funkcji jest następująca:
lm(formula, data, subset) Arguments: -formula: The equation you want to estimate -data: The dataset used -subset: Estimate the model on a subset of the dataset
Pamiętaj, że równanie ma następującą postać
w R
- Symbol = zostaje zastąpiony przez ~
- Każde x jest zastępowane nazwą zmiennej
- Jeśli chcesz usunąć stałą, dodaj -1 na końcu formuły
Przykład:
Chcesz oszacować wagę poszczególnych osób na podstawie ich wzrostu i dochodów. Równanie jest
Równanie w R zapisuje się w następujący sposób:
y ~ X1+ X2+…+Xn # Z przecięciem
A więc dla naszego przykładu:
- Zważ ~ wzrost + dochód
Twoim celem jest oszacowanie mili na galon na podstawie zestawu zmiennych. Równanie do oszacowania to:
Oszacujesz swoją pierwszą regresję liniową i zapiszesz wynik w dopasowanym obiekcie.
model <- mpg~.disp + hp + drat + wt fit <- lm(model, df) fit
Objaśnienie kodu
- model <- mpg ~. disp + hp + drat+ wt: Zapisz model do oszacowania
- lm(model, df): Oszacuj model za pomocą ramki danych df
## ## Call: ## lm(formula = model, data = df) ## ## Coefficients: ## (Intercept) disp hp drat wt ## 16.53357 0.00872 -0.02060 2.01577 -4.38546 ## qsec ## 0.64015
Dane wyjściowe nie dostarczają wystarczających informacji o jakości dopasowania. Możesz uzyskać dostęp do większej ilości szczegółów, takich jak istotność współczynników, stopień swobody i kształt reszt za pomocą funkcji summary().
summary(fit)
Wyjście:
## return the p-value and coefficient ## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5404 -1.6701 -0.4264 1.1320 5.4996 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 16.53357 10.96423 1.508 0.14362 ## disp 0.00872 0.01119 0.779 0.44281 ## hp -0.02060 0.01528 -1.348 0.18936 ## drat 2.01578 1.30946 1.539 0.13579 ## wt -4.38546 1.24343 -3.527 0.00158 ** ## qsec 0.64015 0.45934 1.394 0.17523 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.558 on 26 degrees of freedom ## Multiple R-squared: 0.8489, Adjusted R-squared: 0.8199 ## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10
Wniosek z wyników powyższej tabeli
- Powyższa tabela dowodzi, że istnieje silna negatywna zależność między wt i przebiegiem oraz pozytywna zależność między drat.
- Jedynie zmienna wt ma statystyczny wpływ na mpg. Pamiętaj, że aby przetestować hipotezę w statystyce, używamy:
- H0: Brak wpływu statystycznego
- H3: Predyktor ma znaczący wpływ na y
- Jeśli wartość p jest mniejsza niż 0.05, oznacza to, że zmienna jest istotna statystycznie
- Skorygowany R-kwadrat: wariancja wyjaśniona przez model. W twoim modelu wyjaśnił on 82 procent wariancji y. R kwadrat zawsze mieści się w przedziale od 0 do 1. Im wyższy, tym lepiej
Możesz uruchomić ANOVA test mający na celu oszacowanie wpływu każdej cechy na wariancje za pomocą funkcji anova().
anova(fit)
Wyjście:
## Analysis of Variance Table ## ## Response: mpg ## Df Sum Sq Mean Sq F value Pr(>F) ## disp 1 808.89 808.89 123.6185 2.23e-11 *** ## hp 1 33.67 33.67 5.1449 0.031854 * ## drat 1 30.15 30.15 4.6073 0.041340 * ## wt 1 70.51 70.51 10.7754 0.002933 ** ## qsec 1 12.71 12.71 1.9422 0.175233 ## Residuals 26 170.13 6.54 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Bardziej konwencjonalnym sposobem oszacowania wydajności modelu jest przedstawienie reszty w odniesieniu do różnych miar.
Możesz użyć funkcji plot(), aby wyświetlić cztery wykresy:
– Wartości reszty a wartości dopasowane
– Wykres normalnego QQ: kwartyl teoretyczny vs reszty standaryzowane
– Lokalizacja skali: dopasowane wartości vs pierwiastki kwadratowe reszt standaryzowanych
– Pozostałości a dźwignia: Dźwignia a standardowe reszty
Dodajesz kod par(mfrow=c(2,2)) przed plot(fit). Jeśli nie dodasz tej linii kodu, R poprosi Cię o naciśnięcie klawisza Enter w celu wyświetlenia następnego wykresu.
par(mfrow=(2,2))
Objaśnienie kodu
- (mfrow=c(2,2)): zwróć okno z czterema wykresami obok siebie.
- Pierwsze 2 dodają liczbę wierszy
- Drugie 2 dodaje liczbę kolumn.
- Jeśli napiszesz (mfrow=c(3,2)): utworzysz okno z 3 wierszami i 2 kolumnami
plot(fit)
Wyjście:
Formuła lm() zwraca listę zawierającą wiele przydatnych informacji. Dostęp do nich można uzyskać za pomocą utworzonego obiektu dopasowania, po którym następuje znak $ i informacja, którą chcesz wyodrębnić.
– współczynniki: `fit$współczynniki`
– reszty: `fit$residuals`
– dopasowana wartość: `fit$fitted.values`
Regresja czynników w R
W ostatnim oszacowaniu modelu regresję mpg przeprowadza się wyłącznie na zmiennych ciągłych. Dodanie zmiennych czynnikowych do modelu jest proste. Dodajesz zmienną am do swojego modelu. Ważne jest, aby upewnić się, że zmienna jest poziomem czynnika, a nie ciągła.
df <- mtcars % > % mutate(cyl = factor(cyl), vs = factor(vs), am = factor(am), gear = factor(gear), carb = factor(carb)) summary(lm(model, df))
Wyjście:
## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5087 -1.3584 -0.0948 0.7745 4.6251 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 23.87913 20.06582 1.190 0.2525 ## cyl6 -2.64870 3.04089 -0.871 0.3975 ## cyl8 -0.33616 7.15954 -0.047 0.9632 ## disp 0.03555 0.03190 1.114 0.2827 ## hp -0.07051 0.03943 -1.788 0.0939 . ## drat 1.18283 2.48348 0.476 0.6407 ## wt -4.52978 2.53875 -1.784 0.0946 . ## qsec 0.36784 0.93540 0.393 0.6997 ## vs1 1.93085 2.87126 0.672 0.5115 ## am1 1.21212 3.21355 0.377 0.7113 ## gear4 1.11435 3.79952 0.293 0.7733 ## gear5 2.52840 3.73636 0.677 0.5089 ## carb2 -0.97935 2.31797 -0.423 0.6787 ## carb3 2.99964 4.29355 0.699 0.4955 ## carb4 1.09142 4.44962 0.245 0.8096 ## carb6 4.47757 6.38406 0.701 0.4938 ## carb8 7.25041 8.36057 0.867 0.3995 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.833 on 15 degrees of freedom ## Multiple R-squared: 0.8931, Adjusted R-squared: 0.779 ## F-statistic: 7.83 on 16 and 15 DF, p-value: 0.000124
R wykorzystuje pierwszy poziom czynnika jako grupę bazową. Należy porównać współczynniki drugiej grupy z grupą bazową.
Regresja liniowa krok po kroku w R
Ostatnia część tego samouczka dotyczy regresja krokowa algorytm. Celem tego algorytmu jest dodawanie i usuwanie potencjalnych kandydatów w modelach oraz zachowanie tych, którzy mają istotny wpływ na zmienną zależną. Ten algorytm jest sensowny, gdy zbiór danych zawiera dużą listę predyktorów. Nie musisz ręcznie dodawać i usuwać zmiennych niezależnych. Regresja krokowa jest budowana w celu wybrania najlepszych kandydatów pasujących do modelu.
Zobaczmy w akcji jak to działa. Używasz zbioru danych mtcars ze zmiennymi ciągłymi tylko w celach pedagogicznych. Przed rozpoczęciem analizy warto ustalić różnice między danymi za pomocą macierzy korelacji. Biblioteka GGally jest rozszerzeniem ggplot2.
Biblioteka zawiera różne funkcje umożliwiające pokazanie statystyk podsumowujących, takich jak korelacja i rozkład wszystkich zmiennych w macierzy. Użyjemy funkcji ggscatmat, ale możesz odwołać się do winieta aby uzyskać więcej informacji na temat biblioteki GGally.
Podstawowa składnia ggscatmat() jest następująca:
ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson") arguments: -df: A matrix of continuous variables -columns: Pick up the columns to use in the function. By default, all columns are used -corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula
Wyświetlasz korelację dla wszystkich swoich zmiennych i decydujesz, które z nich będą najlepszymi kandydatami do pierwszego kroku regresji krokowej. Istnieją pewne silne korelacje między Twoimi zmiennymi a zmienną zależną, mpg.
library(GGally) df <- mtcars % > % select(-c(am, vs, cyl, gear, carb)) ggscatmat(df, columns = 1: ncol(df))
Wyjście:
Przykład regresji krok po kroku
Wybór zmiennych jest ważną częścią dopasowania modelu. Regresja krokowa wykona proces wyszukiwania automatycznie. Aby oszacować, ile jest możliwych wyborów w zestawie danych, należy obliczyć gdzie k jest liczbą predyktorów. Ilość możliwości rośnie wraz z liczbą zmiennych niezależnych. Dlatego musisz mieć automatyczne wyszukiwanie.
Musisz zainstalować pakiet olsrr z CRAN. Pakiet nie jest jeszcze dostępny w Anacondzie. Dlatego instalujesz go bezpośrednio z wiersza poleceń:
install.packages("olsrr")
Możesz wykreślić wszystkie podzbiory możliwości za pomocą kryteriów dopasowania (tj. R-kwadrat, skorygowany R-kwadrat, kryteria Bayesa). Model o najniższych kryteriach AIC będzie modelem ostatecznym.
library(olsrr) model <- mpg~. fit <- lm(model, df) test <- ols_all_subset(fit) plot(test)
Objaśnienie kodu
- mpg ~.: Skonstruuj model do oszacowania
- lm(model, df): Uruchom model OLS
- ols_all_subset(fit): Skonstruuj wykresy z odpowiednimi informacjami statystycznymi
- fabuła (test): Narysuj wykresy
Wyjście:
Modele regresji liniowej wykorzystują test t oszacować statystyczny wpływ zmiennej niezależnej na zmienną zależną. Naukowcy ustalili maksymalny próg na 10 procent, przy czym niższe wartości wskazują na silniejsze powiązanie statystyczne. Strategia regresji krokowej jest skonstruowana wokół tego testu, aby dodawać i usuwać potencjalnych kandydatów. Algorytm działa w następujący sposób:
- Krok 1: Regresuj każdy predyktor na y oddzielnie. Mianowicie dokonaj regresji x_1 na y, x_2 na y do x_n. Przechowuj Wartość p i utrzymuj regresor z wartością p niższą niż zdefiniowany próg (domyślnie 0.1). Predyktory o istotności mniejszej niż próg zostaną dodane do ostatecznego modelu. Jeśli żadna zmienna nie ma wartości p niższej niż próg wejściowy, algorytm zatrzymuje się i otrzymujesz ostateczny model tylko ze stałą.
- Krok 2: Użyj predyktora z najniższą wartością p i dodaj osobno jedną zmienną. Regresujesz stałą, najlepszy predyktor kroku pierwszego i trzecią zmienną. Dodajesz do modelu krokowego nowe predyktory o wartości niższej niż próg wejściowy. Jeśli żadna zmienna nie ma wartości p niższej niż 0.1, algorytm się zatrzymuje, a Ty masz swój ostateczny model z tylko jednym predyktorem. Regresujesz model krokowy, aby sprawdzić istotność najlepszych predyktorów kroku 1. Jeśli jest wyższa niż próg usuwania, zachowujesz ją w modelu krokowym. W przeciwnym razie ją wykluczasz.
- Krok 3: Powtarzasz krok 2 na nowym najlepszym modelu krokowym. Algorytm dodaje predyktory do modelu krokowego na podstawie wprowadzanych wartości i wyklucza predyktor z modelu krokowego, jeśli nie spełnia on progu wykluczającego.
- Algorytm jest kontynuowany, dopóki nie będzie można dodać ani wykluczyć żadnej zmiennej.
Algorytm można wykonać za pomocą funkcji ols_stepwise() z pakietu olsrr.
ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE) arguments: -fit: Model to fit. Need to use `lm()`before to run `ols_stepwise() -pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1 -prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3 -details: Print the details of each step
Wcześniej pokażemy Ci kroki algorytmu. Poniżej znajduje się tabela ze zmiennymi zależnymi i niezależnymi:
Zmienna zależna | Zmienne niezależne |
---|---|
mpg | dysp |
hp | |
szczur | |
wt | |
sek |
Rozpocznij
Na początek algorytm rozpoczyna się od uruchomienia modelu dla każdej zmiennej niezależnej z osobna. Tabela pokazuje wartość p dla każdego modelu.
## [[1]] ## (Intercept) disp ## 3.576586e-21 9.380327e-10 ## ## [[2]] ## (Intercept) hp ## 6.642736e-18 1.787835e-07 ## ## [[3]] ## (Intercept) drat ## 0.1796390847 0.0000177624 ## ## [[4]] ## (Intercept) wt ## 8.241799e-19 1.293959e-10 ## ## [[5] ## (Intercept) qsec ## 0.61385436 0.01708199
Aby wejść do modelu, algorytm zachowuje zmienną o najniższej wartości p. Z powyższego wyniku wynika, że wag
Krok 1
W pierwszym kroku algorytm uruchamia mpg niezależnie na wt i pozostałych zmiennych.
## [[1]] ## (Intercept) wt disp ## 4.910746e-16 7.430725e-03 6.361981e-02 ## ## [[2]] ## (Intercept) wt hp ## 2.565459e-20 1.119647e-06 1.451229e-03 ## ## [[3]] ## (Intercept) wt drat ## 2.737824e-04 1.589075e-06 3.308544e-01 ## ## [[4]] ## (Intercept) wt qsec ## 7.650466e-04 2.518948e-11 1.499883e-03
Każda zmienna jest potencjalnym kandydatem do wejścia do ostatecznego modelu. Algorytm zachowuje jednak tylko zmienną o niższej wartości p. Okazuje się, że hp ma nieco niższą wartość p niż qsec. Dlatego hp wchodzi do ostatecznego modelu
Krok 2
Algorytm powtarza pierwszy krok, ale tym razem z dwiema niezależnymi zmiennymi w ostatecznym modelu.
## [[1]] ## (Intercept) wt hp disp ## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 ## ## [[2]] ## (Intercept) wt hp drat ## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 ## ## [[3]] ## (Intercept) wt hp qsec ## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01
Żadna ze zmiennych, które weszły do ostatecznego modelu, nie ma wystarczająco niskiej wartości p. Algorytm zatrzymuje się w tym miejscu; mamy ostateczny model:
## ## Call: ## lm(formula = mpg ~ wt + hp, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.941 -1.600 -0.182 1.050 5.854 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 37.22727 1.59879 23.285 < 2e-16 *** ## wt -3.87783 0.63273 -6.129 1.12e-06 *** ## hp -0.03177 0.00903 -3.519 0.00145 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.593 on 29 degrees of freedom ## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8148 ## F-statistic: 69.21 on 2 and 29 DF, p-value: 9.109e-12
Aby porównać wyniki, możesz użyć funkcji ols_stepwise().
stp_s <-ols_stepwise(fit, details=TRUE)
Wyjście:
Algorytm znajduje rozwiązanie po 2 krokach i zwraca ten sam wynik, co wcześniej.
Na koniec można powiedzieć, że modele wyjaśniają dwie zmienne i wyraz wolny. Mila na galon jest ujemnie skorelowana z mocą brutto i masą
## You are selecting variables based on p value... ## 1 variable(s) added.... ## Variable Selection Procedure ## Dependent Variable: mpg ## ## Stepwise Selection: Step 1 ## ## Variable wt Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.868 RMSE 3.046 ## R-Squared 0.753 Coef. Var 15.161 ## Adj. R-Squared 0.745 MSE 9.277 ## Pred R-Squared 0.709 MAE 2.341 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 847.725 1 847.725 91.375 0.0000 ## Residual 278.322 30 9.277 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.285 1.878 19.858 0.000 33.450 41.120 ## wt -5.344 0.559 -0.868 -9.559 0.000 -6.486 -4.203 ## ---------------------------------------------------------------------------------------- ## 1 variable(s) added... ## Stepwise Selection: Step 2 ## ## Variable hp Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.909 RMSE 2.593 ## R-Squared 0.827 Coef. Var 12.909 ## Adj. R-Squared 0.815 MSE 6.726 ## Pred R-Squared 0.781 MAE 1.901 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 930.999 2 465.500 69.211 0.0000 ## Residual 195.048 29 6.726 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.227 1.599 23.285 0.000 33.957 40.497 ## wt -3.878 0.633 -0.630 -6.129 0.000 -5.172 -2.584 ## hp -0.032 0.009 -0.361 -3.519 0.001 -0.050 -0.013 ## ---------------------------------------------------------------------------------------- ## No more variables to be added or removed.
Nauczanie maszynowe
Nauczanie maszynowe staje się coraz bardziej powszechne wśród naukowców zajmujących się danymi i jest wdrażane w setkach produktów, z których korzystasz codziennie. Jedną z pierwszych aplikacji ML było filtr spamu.
Poniżej przedstawiono inne zastosowania uczenia maszynowego:
- Identyfikacja niechcianych wiadomości spamowych w wiadomościach e-mail
- Segmentacja zachowań klientów pod kątem reklamy ukierunkowanej
- Ograniczenie nieuczciwych transakcji kartami kredytowymi
- Optymalizacja zużycia energii w budynku mieszkalnym i biurowym
- Rozpoznawanie twarzy
Nadzorowana nauka
In Nadzorowana nauka, dane szkoleniowe, które przekazujesz algorytmowi, zawierają etykietę.
Klasyfikacja jest prawdopodobnie najczęściej stosowaną techniką uczenia nadzorowanego. Jednym z pierwszych zadań klasyfikacyjnych, z jakimi zetknęli się badacze, był filtr spamu. Celem uczenia się jest przewidzenie, czy wiadomość e-mail jest klasyfikowana jako spam czy ham (dobry e-mail). Maszyna, po etapie szkolenia, może wykryć klasę wiadomości e-mail.
Regresje są powszechnie stosowane w uczeniu maszynowym do przewidywania wartości ciągłej. Zadanie regresji może przewidzieć wartość a zmienna zależna w oparciu o zestaw niezależne zmienne (zwane także predyktorami lub regresorami). Na przykład regresja liniowa może przewidzieć cenę akcji, prognozę pogody, sprzedaż i tak dalej.
Poniżej znajduje się lista podstawowych algorytmów uczenia nadzorowanego.
- Regresja liniowa
- Regresja logistyczna
- Najbliżsi sąsiedzi
- Obsługa maszyny wektorowej (SVM)
- Drzewa decyzyjne i losowy las
- Sieci neuronowe
Uczenie się bez nadzoru
In Uczenie się bez nadzoru, dane treningowe są nieoznakowane. System próbuje uczyć się bez odniesienia. Poniżej znajduje się lista algorytmów uczenia bez nadzoru.
- K-średnia
- Hierarchiczny Cluster Analiza
- Maksymalizacja oczekiwań
- Wizualizacja i redukcja wymiarowości
- Analiza głównych składowych
- PCA jądra
- Osadzanie lokalnie-liniowe
Podsumowanie
- Regresja liniowa odpowiada na proste pytanie: czy można zmierzyć dokładną relację między jedną zmienną przewidywaną a zestawem predyktorów?
- Zwykła metoda najmniejszych kwadratów próbuje znaleźć parametry, które minimalizują sumę kwadratów błędów, czyli pionową odległość między przewidywanymi wartościami y i rzeczywistymi wartościami y.
- Model probabilistyczny, który zawiera więcej niż jedną zmienną niezależną, nazywany jest modelem regresji wielokrotnej.
- Celem algorytmu regresji liniowej krok po kroku jest dodawanie i usuwanie potencjalnych kandydatów w modelach oraz pozostawianie tych, którzy mają istotny wpływ na zmienną zależną.
- Wybór zmiennych jest ważną częścią dopasowania modelu. Regresja krokowa wykonuje proces wyszukiwania automatycznie.
Zwykłą regresję najmniejszych kwadratów można podsumować w poniższej tabeli:
Biblioteka | Cel | Funkcjonować | Argumenty |
---|---|---|---|
baza | Oblicz regresję liniową | lm() | formuła, dane |
baza | Podsumuj model | podsumować() | dopasować |
baza | Wyodrębnij współczynniki | lm()$współczynnik | |
baza | Wyodrębnij pozostałości | lm()$reszty | |
baza | Wyodrębnij dopasowaną wartość | lm()$dopasowane.wartości | |
olsrr | Uruchom regresję krokową | ols_stepwise() | pasuje, pent = 0.1, premia = 0.3, szczegóły = FAŁSZ |
Note: Pamiętaj o przekształceniu zmiennej kategorycznej na współczynnik przed dopasowaniem do modelu.