[머신러닝] 회귀 모델 - Linear Regression(선형 회귀)/Bagging Regressor(배깅 회귀)/Boosting Regressor(부스팅 회귀)
2025. 2. 28. 00:25ㆍAI & DS/머신러닝
카테고리를 예측하면 → 분류 (Classification),
숫자 값을 예측하면 → 회귀 (Regression),
분류는 특정 클래스(이산적인 값),
회귀는 선형적인 변화(연속적인 값) 예측에 사용
분류(Classification)
- 정해진 카테고리(클래스) 중 하나를 예측하는 문제 -> 즉, "어떤 그룹에 속하는가?" 를 예측하는 것
- 출력값(Y)이 연속적이지 않고, 특정 클래스 중 하나로 결정됨
- 예측 결과는 0, 1 또는 다중 클래스(예: 개, 고양이, 토끼) 같은 이산값(Discrete Value)
- 예제 1 : 이메일 스팸 분류
- 입력(X): 이메일의 단어 개수, 링크 포함 여부, 광고성 문구 포함 여부
- 출력(Y): "스팸(1)" 또는 "정상 메일(0)"
- 예제 2 : 암 진단(양성 vs. 악성)
- 입력(X): 종양 크기, 세포 밀도 등
- 출력(Y): "양성(0)" 또는 "악성(1)"
분류 모델의 결정 경계 (Classification Decision Boundary)

- 파란색과 빨간색 점들은 각각 다른 클래스 (예: 양성 vs. 악성)
- 초록색 선이 결정 경계(Decision Boundary)
- 새로운 데이터가 어느 쪽에 속하는지 분류하는 것이 목표
회귀(Regression)
- 숫자 값을 예측하는 문제 -> 즉, "얼마나 될까?", "얼마 정도일까?" 와 같은 질문을 다룸
- 출력값(Y)이 연속적인 값(Continuous Value)으로 나옴
- 예제 1 : 집값 예측
- 입력(X): 집의 크기(면적), 방 개수, 위치
- 출력(Y): 집값(100,000달러, 250,000달러 등 연속적인 값)
- 예제 2 : 자동차 연비 예측
- 입력(X): 엔진 크기, 차량 무게, 연료 종류
- 출력(Y): 연비(예: 12.5 km/L, 15.8 km/L)
분류 vs. 회귀 예측 방식 차이
- 분류 모델이 예측하는 방식 : 각 클래스에 속할 확률을 계산한 후, 가장 확률이 높은 클래스로 예측
- [이메일 스팸 여부 예측] P(스팸) = 0.85, P(정상 메일) = 0.15 → 결과: "스팸" (0.85가 더 크므로)
- 회귀 모델이 예측하는 방식 : 회귀 모델은 주어진 X 값에 대해 Y 값을 직접 예측
- [집값 예측] 입력(X): "방 개수 3개, 면적 120㎡", 모델 출력(Y): "예상 집값 300,000달러"
회귀 모델의 기본 원리 : 입력 변수(X)와 출력 변수(Y)의 관계를 찾는 것
- 일반적인 회귀 모델의 공식: Y=f(X)+ϵ
- X: 입력값 (독립 변수, feature)
- Y: 예측하고 싶은 값 (종속 변수, target)
- f(X): 우리가 찾고 싶은 함수 (모델)
- ϵ\epsilon: 오차 (모델이 완벽할 수 없으므로 포함되는 노이즈)
- (ex) "집 크기 vs 집값" 회귀 모델
- X: 집의 크기 (면적, square feet)
- Y: 집값 (price)
- 우리가 찾아야 할 것은 집 크기와 집값 사이의 관계 f(X)
1. 선형 회귀 (Linear Regression)

- 입력 변수(X)와 출력 변수(Y)의 관계를 직선으로 표현하는 모델 -> 예측값을 가장 잘 설명하는 직선을 찾는 과정
- 최소 제곱법(Ordinary Least Squares, OLS)을 사용하여 오차를 최소화하는 것이 핵심
학습 과정
1. 데이터가 주어짐
- 예제: 집 크기(X) → 집값(Y) 예측
- X축: 집 크기 (Square Feet)
- Y축: 집값 (Price)
2. 최적의 직선 찾기 : Y = aX + b
- a = 기울기(Slope)
- b = 절편(Intercept)
- 오차(Error) 정의 : Error = 실제값(Y) − 예측값(Y_hat)
- 손실 함수(Loss Function)

- 선형 회귀는 오차의 제곱합(Mean Squared Error, MSE)을 최소화하는 기울기와 절편을 찾음
3. 경사 하강법(Gradient Descent)으로 최적화
- MSE를 최소화하기 위해 기울기 a와 절편 b를 업데이트
- 기울기의 변화

- 학습이 진행될수록 오차가 줄어들면서 최적의 직선을 찾음
2. 배깅 회귀 (Bagging Regressor)
- 여러 개의 결정 트리(Decision Trees)를 학습하고, 평균을 내어 예측
- 랜덤하게 샘플을 선택하여 각 모델을 독립적으로 학습한 후, 최종적으로 평균을 내어 예측값 결정
- "데이터가 일부 변해도 예측 성능이 안정적"
- 과적합(Overfitting) 방지
- 하나의 모델(결정 트리 등)은 데이터에 너무 강하게 적응할 수 있음 → 과적합 발생 가능
- 하지만 배깅은 여러 개의 모델을 학습하고 평균을 내므로, 과적합을 줄일 수 있음
- 노이즈(Noise)에 강함
- 일부 샘플링이 이상치(Outlier)를 포함할 수 있음
- 그러나 배깅은 전체 모델들의 평균을 내므로 이상치의 영향을 줄임
- 예측 성능(Accuracy) 향상
- 개별 모델은 성능이 다소 낮을 수 있음
- 하지만 여러 모델을 합치면 더 강력한 예측 성능을 가짐
- 과적합(Overfitting) 방지
다이어그램으로 보는 과정

1. Training Data(훈련 데이터)
- 왼쪽에 있는 원형 점들이 훈련 데이터 -> 데이터는 다양한 클래스(예: 빨강, 노랑, 초록)로 나뉨
- 이 데이터셋을 사용해 모델을 학습할 예정
2. Bootstrap Sampling (랜덤 샘플링)
- 원래 훈련 데이터에서 랜덤하게 샘플을 뽑아 여러 개의 데이터셋을 생성
- 샘플링 과정에서는 중복이 허용됨 (같은 데이터가 여러 번 선택될 수 있음)
- 각 모델(Classifier/Regressor)이 서로 다른 데이터셋을 학습하게 됨
- 오른쪽 상단 박스처럼, 각 샘플에는 일부 데이터가 포함되며 원본과 다를 수 있음
3. 여러 개의 모델(Classifier / Regressor) 학습
- 배깅은 여러 개의 개별 모델(약한 학습기, Weak Learner)을 학습하는 방식
- 그림에서 각 "Classifier / Regressor" 박스는 독립적인 모델을 의미
- 개별 모델들은 훈련된 데이터 샘플을 기반으로 개별적인 예측을 수행
- 모델 개수 N개가 설정될 수 있음
4. Ensemble (앙상블 예측)
- 새로운 데이터(Test Data)가 주어졌을 때, 개별 모델들이 각각 예측을 수행
- 마지막 단계에서 "Ensemble" (앙상블 기법, 즉 여러 모델의 결합)으로 최종 예측값을 생성
- 앙상블 방법:
- 분류(Classification) → 다수결 투표(Voting)
- 회귀(Regression) → 평균(Averaging)
5. 최종 예측값(Outcome)
- 배깅 모델은 다양한 데이터 샘플을 활용하여 여러 개의 개별 모델을 학습
- 이후, 각 모델의 예측 결과를 종합하여 최종 결과를 산출
- 이 과정 덕분에 데이터 일부가 변해도 안정적인 예측 성능을 유지
학습 과정
1. 랜덤 샘플링 (Bootstrap Sampling)
- 원래 훈련 데이터에서 랜덤하게 일부 샘플을 뽑아 여러 개의 학습 데이터셋을 생성
- 예를 들어, 1000개의 데이터가 있다면 각 모델은 800개의 랜덤 샘플을 사용하여 학습
- 중복 샘플링 가능 (Bootstrap Aggregation, Bagging)
2. 결정 트리 여러 개 학습
- 배깅에서는 각 샘플마다 독립적인 결정 트리를 학습
- 각 트리는 입력 변수 X에 대해 개별적으로 Y를 예측
- 트리의 개수 n개 → 각 트리에서 서로 다른 예측값을 생성
3. 예측값 평균 계산
- 모든 결정 트리에서 나온 예측값을 평균 내어 최종 예측값 결정

3. 부스팅 회귀 (Boosting Regressor)
- 이전 모델이 만든 오차를 보완하면서 점진적으로 성능을 개선하는 모델
- 배깅과 달리 오류를 줄이는 방향으로 학습이 진행됨
- 대표적인 알고리즘: Gradient Boosting, XGBoost, LightGBM
- Gradient Boosting은 오차를 점진적으로 보정하면서 강력한 예측 모델을 형성
- 이전 모델의 오차를 기반으로 학습하기 때문에 일반적인 배깅(Bagging)보다 높은 성능을 기대할 수 있음
- 하지만 과적합(Overfitting) 위험이 존재 → 하이퍼파라미터 튜닝이 중요
다이어그램으로 보는 과정

1. 데이터 입력 (Start & Data Samples)
- 입력 데이터(X, y)가 주어짐
- X: 입력 변수 (독립 변수, Feature)
- y: 정답 데이터 (종속 변수, Target)
2. 첫 번째 약한 모델 (Weak Model 1) 학습
- 첫 번째 약한 모델(Weak Model 1)이 학습됨 (예: 작은 결정 트리)
- 이 모델은 초기 예측값(y_hat)을 생성
- 그러나 첫 모델은 완벽하지 않음 → 예측 오차(Residual R1)가 존재
오차(Residual) 계산 공식

→ 즉, 실제값과 예측값의 차이를 구함
→ 오차가 남아 있으므로, 이 오차를 보완하는 새로운 모델이 필요
3. 두 번째 약한 모델 (Weak Model 2) 학습
- 두 번째 약한 모델이 첫 번째 모델의 오차(Residual R1)를 학습
- 즉, 오차(잔차)를 줄이는 방향으로 두 번째 모델을 학습
- 새로운 예측값(R1_hat)이 생성됨
새로운 오차 계산 공식

→ 첫 번째 모델의 오차를 반영한 새로운 오차(Residual)를 계산
→ 이제 잔여 오차를 최소화하는 방향으로 학습 진행
4. 세 번째 약한 모델 (Weak Model 3) 학습
- 이전 모델이 여전히 완벽하지 않으므로, 세 번째 모델이 남은 오차(R2)를 학습
- 또다시 잔차 예측값(R2_hat)을 만들고, 새로운 오차(R3)를 계산
새로운 오차 계산 공식

→ 계속해서 이전 모델이 해결하지 못한 오차를 학습하여 개선
5. 여러 개의 모델이 순차적으로 학습됨
- 이 과정을 여러 번 반복하여 N개의 약한 모델을 학습
- 점점 더 예측 성능이 향상됨
- 최종 단계에서는 오차(Residual)가 거의 0에 가까워짐
- 마지막 모델의 예측값이 곧 최종 예측값(Prediction Y)
학습 과정
1. 첫 번째 결정 트리 학습
- 초기 모델 f1(X)을 학습하여 첫 번째 예측값(y hat) 을 생성
- 하지만 예측값과 실제값 사이에는 오차(Error)가 존재
2. 오차(Residuals)를 계산하고, 보완 모델 학습
- 오차(Residual)를 계산

- 새로운 트리 f2(X)를 학습하여 이전 모델의 오차를 보완
- 즉, 새로운 모델은 오차를 줄이는 방향으로 업데이트됨
- α (alpha) 학습률 (learning rate)

3. 이 과정을 반복
- 여러 개의 모델이 순차적으로 학습되면서 점점 더 정확한 예측값 생성
- 최종적으로 여러 개의 약한 학습기(Weak Learner)가 결합하여 강력한 모델(Strong Learner)로 완성됨
모델 | 학습 방식 | 학습 과정 | 장점 | 단점 |
선형 회귀 | 데이터를 직선으로 표현 | 경사 하강법을 사용해 최적의 직선 찾음 | - 간단하고 빠름 | - 비선형 데이터를 잘 학습 못함 |
배깅 회귀 | 여러 개의 트리를 평균 | 랜덤 샘플링 후 다수의 모델 학습 → 평균 | - 데이터 변동성이 있어도 안정적 - 여러 개의 모델을 평균 내어 안정적이고 과적합 위험이 적음 |
- 트리 개수가 많아지면 느려질 수 있음 |
부스팅 회귀 | 이전 모델의 오차를 보완 | 오차를 줄이는 방향으로 순차적으로 학습 | - 강력한 성능, 정밀한 예측 가능 | - 과적합 위험, 학습 속도 느림 |
배깅(Bagging) vs. 부스팅(Boosting) 비교
비교 항목 | 배깅(Bagging) | 부스팅(Boosting) |
학습 방식 | 여러 모델을 독립적으로 학습 → 예측값을 평균 | 이전 모델의 오차를 보완하면서 순차적으로 학습 |
데이터 샘플링 | 랜덤 샘플링 (Bootstrap) | 모든 데이터를 사용 |
모델 결합 방식 | 평균(회귀) or 다수결(분류) | 이전 모델의 오차를 보완하며 가중치 적용 |
대표 알고리즘 | 랜덤 포레스트 (Random Forest) | Gradient Boosting, XGBoost, LightGBM |
'AI & DS > 머신러닝' 카테고리의 다른 글
[머신러닝] 공모전 추천 시스템(2) - chatGPT OpenAI 활용 (0) | 2025.02.28 |
---|---|
[머신러닝] 데이터가 너무 한쪽으로 치우쳐있는 문제 해결하기 - bin/로그 변환/이상치 제거/Box-Cox 변환 (0) | 2025.02.28 |
[머신러닝] 하이퍼파라미터 / 최적의 하이퍼파라미터 찾기란 무엇인가? / Random Forest와 하이퍼파라미터 (0) | 2025.02.27 |
[머신러닝] 분류 학습 예측 모델 - KNN / Random Forest / 3가지 모델의 단점 및 원인 (0) | 2025.02.27 |
[머신러닝] 분류 학습 모델 - Logistic Regression (0) | 2025.02.27 |