Hồi quy Logistic thuần vector hóa kèm L2 Regularization và Gradient Descent
Viết hàm logistic_regression_fit(X: np.ndarray, y: np.ndarray, lr: float = 0.1, lambda_reg: float = 0.01, epochs: int = 100) -> tuple[np.ndarray, float, list[float]]:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: sigmoid, derivatives, broadcasting.
Nội dung đề bài
Mục tiêu kiến thức
- Triển khai mô hình phân loại nhị phân Logistic Regression từ con số 0.
- Khắc phục lỗi tràn số học dấu phẩy động bằng hàm Sigmoid ổn định số học (
np.clip). - Vector hóa toàn bộ vòng lặp Gradient Descent với số hạng điều chuẩn L2 (Ridge Penalty).
Mô tả bài toán
Viết hàm logistic_regression_fit(X: np.ndarray, y: np.ndarray, lr: float = 0.1, lambda_reg: float = 0.01, epochs: int = 100) -> tuple[np.ndarray, float, list[float]]:
X: Ma trận đặc trưng kích thước (N, D).y: Vector nhãn nhị phân kích thước (N,) có giá trị trong {0, 1}.- Kiểm tra tính hợp lệ:
- Nếu
len(X) != len(y)hoặclen(X) == 0, raiseValueError("Du lieu khong hop le"). - Khởi tạo:
- Trọng số w = np.zeros(D), hệ số chệch b = 0.0.
- Trong mỗi epoch (t = 0, 1, …, epochs - 1):
- Dự báo tuyến tính: z = X · w + b.
- Sigmoid an toàn số học:
y = 11 + e-np.clip(z, -30, 30).
- Hàm mất mát Binary Cross-Entropy có điều chuẩn L2:
J = -1N ∑i=1N [yi ln(yi + 10-15) + (1 - yi) ln(1 - yi + 10-15)] + λ2N |w|2. Lưu J vào loss_history.
- Tính gradient vector hóa:
error = y - y dw = 1N (XT · error) + λN w db = 1N ∑i=1N errori
- Cập nhật tham số:
w = w - lr × dw b = b - lr × db
- Trả về
(w, b, loss_history).
Input
- Tham số:
X: np.ndarray,y: np.ndarray,lr: float,lambda_reg: float,epochs: int.
Output
- Trả về:
tuple[np.ndarray, float, list[float]].
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
logistic_regression_fit(X=[[1.0, 2.0], [2.0, 1.0], [4.0, 5.0], [5.0, 4.0]], y=[0, 0, 1, 1], epochs=10)Output
10Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
logistic_regression_fit(X=[], y=[], raises='ValueError')Output
TrueGiải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
