Menu
CoddyTech

Phần dư

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 35 trên 64.

Chương này vẽ đường xu hướng qua dữ liệu, dùng đường đó để dự đoán và chấm điểm. Đây là kết quả:

Năm công việc cắt cỏ được biểu thị bằng các chấm, số phút theo diện tích bãi cỏ, cùng một đường xu hướng màu cam đi qua các chấm và một ngôi sao xanh lá lớn trên đường dự đoán 50 phút cho bãi cỏ mới có diện tích 10

Một đường thẳng khớp tốt đến mức nào? Một dịch vụ chăm sóc bãi cỏ ước tính mỗi công việc mất 4.5 * area + 5 phút. Mỗi khoảng trống màu đỏ là một phần dư: giá trị thực tế trừ đi giá trị dự đoán.

Năm công việc chăm sóc bãi cỏ và đường thẳng ước tính, với khoảng cách thẳng đứng màu đỏ từ mỗi điểm đến đường thẳng, được ghi nhãn +6, -5, +3.5, -7 và +3.5

Bình phương chúng rồi cộng lại để tính điểm của đường thẳng:

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())

Kết quả in ra là:

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

Phép bình phương khiến +6 và -6 không triệt tiêu nhau. Tổng bình phương phần dư (sum of squared residuals) càng nhỏ thì đường thẳng càng phù hợp. Mô hình học bằng cách giảm tổng này.

challenge icon

Thử thách

Trung bình

Một công ty chuyển nhà ước tính thời gian chuyển nhà dựa trên số lượng thùng. boxes và hours lưu dữ liệu của tám lần chuyển nhà trước đây, còn chương trình đọc hai đường thẳng dự đoán: slope1, intercept1, rồi đến slope2, intercept2.

  1. Đánh giá từng đường thẳng bằng tổng bình phương phần dư.
  2. In cả hai tổng, làm tròn đến 2 chữ số thập phân, và đường thẳng tốt hơn như bên dưới.

Với hai đường thẳng 0.16 * boxes + 0.8 và 0.12 * boxes + 2.5:

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

Tự làm thử

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())

# Viết code bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thống kê cho machine learning

Tự luyện tập: Trình biên dịch Python online