Để giải thích một giải pháp cho vấn đề siêu chiến binh này, tôi đã triển khai một mô hình gamma-Dirichlet-multinomial phân cấp trong PyMC3. Gamma trước cho Dirichlet được chỉ định và lấy mẫu theo bài đăng trên blog của Ted Dunning .
Mô hình tôi triển khai có thể được tìm thấy tại Gist này nhưng cũng được mô tả bên dưới:
Đây là mô hình phân cấp (gộp) của Bayes cho xếp hạng phim. Mỗi bộ phim có thể được đánh giá theo thang điểm từ 0 đến 5. Mỗi bộ phim được đánh giá nhiều lần. Chúng tôi muốn tìm một bản phân phối xếp hạng mượt mà cho mỗi bộ phim.
Chúng tôi sẽ tìm hiểu một phân phối trước cấp cao nhất (siêu nhân) về xếp hạng phim từ dữ liệu. Mỗi bộ phim sau đó sẽ có ưu tiên riêng được làm mịn bởi cấp cao nhất này trước. Một cách nghĩ khác về điều này là việc ưu tiên xếp hạng cho mỗi bộ phim sẽ bị thu hẹp về phía phân phối theo cấp độ nhóm hoặc gộp lại.
Nếu một bộ phim có phân phối xếp hạng không điển hình, phương pháp này sẽ thu hẹp xếp hạng thành thứ gì đó phù hợp hơn với những gì được mong đợi. Hơn nữa, điều này đã học trước có thể hữu ích đối với các phim bootstrap có ít xếp hạng để cho phép chúng được so sánh một cách có ý nghĩa với các phim có nhiều xếp hạng.
Mô hình như sau:
γk=1...K∼Gamma(α,β)
θm=1...M∼DirichletM(cγ1,...,cγK)
zm=1...M,n=1...Nm∼CategoricalM(θm)
Ở đâu:
- K số mức xếp hạng phim (ví dụ: ngụ ý xếp hạng 0, ..., 5)K=6
- M số phim được đánh giá
- Nm số xếp hạng cho phimm
- α=1/K để làm cho bộ sưu tập gamma rvs hoạt động như một hệ số mũ
- β Tham số tỷ lệ cho cấp cao nhất theo cấp số nhân trước
- c tham số nồng độ cho thấy sức mạnh của cấp cao nhất trước
- γk cấp cao nhất trước cấp độ xếp hạngk
- θm phim trước cho các mức xếp hạng (đa biến với thứ nguyên = )K
- zmn rating cho phimnm