Độ lệch embedding bằng PSI
Khi phân phối embedding đầu vào trôi dần khỏi lúc huấn luyện, chất lượng mô hình giảm.
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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: python-basics, logarithms.
Nội dung đề bài
Mô tả bài toán
Khi phân phối embedding đầu vào trôi dần khỏi lúc huấn luyện, chất lượng mô hình giảm. Chỉ số ổn định dân số (PSI) so hai phân phối đã chia bucket: PSI nhỏ nghĩa là ổn định, PSI lớn là cảnh báo trôi. Với phân phối nhỏ, PSI tính trực tiếp trên tỉ lệ từng bucket.
Yêu cầu
Viết hàm population_stability_index(expected, actual) nhận hai danh sách tỉ lệ theo bucket (mỗi danh sách cùng số bucket) và trả về PSI, bằng tổng của (actual_i - expected_i) * ln(actual_i / expected_i). Mỗi tỉ lệ được kẹp tối thiểu 1e-6 trước khi lấy log để tránh log của 0.
Quy ước nộp bài
Nộp hàm population_stability_index trong solution.py. Hệ thống gọi hàm trực tiếp và so giá trị với sai số 1e-6; không đọc stdin và không in ra stdout.
Input
- expected: tỉ lệ tham chiếu theo từng bucket.
- actual: tỉ lệ hiện tại theo từng bucket, cùng độ dài với expected.
Output
Một số thực không âm: giá trị PSI.
Ràng buộc
- Hai danh sách phải khác rỗng và cùng độ dài; nếu không thì ném ValueError.
- Không bucket nào được lấy log của 0; dùng sàn 1e-6.
- Chỉ số bucket không quan trọng; chỉ dùng cặp giá trị expected và actual.
Ví dụ 1
Input
population_stability_index(expected=[0.5, 0.5], actual=[0.5, 0.5])
Output
0.0
Ví dụ 2
Input
population_stability_index(expected=[0.5, 0.5], actual=[0.25, 0.75])
Output
0.27465307216702745
Giải thích
Với expected = [0.5, 0.5] và actual = [0.5, 0.5], hai phân phối trùng nhau nên PSI bằng 0.0.
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.
