-
R 기초 19 - 머닝러신(선형회귀분석,최소제곱법,잔차)R 2022. 10. 25. 16:06
# 머신러닝(ML) # 선형회귀분석 : 두 변수간에 상관관계가 있고 인과관계가 있는 경우 모델 작성 가능 # 독립변수(x, 연속형), 종속변수(y, 연속형) # 모델 수식 : y = wx + b # 기울기(slope)와 절편(bias)은 최소제곱법 공식을 사용한다. # 부모의 IQ와 자식의 IQ 데이터를 사용해 선형회귀 분석 # 부모의 IQ와 자식의 IQ는 인과관계가 있다고 가정 x <- c(110, 120, 130, 140, 150) # 부모의 IQ(독립변수) y <- c(100, 105, 128, 115, 142) # 자식의 IQ(종속변수) cor(x, y) # 양의 상관관계가 매우 높다. plot(x, y) x_dev <- x - mean(x) # 편차 y_dev <- y - mean(x) dev_mul <- (x - mean(x)) * (y - mean(y)) # 공분산 수식 square <- x_dev ** 2 # 분산 값 df <- data.frame(x, y, x_dev, y_dev, dev_mul, square) df slope <- sum(df$dev_mul) / sum(df$square) slope # 0.94 bias <- mean(df$y) - slope * mean(df$x) bias # -4.2 # 모델 수식 y = 0.94 * x + -4.2 y_hat <- slope * 120 + bias cat('예측값 : ', y_hat, ', 실제값:', 105) ? lm line_model <- lm(formula = y ~ x) # 절편 구하는 함수 line_model plot(x, y) abline(line_model, col = 'blue') new_x = 99.5 # 미지의 x에 대한 y값이 궁금 new_y_hat <- slope * new_x + bias new_y_hat # 부모의 ip값이 99.5라면 자식 ip값은 89.33정도 나올 것이다 추측 가능 predict(line_model, data.frame(x=c(78.5, 123.4, 167.1))) # 69.590, 111.796, 152.874
처음 기울기는 랜덤으로 주어진다. 1로 주어진다면 실제값이 5, 예측값이 1이기 때문에 잔차는 4가 된다.
잔차가 0에 가까울 수록 오차가 적은 것이다.
계속 랜덤으로 주어지는데 0에 가까운 잔차를 찾아내어 예측값을 찾아준다.
w = 기울기
실제값 = x
예측값 = y
cost = 잔차
잔차란?
관측값들에서 나타나는 공통적인 특징들을 통해 관측값들이 가지는 상관관계에 대한 함수를 역으로 추정할 수도 있는데 이것을 회귀분석이라고 하고 이렇게 해서 얻어진 식을 회귀식이라고 한다.
이때 회귀식을 관측값과 비교해보면 회귀식이 관측값을 100% 예측해내지는 못하는데 이때 나타나는 오차를 잔차라고 한다.
'R' 카테고리의 다른 글
R 기초 21 - 선형회귀분석(회귀식 적합도에 대한 가설 검정) (0) 2022.10.26 R 기초 20 - 단순선형회귀 모델 예제, 회귀분석모형의 적절성을 위한 조건 (0) 2022.10.25 R 기초 18 - 통계분석, 기술통계, 표준화, 정규화, 변동계수, 공분산, 상관계수 (0) 2022.10.25 R 기초 17 - 정형 데이터 처리(RDBMS 연동) SQLite, MariaDB 연동 (0) 2022.10.24 R 기초 16 - 데이터 전처리 (0) 2022.10.24