Khái niệm AI với Python

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ụ

Chạy code →
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'}")

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ả.

  1. Đổi đầu vào hoặc trọng số và đoán kết quả trước khi chạy.
  2. In các giá trị trung gian để theo dõi từng bước tính toán.
  3. Giải các thử thách được liên kết bên dưới để tự cài đặt ý tưởng.
Chạy trong Python IDE →

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.

Tất cả thử thách