Python으로 배우는 선형 회귀와 로지스틱 회귀
회귀는 가장 간단한 머신러닝입니다. 선형 회귀는 직선으로 숫자를 예측하고, 로지스틱 회귀는 그 직선을 sigmoid에 통과시켜 예/아니요 답의 확률을 예측합니다.
쉬운 말로 이해하는 개념
회귀는 가장 간단한 머신러닝입니다. 선형 회귀는 직선으로 숫자를 예측하고, 로지스틱 회귀는 그 직선을 sigmoid에 통과시켜 예/아니요 답의 확률을 예측합니다.
최소제곱법으로 직선을 맞추고, 로지스틱 회귀로 점수를 확률로 바꿉니다.
핵심 아이디어
- 선형 회귀는 가격이나 기온 같은 연속적인 값을 예측합니다.
- 로지스틱 회귀는 두 클래스에 대한 확률을 예측합니다.
- 둘 다 공식 대신 경사 하강법으로 학습할 수 있습니다.
- 퍼셉트론은 비슷한 분류기로, 틀렸을 때만 가중치를 업데이트합니다.
언제 사용하나요?
- 신경망과 AI 라이브러리 내부에서 무슨 일이 일어나는지 이해합니다.
- 해당 챌린지에서 직접 구현하기 전에 아이디어를 익힙니다.
- 머신러닝 강의, 면접, 프로젝트를 준비합니다.
직접 움직여 보기
왼쪽 차트를 클릭해 점을 추가하면 가장 잘 맞는 직선이 갱신됩니다. 오른쪽에서는 w와 b를 바꿔 결정 경계를 옮길 수 있습니다.
예제 코드
main.py
import math
# Linear regression: find the line that best fits the points (least squares).
xs = [1, 2, 3, 4, 5]
ys = [2.1, 3.9, 6.2, 8.1, 9.8]
mean_x, mean_y = sum(xs) / len(xs), sum(ys) / len(ys)
slope = sum((x - mean_x) * (y - mean_y) for x, y in zip(xs, ys)) / sum((x - mean_x) ** 2 for x in xs)
intercept = mean_y - slope * mean_x
print(f"line: y = {slope:.2f}x + {intercept:.2f}")
print("predict x=6:", round(slope * 6 + intercept, 2))
# Logistic regression turns a score into a probability with the sigmoid.
def predict_pass(hours_studied, weight=1.5, bias=-4.0):
return 1 / (1 + math.exp(-(weight * hours_studied + bias)))
for hours in (1, 3, 5):
p = predict_pass(hours)
print(f"{hours} hours -> pass probability {p:.2f} -> {'pass' if p >= 0.5 else 'fail'}")
예상 출력
line: y = 1.96x + 0.14
predict x=6: 11.9
1 hours -> pass probability 0.08 -> fail
3 hours -> pass probability 0.62 -> pass
5 hours -> pass probability 0.97 -> pass
작동 원리
최소제곱 공식은 점들까지 거리의 제곱이 가장 작아지는 기울기와 절편을 찾아 y = 1.96x + 0.14를 얻습니다. predict_pass()는 공부한 시간으로 점수를 계산하고 sigmoid가 이를 확률로 바꿉니다. 0.5가 불합격과 합격의 기준입니다.
값을 변경하고 Python 설치 없이 CodeUtility 온라인 Python 컴파일러에서 실행하세요.
연습 문제
입력값과 경계 조건을 바꾸고 더 큰 데이터에서도 동작을 확인하세요.
- 입력이나 가중치를 바꾸고 실행하기 전에 출력을 예상해 보세요.
- 중간 값을 출력해 계산의 각 단계를 따라가 보세요.
- 아래에 연결된 챌린지를 풀며 아이디어를 직접 구현해 보세요.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
- 단순 선형 회귀 (최소제곱법) 최소제곱 공식으로 데이터 점들에 가장 잘 맞는 직선을 구합니다. 보통
- 경사 하강법을 이용한 선형 회귀 평균 제곱 오차를 따라 반복해서 내려가며 직선의 기울기와 절편을 학습합니다. 보통
- 로지스틱 회귀 예측 가중합을 sigmoid에 통과시키고 임곗값과 비교해 샘플을 0 또는 1로 분류합니다. 쉬움
- 퍼셉트론 학습 알고리즘 틀렸을 때만 가중치를 갱신하는 원조 퍼셉트론을 학습시킵니다. 보통