선형 회귀
여러 입력 변수에 계수를 곱해 주거 만족도를 예측하고 계수의 의미를 해석하는 선형 회귀
모든 입력을 한 번에 합치기
- 선형 회귀(linear regression): 각 입력 변수에 계수를 곱한 뒤 모두 더해 숫자를 예측하는 모델
- 계수(coefficient): 입력 변수 한 단위에 배정한 가중치
- 절편(intercept): 모든 입력값이 0일 때 예측의 출발점
입력 변수가 세 개인 선형 회귀식:
y^=b0+b1x1+b2x2+b3x3- y^: 모델의 예측값
- b0: 절편
- b1, b2, b3: 각 입력 변수의 계수
- x1, x2, x3: 새 사례의 입력값
모델 학습의 목표는 실제 만족도와 예측 만족도의 차이가 작아지는 절편과 계수를 찾는 것.
실습 프롬프트
🤖 AI 프롬프트
housing.xlsx의 data 시트로 주거 만족도를 예측하는 선형 회귀 모델을 만들어줘.
통학 시간·월세·소음 수준을 입력으로, score를 타깃으로 사용해.
절편과 변수별 계수를 보여주고, 다른 조건이 같을 때 각 계수가 무엇을 뜻하는지 설명해줘.
cases.xlsx의 새 사례에 대한 만족도를 예측해 표에 추가해줘.
파이썬 코드와 초보자를 위한 한글 주석을 작성해줘.
선형 회귀 학습
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
실행 결과
LinearRegression()
fit(X, y)는 최소제곱법(least squares)으로 만족도 예측 오차의 제곱합이 가장 작아지는 절편과 계수를 탐색.
절편 확인
model.intercept_.item() # 절편
실행 결과
116.65958153724841
절편은 약 116.66점. 통학 시간, 월세, 소음 수준이 모두 0일 때의 계산상 예측값. 세 입력이 모두 0인 주거 조건은 자료의 일반적인 사례가 아니므로, 절편은 주로 계산의 출발점으로 사용.
계수 확인
coef = pd.DataFrame({
"variable": features,
"coefficient": model.coef_,
})
coef
실행 결과
variable coefficient
0 commute -0.456990
1 rent -0.223370
2 noise -5.529794
학습한 예측식:
score=116.660−0.457×commute−0.223×rent−5.530×noise계수 해석
한 계수는 다른 입력 변수가 같을 때 해당 변수가 한 단위 증가하면 예측 만족도가 얼마나 달라지는지를 표시.
- 통학 시간 계수 −0.457
- 월세와 소음 수준이 같을 때 통학 시간 1분 증가
- 예측 만족도 약 0.457점 감소
- 월세 계수 −0.223
- 통학 시간과 소음 수준이 같을 때 월세 1만 원 증가
- 예측 만족도 약 0.223점 감소
- 소음 수준 계수 −5.530
- 통학 시간과 월세가 같을 때 소음 수준 1단계 증가
- 예측 만족도 약 5.530점 감소
계수의 부호는 예측값이 변하는 방향, 계수의 절댓값은 한 단위 변화에 따른 예측 변화량. 세 변수의 단위가 분, 만 원, 단계로 다르므로 계수의 절댓값만으로 중요도를 직접 비교하기는 어려움.
새로운 사례 예측
cases = pd.read_excel("cases.xlsx", sheet_name="cases")
cases.head()
실행 결과
commute rent noise
0 15 60 1
1 35 85 3
2 55 110 5
cases.xlsx에는 입력 변수만 존재. 선형 회귀식으로 만족도 예측값을 계산해 새 열에 추가.
cases["prediction"] = model.predict(cases)
cases
실행 결과
commute rent noise prediction
0 15 60 1 90.872744
1 35 85 3 65.089116
2 55 110 5 39.305488
- 첫 사례: 만족도 약 90.9점 예측
- 둘째 사례: 만족도 약 65.1점 예측
- 셋째 사례: 만족도 약 39.3점 예측
각 예측은 절편에서 시작해 통학 시간, 월세, 소음 수준의 기여분을 모두 더한 결과.
의사결정나무와 선형 회귀
- 의사결정나무: 한 번에 한 입력 변수에 질문하고 선택한 가지를 따라 예측
- 선형 회귀: 모든 입력 변수의 값을 계수와 곱해 동시에 합산
- 의사결정나무의 예측: 같은 잎에 속한 사례에 같은 값 부여
- 선형 회귀의 예측: 입력값이 달라지면 일정한 비율로 연속해서 변화
- 선형 회귀의 보상적(compensatory) 성격: 한 조건의 불리함을 다른 조건의 유리함이 합산 과정에서 일부 상쇄 가능
퀴즈
선형 회귀가 여러 입력 변수로 예측값을 만드는 방법은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.