1. 선형회귀란? 데이터를 선으로 설명한다.
가장 기본적인 회귀분석이 선형회귀(Linear Regression)입니다. 이는 “x와 y 사이에 일직선 형태의 관계가 있다”고 가정하는 모델입니다.회귀분석은 하나 이상의 변수(x)가 다른 변수(y)에 어떤 영향을 주는지를 알아보는 방법입니다.
- x: 독립변수 (예: 공부 시간)
- y: 종속변수 (예: 시험 점수)
예를 들어,
- 밥 2그릇 → 300g 증가
- 밥 5그릇 → 600g 증가
- 밥 10그릇 → 900g 증가
이런 데이터가 있다면, “밥을 1그릇 더 먹으면 평균적으로 체중이 얼마나 늘까?”를 직선으로 표현할 수 있습니다.
이때 직선은 이렇게 표현 될 수 있다.
H(x) = wx + b
여기서 w는 기울기(얼마나 체중이 늘어나는지), b는 y절편(밥을 안 먹어도 존재하는 체중)이다.
1.1. 선형회귀의 수식 만들기 과정
- 가설 설정
먼저 임의의 직선(가설 H(x) = wx + b)을 설정합니다. - 오차(잔차) 계산
실제값 y와 예측값 𝑦̂ 의 차이, 즉 오차를 계산합니다.
잔차 = (예측값 𝑦̂ − 실제값 y) - 비용함수 구하기
전체 데이터의 오차 제곱 평균을 구합니다.
비용함수(cost) = 평균(잔차²) - 최적의 직선 찾기
오차가 가장 작아지는 w와 b를 찾기 위해 반복적으로 갱신합니다. 이 과정을 경사하강법(Gradient Descent)이라고 한다. 비용함수의 최소값을 구하기 위해 비용함수를 w에 대해 편미분하여 0이 되는 지점을 찾는다
1.2. 다중 선형회귀
현실은 한 가지 요인만으로 결과가 결정되지 않는다. 예를 들어, 기말고사 성적은 단순히 과제 점수 하나로 예측하기 어렵습니다.
출석, 중간고사, 키, 학번 등 여러 요소가 영향을 줍니다. 이럴 때는 변수 x가 여러 개인 다중 선형회귀(Multiple Linear Regression)를 사용합니다.
H(x₁, x₂, x₃, ...) = w₁x₁ + w₂x₂ + w₃x₃ + ... + b
주어진 데이터를 전부 넣는 게 항상 좋지도 않다. 너무 많은 변수를 넣으면 오히려 모델이 복잡해져 과적합이 발생할 수 있기 때문에
중요한 변수만 선택하는 변수 선택(feature selection)도 필요하다.
1.3 인공지능과 회귀의 연결
신경망(Neural Network)도 결국 가중치를 조절해 정답에 가까운 값을 찾는 과정입니다. 즉, 여러 개의 선형회귀를 겹겹이 쌓고 복잡한 계산을 하여 최적의 예측을 하는 구조이다.
1.4. 선형 회귀 모델을 위한 데이터 전처리 체크리스트
결측값(Missing Value) 처리: 선형 회귀는 빈칸이 있는 데이터를 처리할 수 없습니다.
- 방법
- 수치형: 평균, 중앙값 등으로 채우기 (mean, median)
- 범주형: 최빈값으로 채우기 or Unknown 등으로 대체
- 또는 결측이 많은 변수는 제거
이상치(Outlier) 탐지 및 처리: 극단적인 값은 회귀 모델이 기울기를 왜곡시키는 원인이 됩니다.
- 예: 집 값 예측 모델에 100억짜리 집 한 채가 들어가면 모델이 휘청!
- 처리 방법:
- Z-score나 IQR(사분위범위)로 탐지
- 제거 or 로그 변환 등으로 완화
스케일링(Scaling): 선형 회귀는 특성의 단위에 민감합니다. 예: 하나는 cm, 하나는 kg이면 큰 단위에 더 영향받게 됨
- 표준화(Standardization): 평균 0, 표준편차 1 (StandardScaler)
- 정규화(MinMax): 0~1로 조정 (MinMaxScaler)
범주형 변수 인코딩: 텍스트로 된 범주형 변수는 숫자로 바꿔줘야 한다.
다중공선성(Multicollinearity) 확인: 독립변수들끼리 서로 너무 유사하면, 모델이 불안정해진다.
선형성(Linearity) 가정 검토: 선형 회귀는 "입력 변수와 출력 변수 사이에 선형 관계가 있다"는 가정을 전제로 합니다.
- 산점도 시각화로 관계 확인
- 필요시 로그 변환, 다항 특성 추가로 비선형성을 보완
1.5. 요약: 선형회귀 알고리즘, 언제 쓰면 좋을까?
- 예측하고 싶은 대상이 숫자일 때 (예: 성적, 가격, 체중 등)
- 원인(x)과 결과(y)가 비례 관계일 것 같을 때
- 데이터를 선으로 표현해보고 싶을 때
2. 기타 회귀 알고리즘
2.1. 로지스틱 회귀(Logistic Regression): 분류에 사용되는 회귀
로지스틱 회귀는 선형 결합을 sigmoid 함수에 넣어서 확률로 바꿔줍니다. 단 종속 변수들이 이항형이여야 한다.(결과가 2가지)
어떤 문제는 결과가 점수(숫자)가 아니라 합격/불합격 같은 '분류'인 경우가 있습니다. 이럴 때는 선형 회귀 대신 로지스틱 회귀를 사용합니다. 이때 단순한 직선을 사용하면 24시간 공부한 사람도 불합격(!)으로 예측할 수 있는 문제가 생깁니다.
그래서 로지스틱 회귀는 '시그모이드 함수'를 사용한다(로지스틱(=시그모이드) 함수 사용)
로지스틱 회귀는 선형 수식을 S자 모양의 함수(sigmoid)로 감쌉니다. 이 함수는 예측 결과를 0~1 사이의 확률로 출력해줍니다. 0.5보다 크면 합격, 작으면 불합격처럼 확률 기반 분류가 가능하게 된다.

| 목적 | 회귀 | 분류 |
| 결과 | 숫자 예측 (예: 점수) | 범주 예측 (예: 합/불합) |
| 대표 알고리즘 | 선형 회귀, 결정트리 회귀 | 로지스틱 회귀, SVM, KNN 등 |
| 출력 | 연속적인 값 | 0 또는 1, 혹은 다중 클래스 |
2.2. DecisionTreeRegressor
DecisionTreeRegressor는 말 그대로 의사결정나무(decision tree) 구조를 활용해 숫자 값을 예측하는 모델입니다.
- 이름은 회귀지만, 예측값은 범주(class)가 아닌 연속적인 수치입니다.
- DecisionTreeRegressor는 선형 회귀처럼 명확한 수식이 없고, 대신 조건 분기로 작동합니다.
- 선형회귀처럼 데이터를 직선으로 표현하는 대신, 조건에 따라 구간을 나누고 각 구간의 평균으로 예측을 수행합니다.
- 복잡한 데이터, 특히 비선형적이고 해석 가능한 모델이 필요한 상황에서 유용합니다.

| 구분 | DecisionTreeClassifier (분류) | DecisionTreeRegressor (회귀) |
| 결과값 | 클래스 (예: 합격/불합격) | 숫자 (예: 매출, 온도) |
| 예측 방식 | 다수 투표(Majority vote) | 평균값(Mean) |
| 손실 함수 | 엔트로피 / 지니 불순도 | 평균제곱오차(MSE) |
3. 회귀 알고리즘의 평가
| 지표 | 풀네임 | 의미 | 목적 |
| SSE | Sum of Squares Error | 예측값과 실제값 사이의 차이를 제곱해서 모두 더한 값 (총 오차량) | 모델이 얼마나 오차를 갖고 있는지 측정 |
| SSR | Sum of Squares Regression | 모델이 설명할 수 있는 분산(변동) | 평균값을 기준으로 모델이 얼마나 잘 설명했는지 |
| SST | Sum of Squares Total | 전체 데이터의 총 분산 | 데이터 자체의 총 변동량 |
| MSE | Mean Squared Error | (SSE를 데이터 수로 나눈 값) 오차 제곱의 평균 (평균 오차량) | 예측이 얼마나 틀렸는지 평균적 오차 확인 |
| MAE | Mean Absolute Error | 오차의 절대값 평균 | 실질적으로 얼마나 차이가 나는지 느낌을 줌 |
| MAPE | Mean Absolute Percentage Error | 오차를 퍼센트로 표현한 값 | 오차를 상대적인 비율로 보여줌 |
'인공지능' 카테고리의 다른 글
| Embedding(12) (1) | 2025.05.24 |
|---|---|
| Computer Vision Task & CNN (11) (2) | 2025.05.23 |
| 머신러닝 분류 알고리즘(9) (2) | 2025.05.22 |
| 머신러닝 군집 알고리즘 (8) (1) | 2025.05.22 |
| RNN: 인공지능이 말귀를 알아듣는 법(7) (0) | 2025.05.21 |