Menu
CoddyTech

잔차

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 35번째.

이 장에서는 데이터를 통해 추세선을 그리고, 이를 사용해 예측하고 평가합니다. 이 내용은 다음과 같이 이어집니다:

잔디 작업 5건이 점으로 표시되어 있고, 잔디 면적에 따른 작업 시간과 점들을 관통하는 주황색 추세선이 있으며, 새 잔디 면적이 10일 때 50분이 걸릴 것으로 예측하는 선 위의 커다란 초록색 별

직선은 얼마나 잘 맞을까요? 잔디 관리 업체는 작업당 4.5 * area + 5분이 걸린다고 추정합니다. 각 빨간색 간격은 잔차로, 실제값에서 예측값을 뺀 것입니다.

다섯 가지 잔디 관리 작업과 추정 직선, 각 점에서 직선까지의 빨간색 수직 간격에 +6, -5, +3.5, -7 및 +3.5로 표시되어 있음

제곱한 다음 더해 직선의 점수를 계산하세요:

area = np.array([4, 6, 9, 12, 15])
minutes = np.array([29, 27, 49, 52, 76])
residuals = minutes - (4.5 * area + 5)
print(residuals)
print((residuals ** 2).sum())

다음과 같이 출력됩니다:

[ 6.  -5.   3.5 -7.   3.5]
134.5

제곱하면 +6과 -6이 서로 상쇄되지 않습니다. 이 잔차 제곱합이 작을수록 직선이 더 잘 맞습니다. 모델은 이 값을 줄이는 방식으로 학습합니다.

challenge icon

챌린지

중급

이삿짐 업체는 상자 수를 바탕으로 이사에 걸리는 시간을 추정합니다. boxes와 hours에는 과거 이사 8건의 데이터가 들어 있고, 프로그램은 추정한 두 직선의 값을 읽습니다. slope1, intercept1, 이어서 slope2, intercept2를 읽습니다.

  1. 잔차 제곱합으로 각 직선의 점수를 계산합니다.
  2. 아래와 같이 두 합계를 소수점 이하 2자리까지 반올림해 출력하고, 더 나은 직선을 출력합니다.

직선 0.16 * boxes + 0.8과 0.12 * boxes + 2.5의 경우:

Line 1 SSR: 0.57
Line 2 SSR: 4.1
Better: line 1

직접 해보기

import numpy as np

boxes = np.array([10, 18, 25, 32, 40, 47, 55, 60])
hours = np.array([2.5, 3.5, 5.0, 5.5, 7.0, 8.0, 9.5, 10.0])
slope1 = float(input())
intercept1 = float(input())
slope2 = float(input())
intercept2 = float(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러