091
[R] 머신러닝(4): 회귀분석 - 다중선형 회귀분석, 로지스틱 회귀분석 본문
1. 회귀분석 이론

- 회귀분석이란 과거 데이터로 변수들 간의 관계식을 찾아서 새 데이터의 결과값을 예측하는 지도 학습의 일종입니다. 이런 관계식은 독립변수, 종속변수 등으로 이루어집니다.
| 독립변수(x) | 종속변수(y) | |
| 의미 | 결과에 영향을 미치는 변수 | 독립변수로 인해 나타난 결과 |
| 다른 이름 | 입력변수, 설명변수, 특성 | 출력변수, 반응변수, 타겟 |
- 회귀 모델에는 여러 종류가 있지만 이 글에서는 다중회귀분석과 로지스틱 회귀분석에 대해 주로 다룰 것입니다. 일반 선형회귀분석은 아래 글에서 학습할 수 있습니다.
| 종류 | 독립변수 | 종립변수 | 함수 | 예시 |
| 단순선형 회귀 | 1개 | 연속형 숫자 | lm() | 키->혈당수치 |
| 다중선형 회귀 | 여러 개 | 연속형 숫자 | lm() | 키+몸무게->혈당수치 |
| 로지스틱 회귀 | 여러 개 | 범주형(분류) | glm() | 키+몸무게->당뇨 여부 |
-> lm()과 glm()의 가장 큰 특징은 종록변수의 타입이 각각 연속형 숫자, 범주형(정수)라는 점입니다.
[Python] 선형회귀분석
1. 선형회귀분석- 선형회귀분석이란 독립변수(X)와 종속변수(Y) 간의 선형적 관계를 모델링하는 통계적 방법, 최적의 직선을 찾아 변수 간의 관계를 설명하는 특징 -> 인과 관계 파악 및 예측과 추
in-ouput91.tistory.com
2. 회귀분석 실습
- 다중선형 회귀분석
w <- read.csv("chick.csv",header=T)
w_n <- w[,2:5]
head(w_n)
(1) 먼저 데이터를 가져와줍니다. 사용할 데이터를 w_n에 담아줍니다.
cor(w_n)
#cor(x=숫자형 데이터프레임 또는 행렬)
install.packages("corrplot")
library(corrplot)
corrplot(cor(w_n), method="number")
#corrplot(corr=cor()결과행렬, method="number"(숫자),"circle"(원)..등)
(2)상관계수 행렬을 corrplot()로 출력해보면 나머지 몸무게,종란무게, 먹는양은 서로 상관도가 높지만 이동량의 경우 높지 않아 제외해줍니다.


Mw_n <- w_n[,c(1,2,4)] #이동량 제외
head(Mw_n)
plot(Mw_n, col="red")
(3)이동량을 제외한 3변수를 산점도를 통해 선형 관계를 확인해주면 몸무게와 종란무게, 몸무게와 먹는양의 양의 상관관계가 있음을 알 수 있습니다.

MW_nmodel <- lm(weight~egg_weight+food, Mw_n)
#lm(formula(종속변수~독립변수1+독립변수2+...), data=dataStudy)
MW_nmodel
(4) 다중선형 회귀 모델을 생성해줍니다.

coef(MW_nmodel)
coef(MW_nmodel)[1]
coef(MW_nmodel)[2]
coef(MW_nmodel)[3]
(5) 위에서 만든 모델의 절편, 계수 등에 접근하기 위해서는 coef()를 사용하며 절편->독립변수1의 계수-> 독립변수2의 계수 순서입니다.

b <- coef(MW_nmodel)[1]
W1 <- coef(MW_nmodel)[2]
W2 <- coef(MW_nmodel)[3]
egg_wight <- 71
food <- 15
ggiwight <- W1*egg_wight+W2*food+b
ggiwight
#egg_weight
# 151.5138
(6) 변수에 담아서 종란무게가 71, 먹는 양이 15일 때의 몸무게를 약 151.5로 예측합니다.
- 로지스틱 회귀분석
iris.new <- iris
iris.new$Species <- as.integer(iris.new$Species)
head(iris.new) #factor는 내부에서 숫자로 저장 -> integer로 변환
(1) 로지스특 회귀분석의 경우 범주형 정수를 예측하기 때문에 iris의 Species를 integer로 변환해줍니다.
mod.iris <- glm(Species~Sepal.Length+Sepal.Width+
Petal.Length+Petal.Width, data=iris.new)
mod.iris
(2) 위에서 Species 열을 정수형으로 바꾼 것으로 모델을 만들어줍니다.

unknown <- data.frame(rbind(c(5.1,3.5,1.4,0.2)))
unknown <- data.frame(c(5.1,3.5,1.4,0.2))
unknown <- data.frame(cbind(c(5.1,3.5,1.4,0.2)))
unknown <- data.frame(5.1,3.5,1.4,0.2)
unknown
names(unknown) <- names(iris)[1:4]
unknown
pred <- predict(mod.iris, unknown)
pred
(3) 예측 데이터를 만들어서 iris의 이름을 가지고 이름을 지정해준 뒤 predict에 넣어서 pred 값을 출력합니다.




round(pred, 0) #1
unknown$Species <- round(pred,0)
unknown #1의 품종은 setosa
(4) 결과값을 열로 추가해줍니다.



'Programming Language > R' 카테고리의 다른 글
| [R] 머신러닝(3): 군집분석 - K-means 군집분석 (0) | 2026.05.30 |
|---|---|
| [R] 머신러닝(2): 텍스트마이닝- 감성분석 (0) | 2026.05.28 |
| [R] 머신러닝(1): 연관규칙분석-아프리오리 알고리즘 (0) | 2026.05.23 |
| [R] 데이터 시각화(treemap, ggplot2) (0) | 2026.04.26 |
| [R] 데이터 전처리 (0) | 2026.04.26 |
