← AI 놀이터 홈으로

📏 선형회귀 (Linear Regression)

데이터를 가장 잘 설명하는 직선 하나를 찾는 문제예요. 빨간 점선(오차)이 전체적으로 가장 짧아지게 만들면 됩니다.

📖 따라하기 가이드 — 1 / 6 단계

Step 1. 데이터 살펴보기

청록색 점이 데이터(예: 공부 시간 x와 점수 y), 파란 직선이 우리의 모델이에요. 각 점에서 직선까지 이어진 빨간 점선이 그 점의 오차(잔차)입니다. 목표: 빨간 선들이 전체적으로 가장 짧아지는 직선 찾기!
🎯 미션: 빈 곳을 클릭해 점을 추가해 보세요 (점을 다시 클릭하면 삭제)
📂 데이터 꾸러미:

🖱️ 빈 곳을 클릭하면 점이 생기고, 점을 다시 클릭하면 사라져요.

📉 오차가 줄어드는 모습

🎛️ 직접 직선을 맞춰 보세요

📊 지금 상태

오차 (MSE)
0.0000
점 개수
0개
기울기 w
0.200
절편 b
6.000

오차(MSE)는 각 점에서 직선까지의 세로 거리(빨간 점선)를 제곱해서 평균 낸 값이에요. 자동 학습은 1단계에서 배운 경사하강법으로 w와 b를 조금씩 고쳐 갑니다.

🧪 이렇게 실험해 보세요

  1. 슬라이더만 움직여서 오차를 2.0 아래로 줄여 보세요 (사람 vs AI!)
  2. 그다음 자동 학습을 눌러 AI가 찾은 답과 비교해 보세요
  3. 구석에 동떨어진 점(이상치) 하나를 찍어 보세요 — 직선이 얼마나 끌려가나요?
  4. 점을 2개만 남기면 오차를 0으로 만들 수 있을까요?

🧮 수식과 파이썬

ŷ = w·x + b
w(기울기)와 b(절편), 단 두 개의 파라미터를 학습해요.
MSE = 평균( (ŷ − y)² )
예측 ŷ과 정답 y의 차이를 제곱해 평균 낸 오차예요.
🐍 파이썬 코드로 보면? (펼치기)
import torch

x = torch.tensor([1.0, 2.0, 3.0, 5.0, 7.0, 9.0])   # 입력
y = torch.tensor([2.3, 3.1, 4.2, 5.5, 7.0, 8.9])   # 정답

w = torch.zeros(1, requires_grad=True)   # 기울기
b = torch.zeros(1, requires_grad=True)   # 절편
optimizer = torch.optim.SGD([w, b], lr=0.01)

for epoch in range(200):
    y_pred = w * x + b                    # 예측 (직선)
    loss = ((y_pred - y) ** 2).mean()     # 오차 (MSE)
    optimizer.zero_grad()
    loss.backward()                       # 기울기 자동 계산
    optimizer.step()                      # 경사하강법 한 걸음
print(f"학습 결과: y = {w.item():.2f}x + {b.item():.2f}")