Nguồn hình ảnh Hồi quy Poisson với Python từ đầu để hiểu rõ hơn về nó. Một thư viện Python hữu ích có tên StatSmodels có thể thực hiện phân tích hồi quy ngay lập tức. Tuy nhiên, tôi đã cố gắng thực hiện nó mà không sử dụng thư viện Python để có sự hiểu biết sâu sắc hơn. Trong bài viết này, chúng tôi sẽ đề cập đến việc giải thích đơn giản về hồi quy Poisson, các khái niệm xác suất quan trọng và cách viết mã mà không cần thư viện Python. Hồi quy Poisson được sử dụng để mô hình các biến phản hồi [giá trị y] được tính. Nó cho bạn biết những biến giải thích nào có ảnh hưởng có ý nghĩa thống kê đối với biến phản hồi. Dữ liệu đếm số lần số lần một hiện tượng nhất định đã xảy ra trong một khoảng thời gian nhất định. Ví dụ: số vụ tai nạn và số lượng email nhận được mỗi ngày. Phân tích hồi quy chung giả định rằng biến khách quan [nghĩa là phần dư] tuân theo phân phối bình thường, trong khi hồi quy Poisson giả định phân phối Poisson. Có vẻ xấu nếu các biến theo phân phối bình thường được giả định cho phân phối Poisson. Trong phân tích hồi quy, các hệ số được dự đoán như sau [1] 𝜃 = 𝑎 + 𝑏𝑥 Khi biến 𝑥 xuất hiện, ý tưởng là tuân theo phân phối bình thường của giá trị trung bình. Áp dụng điều này cho phân phối Poisson, tôi muốn theo dõi phân phối Poisson với giá trị trung bình khi biến 𝑥 đến. Hơn nữa, vì giá trị trung bình của phân phối Poisson là không âm tính, nên những điều sau đây có thể được xem xét như sau [2] 𝜃 = exp [𝑎 + 𝑏𝑥] Nếu đó là một hàm theo cấp số nhân, 𝑥 sẽ tích cực bất kể 𝑥, hoặc B đến. Tại thời điểm này, nó có thể được chuyển đổi như sau [3] log𝜃 = 𝑎 + 𝑏𝑥 Phía bên trái được biến đổi được gọi là hàm liên kết [hàm liên kết log]. Và phía bên phải được gọi là dự đoán tuyến tính. Trong thực tế, [1] không chuyển đổi bất cứ điều gì, tuy nhiên chức năng liên kết không chuyển đổi bất cứ điều gì, mối quan hệ này giữ vững, sau đó nó được gọi là chức năng liên kết nhận dạng.Poisson là gì?
Nó được dự đoán như thế nào
Cách tìm hệ số
Hãy cùng tìm thấy các hệ số 𝑎 và B trong phương trình [2].
Giả sử dữ liệu bây giờ có biến giải thích = {1, 𝑥2,} và biến mục tiêu có 𝑦 = {1, 𝑦2 𝑦𝑛}. Những gì chúng tôi muốn làm là dự đoán từng tham số bằng một biến giải thích, chẳng hạn như giả định phân phối Poisson với giá trị trung bình 𝑦1 khi 𝑥1 đến trong.
Theo thuật ngữ toán học, chúng tôi muốn tìm các hệ số 𝑎 và B tối đa hóa xác suất mà biến giải thích sẽ nhận ra biến khách quan hiện tại. Do đó, có vẻ tốt hơn để tìm các hệ số 𝑎 và B tối đa hóa hàm khả năng. Do đó, tối đa hóa công thức sau.
Ý nghĩa của 𝑦𝑖 [𝑦𝑖 |] đại diện cho xác suất biến giải thích sẽ xảy ra trong phân phối poisson của giá trị trung bình, khi biến giải thích 𝑥𝑖 đi vào, biến đổi bởi các hệ số 𝑎 và 𝑏 để tìm giá trị trung bình. Hãy nhớ rằng 𝜃𝑖 là
= exp [𝑎 + 𝑏𝑥𝑖]..
Nó dễ dàng hơn để chuyển đổi logarit sang phương trình hơn là tính toán nó như nó là.
Khi nói đến C𝑜𝑛𝑠𝑡 ở phía bên phải, ngoại trừ tham số, nó không liên quan gì đến tối đa hóa. Điều này có thể được bỏ qua khi tối đa hóa.
Thực hiện trong Python
Tôi đã sử dụng dữ liệu từ liên kết như sau
Hãy cùng thử phân tích hồi quy để xem số lượng hạt trung bình thay đổi như thế nào với kích thước của hoa!
Sau đó, xác định chức năng khả năng nhật ký mà chúng tôi muốn tối đa hóa lần này.
Nếu bạn có một ý tưởng tốt hơn cho mã hóa, xin vui lòng cho tôi biết.
Dữ liệu gọi [‘Y,] cung cấp cho bạn một vectơ của các biến khách quan và dữ liệu gọi [‘ X,] cung cấp cho bạn một vectơ các biến giải thích. Sau đó, lấy từng cái theo chỉ số và thêm chúng vào TOTALL, và trừ chúng vào cuối.
Liên quan đến điểm trừ này, tôi thấy rằng chỉ có chức năng tối ưu hóa SCIPY, vì vậy tôi đã làm cho nó giảm thiểu với trừ đi. Trước khi tối ưu hóa, chúng tôi cần các hệ số. Hiện tại, hãy để xác định ngẫu nhiên.
Việc tối ưu hóa bây giờ đã hoàn tất! Cuối cùng, hãy để âm mưu nó trên một biểu đồ!
Tôi có biểu đồ này
Nếu bạn có một độ dốc như vậy, nó hoạt động tốt. Chúng ta có thể thấy rằng số lượng hạt đã thay đổi [tăng] đến một mức độ nào đó tùy thuộc vào kích thước của hoa.
Xin chào! Vì bài viết đầu tiên của tôi, tôi sẽ cố gắng tạo ra gần như toàn bộ suy luận của mô hình hồi quy Poisson, đây cũng là một khóa học cho lớp nhận dạng mẫu của tôi, vì vậy, hãy thử điều này ở nhà. Trong bài đăng này, chúng tôi sẽ đề cập:
1. Hồi quy Poisson là gì?
Chúng ta đã biết về hồi quy tuyến tính, giúp chúng ta trả lời các câu hỏi như một ngôi nhà với những đặc điểm này sẽ có giá bao nhiêu? Hoặc hồi quy logistic, được sử dụng để mô hình hóa xác suất của một lớp hoặc sự kiện nào đó hiện có như Pass/Fail, Win/Lose, Alive/Dead hoặc Healthy/Sick/Sick.
Nhưng, điều gì xảy ra khi các câu hỏi là có bao nhiêu người chi phí sẽ đến ngày hôm nay ?,, Có bao nhiêu người xếp hàng tại cửa hàng tạp hóa? Người mẫu.many…”, and one way to answer these questions is using the Poisson Regression Model.
Hồi quy Poisson được sử dụng để mô hình hóa dữ liệu. Đối với điều này, chúng tôi giả sử biến đáp ứng Y có phân phối Poisson và giả sử logarit của giá trị dự kiến của nó có thể được mô hình hóa bằng một kết hợp tuyến tính của các tham số chưa biết.
2. Phân phối Poisson như một phần của gia đình theo cấp số nhân
Được rồi, điều đầu tiên trước tiên, chúng ta có thể thể hiện phân phối Poisson trên dạng gia đình theo cấp số nhân không? Chà, chúng ta có thể tìm thấy điều đó. Đầu tiên, nếu chúng ta có một biến ngẫu nhiên x sao cho
First, if we have a random variable X such that
Chúng tôi biết chúng tôi có thể thể hiện chức năng xác suất của nó như
Được rồi, bây giờ hãy để Lừa làm điều này, giả sử chúng ta có một biến ngẫu nhiên y được phân phối dưới dạng Poisson với một tham số λ
với chức năng xác suất của nó
Chúng ta biết rằng
và như vậy
Nhưng đợi một phút, phương trình [2] có dạng giống như phương trình [1]
và như vậy
Nhưng đợi một phút, phương trình [2] có dạng giống như phương trình [1]
Cuối cùng chúng ta có thể nói
3. Phương pháp log-khả năng đăng nhập tối đa
Được chứ! Bây giờ, giả sử chúng tôi có một biến ngẫu nhiên y, chẳng hạn như
và cho [3] bây giờ chúng ta có thể thể hiện chức năng xác suất của nó là
Hồi tưởng
và như vậy
Nhưng đợi một phút, phương trình [2] có dạng giống như phương trình [1]
Cuối cùng chúng ta có thể nói
3. Phương pháp log-khả năng đăng nhập tối đa
Được chứ! Bây giờ, giả sử chúng tôi có một biến ngẫu nhiên y, chẳng hạn như
và cho [3] bây giờ chúng ta có thể thể hiện chức năng xác suất của nó là
Hồi tưởng
Và chúng tôi biết cho GLM rằng
và như vậy
Nhưng đợi một phút, phương trình [2] có dạng giống như phương trình [1]
Cuối cùng chúng ta có thể nói
3. Phương pháp log-khả năng đăng nhập tối đa
Được chứ! Bây giờ, giả sử chúng tôi có một biến ngẫu nhiên y, chẳng hạn như
và cho [3] bây giờ chúng ta có thể thể hiện chức năng xác suất của nó là
và như vậy
Nhưng đợi một phút, phương trình [2] có dạng giống như phương trình [1]
Cuối cùng chúng ta có thể nói
3. Phương pháp log-khả năng đăng nhập tối đa
Được chứ! Bây giờ, giả sử chúng tôi có một biến ngẫu nhiên y, chẳng hạn như
và cho [3] bây giờ chúng ta có thể thể hiện chức năng xác suất của nó là
Hồi tưởng
Và chúng tôi biết cho GLM rằng
Được rồi, bây giờ nếu chúng ta có một bộ quan sát m
nơi chúng ta giả định cho mỗi y^[i] là i.i.d. Và chúng tôi đang tìm cách tối đa hóa chức năng xác suất sau
Bây giờ chúng tôi sử dụng bí mật của mình không phải là vũ khí bí mật, phương pháp khả năng tối đa
và đối với phương pháp log-khả năng đăng nhập tối đa
Vì log [1/y!] Không phụ thuộc vào W ∗ hoặc B ∗
def loss[x, y, w, b]:
y_hat = np.exp[x @ w + b]
error = [y_hat - np.log[y_hat] * y].mean[]
return error
và vì chúng tôi muốn giảm thiểu thay vì tối đa hóa
def grad[x, y, w, b]:
M, n = x.shape
y_hat = np.exp[x @ w + b]
dw = [x.T @ [y_hat - y]] / M
db = [y_hat - y].mean[]
return dw, dbdef gradient_descent[x, y, w_0, b_0, alpha, num_iter]:
w, b = w_0.copy[], b_0
hist = np.zeros[num_iter]
M, n = x.shapefor iter in range[num_iter]:
dw, db = grad[x, y, w, b]
w -= alpha * dw
b -= alpha * db
hist[iter] = loss[x, y, w, b]return w, b, hist
Nhưng chúng tôi biết
Và bởi vì chúng tôi muốn trung bình