Hồi quy tuyến tính và hồi quy logistic trong Python
Hồi quy là dạng machine learning đơn giản nhất. Hồi quy tuyến tính dự đoán một con số bằng đường thẳng; hồi quy logistic đưa đường thẳng đó qua sigmoid để dự đoán xác suất của câu trả lời có/không.
Khái niệm bằng lời đơn giản
Hồi quy là dạng machine learning đơn giản nhất. Hồi quy tuyến tính dự đoán một con số bằng đường thẳng; hồi quy logistic đưa đường thẳng đó qua sigmoid để dự đoán xác suất của câu trả lời có/không.
Khớp một đường thẳng bằng bình phương tối thiểu, rồi biến một điểm số thành xác suất bằng hồi quy logistic.
Ý chính
- Hồi quy tuyến tính dự đoán giá trị liên tục như giá cả hoặc nhiệt độ.
- Hồi quy logistic dự đoán xác suất cho hai lớp.
- Cả hai đều có thể huấn luyện bằng gradient descent thay cho công thức đóng.
- Perceptron là bộ phân lớp gần giống, chỉ cập nhật trọng số khi đoán sai.
Khi nào nên sử dụng?
- Hiểu điều gì diễn ra bên trong mạng nơ-ron và các thư viện AI.
- Nắm ý tưởng trước khi tự cài đặt nó trong các thử thách tương ứng.
- Chuẩn bị cho khóa học machine learning, phỏng vấn và dự án.
Xem trực quan
Nhấp vào biểu đồ bên trái để thêm điểm và xem đường khớp nhất cập nhật. Bên phải, đổi w và b để dời ranh giới quyết định.
Code ví dụ
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'}")
Kết quả dự kiến
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
Cách hoạt động
Công thức bình phương tối thiểu tìm hệ số góc và hệ số chặn sao cho tổng bình phương khoảng cách tới các điểm nhỏ nhất, cho ra y = 1.96x + 0.14. predict_pass() tính điểm số từ số giờ học và sigmoid biến nó thành xác suất; 0.5 là ngưỡng giữa trượt và đậu.
Thay đổi giá trị và chạy chương trình bằng trình chạy Python online của CodeUtility mà không cần cài Python.
Bài tập mở rộng
Hãy sửa code theo các bài tập dưới đây để hiểu rõ cách hoạt động thay vì chỉ sao chép kết quả.
- Đổi đầu vào hoặc trọng số và đoán kết quả trước khi chạy.
- In các giá trị trung gian để theo dõi từng bước tính toán.
- Giải các thử thách được liên kết bên dưới để tự cài đặt ý tưởng.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Hồi quy tuyến tính đơn (bình phương tối thiểu) Tìm đường thẳng khớp nhất với các điểm dữ liệu bằng công thức bình phương tối thiểu. Trung bình
- Hồi quy tuyến tính bằng hạ gradient Học hệ số góc và hệ số chặn của đường thẳng bằng cách liên tục đi xuống theo sai số bình phương trung bình. Trung bình
- Dự đoán bằng hồi quy logistic Phân loại mẫu thành 0 hoặc 1 bằng cách đưa tổng có trọng số qua sigmoid và so sánh với một ngưỡng. Dễ
- Thuật toán học perceptron Huấn luyện perceptron nguyên bản, chỉ cập nhật trọng số khi dự đoán sai. Trung bình