Binning tối ưu đối với một biến trả lời nhất định


11

Tôi đang tìm kiếm phương pháp tạo thùng tối ưu (rời rạc) của một biến liên tục đối với biến nhị phân (đích) phản ứng nhất định và với số lượng khoảng tối đa là một tham số.

ví dụ: Tôi có một tập hợp các quan sát của những người có biến "chiều cao" (số liên tục) và "has_back_pains" (nhị phân). Tôi muốn phân tách chiều cao thành 3 khoảng (nhiều nhóm) nhiều nhất với tỷ lệ người bị đau lưng khác nhau, để thuật toán tối đa hóa sự khác biệt giữa các nhóm (ví dụ như với các hạn chế nhất định, mỗi khoảng có ít nhất x quan sát).

Giải pháp rõ ràng cho vấn đề này là sử dụng cây quyết định (mô hình một biến đơn giản), nhưng tôi không thể tìm thấy bất kỳ hàm nào trong R có "số nhánh tối đa" làm tham số - tất cả chúng đều chia biến. thành 2 gropus (<= x và> x). Công cụ khai thác SAS có tham số "chi nhánh tối đa" nhưng tôi đang tìm kiếm một giải pháp phi thương mại.

một số biến của tôi chỉ có một vài giá trị duy nhất (và có thể được coi là các biến rời rạc) nhưng tôi muốn phân tách chúng thành một số khoảng nhỏ hơn.

Giải pháp gần nhất cho vấn đề của tôi được triển khai trong gói smbinning trong R (dựa trên chức năng ctree từ gói bên) nhưng nó có hai nhược điểm: không thể đặt số lượng khoảng (tuy nhiên, bạn có thể tìm cách khắc phục bằng cách thay đổi tham số p) và nó không hoạt động khi vectơ dữ liệu có ít hơn 10 giá trị duy nhất. Dù sao, bạn có thể thấy đầu ra ví dụ ở đây (cột Cutpoint và Odds rất quan trọng):

Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate   Odds  LnOdds     WoE     IV
1   <= 272   9081     169   8912      9081        169      8912 0.1874  0.9814 0.0190 -3.9653 -0.6527 0.0596
2   <= 311   8541     246   8295     17622        415     17207 0.1762  0.9712 0.0297 -3.5181 -0.2055 0.0068
3   <= 335   2986     163   2823     20608        578     20030 0.0616  0.9454 0.0577 -2.8518  0.4608 0.0163
4  Missing  27852    1125  26727     48460       1703     46757 0.5747  0.9596 0.0421 -3.1679  0.1447 0.0129
5    Total  48460    1703  46757        NA         NA        NA 1.0000  0.9649 0.0364 -3.3126  0.0000 0.0956

Ồ, tôi hoàn toàn biết rằng việc tạo thùng dẫn đến mất thông tin và có các phương pháp tốt hơn, nhưng tôi sẽ sử dụng nó để trực quan hóa dữ liệu và coi các biến đó là một yếu tố.


SPSS có lệnh Binning tối ưu. Google SPSS Algorithms Optimal Binning.
ttnphns

Bạn đã xem bài đăng này stackoverflow.com/questions/7018954/ Từ Nó đề cập đến việc sử dụng Giá trị thông tin nhưng không rõ ý nghĩa của IV = 1, hoặc không giải thích làm thế nào để có được điều đó
adam

Câu trả lời:


6

Trong khi đọc cuốn sách này ở đây (Nagarajan, 2103 [1]), tôi đã xem qua thông tin có giá trị mà tôi đang xấu hổ trích dẫn ở đây:

  • Sử dụng kiến ​​thức trước về dữ liệu. Ranh giới của các khoảng được xác định, cho mỗi biến, tương ứng với các kịch bản trong thế giới thực khác nhau đáng kể, chẳng hạn như nồng độ của một chất gây ô nhiễm cụ thể (vắng mặt, nguy hiểm, gây chết người) hoặc các lớp tuổi (trẻ em, người lớn, người già).

  • Sử dụng phương pháp phỏng đoán trước khi tìm hiểu cấu trúc của mạng. Một số ví dụ là: Sturges, Freedman-Diaconis hoặc Scott quy tắc (Venables và Ripley, 2002).

  • Chọn số lượng khoảng và ranh giới của chúng để cân bằng độ chính xác và mất thông tin (Kohavi và Sahami, 1996), một lần nữa một biến tại một thời điểm và trước khi cấu trúc mạng đã được học. Một cách tiếp cận tương tự xem xét các cặp biến được trình bày trong Hartemink (2001).

  • Thực hiện học tập và phân biệt lặp đi lặp lại cho đến khi không có cải thiện nào được thực hiện (Friedman và Goldszmidt, 1996).

Các chiến lược này thể hiện sự đánh đổi khác nhau giữa độ chính xác của biểu diễn rời rạc của dữ liệu gốc và hiệu quả tính toán của phép biến đổi.

Thông tin này được cung cấp, trong trường hợp bạn muốn biện minh cho phương thức tạo thùng bạn muốn sử dụng và không chỉ sử dụng một gói trực tiếp.

[1]: Nagarajan R. (2013),
Bayesian Networks in R, với các ứng dụng trong Spring Biology
Springer


3

Dùng thử gói Thông tin cho R. https://cran.r-project.org/web/packages/Inif/Inif.pdf https://cran.r-project.org/web/packages/Inif/vignettes/Inif-vignette .html

Gói thông tin có chức năng tính toán WoE và IV (số thùng là một tham số linh hoạt, mặc định là 10) và là một công cụ tiện dụng để khám phá dữ liệu và do đó để tạo thùng. Tuy nhiên, đầu ra không chứa tỷ lệ cược; và không thể chỉ định số 0 là một thùng riêng biệt (đối với các nhiệm vụ của tôi, số 0 thường là một thùng hợp lệ theo quyền riêng của nó); và thật tuyệt khi nhận được đầu ra từ gói Thông tin giống như của smbinning. Tuy nhiên, người ta nói về các tính năng dễ sử dụng nhưng vẫn không có sẵn của gói Thông tin, các gói R khác cho WoE và IV (woe, klaR) đã không gây ấn tượng về các công cụ hữu ích như gói Thông tin, thực tế tôi không chạy được chúng sau 2-3 lần thử. Đối với nhiệm vụ dscretisation / binning, các gói Thông tin và smbinning có thể phối hợp tốt với nhau,

Để tạo bin thực tế, tôi đã sử dụng hàm data.table thay vì hàm cut (). Xem liên kết đến bài đăng của tôi dưới đây, nó chứa mã chung ở dưới cùng của câu hỏi ban đầu: /programming/34939845/binning-variabled-in-a-dataframe-with-input-bin-data- từ một khung dữ liệu khác

Hy vọng nó giúp.


@kjetil, kjetil b halvorsen, bạn nói đúng. Gói thông tin có chức năng tính toán WoE và IV (số thùng là một tham số linh hoạt, mặc định là 10) và là một công cụ tiện dụng để khám phá dữ liệu và hậu quả cho việc tạo thùng. Tuy nhiên, đầu ra không chứa Odds. Và không thể chỉ định số 0 là một thùng riêng biệt (đối với các nhiệm vụ của tôi, số 0 thường là một thùng hợp lệ theo quyền riêng của nó). Các gói R khác cho WoE và IV (woe, klaR) không tạo ấn tượng về các công cụ hữu ích như gói Thông tin. Vì vậy, gói Thông tin và smbinning có thể phối hợp độc đáo với nhau.
Akonza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.