Học tăng dần cho các mô hình phân loại trong R


11

Giả sử, tôi có một trình phân loại (Nó có thể là bất kỳ trình phân loại tiêu chuẩn nào như cây quyết định, rừng ngẫu nhiên, hồi quy logistic .. vv) để phát hiện gian lận bằng cách sử dụng mã dưới đây

library(randomForest)
rfFit = randomForest(Y ~ ., data = myData, ntree = 400) # A very basic classifier 

Say, Y is a binary outcome - Fraud/Not-Fraud

Bây giờ, tôi đã dự đoán về một tập dữ liệu chưa thấy .

pred = predict(rfFit, newData)

Sau đó, tôi đã nhận được phản hồi từ nhóm điều tra về phân loại của mình và thấy rằng tôi đã phạm sai lầm khi phân loại một vụ lừa đảo là Không gian lận (tức là Một sai lầm phủ định ) . Có cách nào mà tôi có thể để thuật toán của mình hiểu rằng nó đã phạm sai lầm không? tức là có cách nào thêm vòng lặp phản hồi vào thuật toán để nó có thể sửa lỗi không?

Một lựa chọn tôi có thể nghĩ từ trên đỉnh đầu là xây dựng một adaboost classifierbộ phân loại mới để sửa lỗi sai của cái cũ. hoặc tôi đã nghe một cái gì đó của Incremental Learninghoặc Online learning. Có bất kỳ triển khai (gói) hiện có trong R?

Đó có phải là phương pháp đúng đắn? hoặc Có cách nào khác để điều chỉnh mô hình thay vì xây dựng nó từ đầu không?


Bạn đã tìm thấy một giải pháp? Tôi có cùng một vấn đề.
Blu3nx

@ Blu3nx xin vui lòng không sử dụng câu trả lời cho câu hỏi bình luận. Câu trả lời có nghĩa là trả lời chúng.
Tim

Không phải là một câu trả lời, nhưng điều gì ngăn bạn tiếp tục với myData $ Gian lận [vị trí chính xác] = Giá trị chính xác?
Dale C

Câu trả lời:


2

Một chiến lược thúc đẩy có thể cải thiện hiệu suất của mô hình của bạn, vì vậy nó đáng để thử. Đối với việc học tăng dần / trực tuyến, tôi không biết bất kỳ gói nào trong R thực hiện nó (những người khác, xin vui lòng sửa cho tôi nếu tôi sai). Trong Scikit Learn, có các phân loại ngoài lõi cho phép học tăng dần. Tuy nhiên, nếu bạn bị ràng buộc với việc sử dụng R, bạn có thể không có lựa chọn nào khác ngoài việc viết mô hình gia tăng của riêng bạn. Trong cả hai trường hợp, việc xem xét các phân loại ngoài lõi của Scikit Learn có thể cho bạn ý tưởng về nơi bắt đầu.

Một chi tiết khác cần lưu ý là mức độ cập nhật mô hình trên một âm tính giả hoặc âm tính giả sẽ cải thiện hiệu suất của mô hình. Trong lĩnh vực gian lận, thường có hàng nghìn lần hàng triệu lần không lừa đảo sau đó là gian lận. Vì vậy, điều quan trọng là phải cố gắng học cách phân biệt chính xác mọi trường hợp gian lận, nhưng việc cập nhật một mô hình trên một trường hợp gian lận có thể sẽ không thay đổi đáng kể mô hình. Xem xét các chiến lược khác để làm cho mô hình thuộc tính quan trọng hơn đối với các trường hợp gian lận.

Cách đơn giản nhất để cải thiện mô hình được giám sát của bạn, dựa trên phản hồi từ các nhà điều tra con người sẽ là xây dựng một mô hình riêng biệt từ các trường hợp được sửa chữa (tức là các trường hợp dự đoán không chính xác sau khi được dán nhãn chính xác). Sau đó, bạn có thể để hai mô hình của mình "bỏ phiếu" về việc phân loại các trường hợp trong tương lai bằng cách tổng hợp các thành viên lớp dự đoán của chúng. Chẳng hạn, ModelA có thể tin Instance1 là [Gian lận: 0,65, Không gian lận: 0,35], trong khi ModelB tin rằng Instance1 là [Gian lận: 0,47, Không gian lận: 0,53]. Do đó, dự đoán của đoàn sẽ là [Gian lận: (0,65 + 0,47) /2=0,56, Không gian lận: (0,35 + 0,53) /2=0,44].

Nếu mô hình ban đầu của bạn hoạt động tốt hơn cơ hội, số lượng phiên bản mà nó phân loại chính xác sẽ lớn hơn số lượng được phân loại không chính xác. Do đó, bạn không muốn gán trọng lượng bằng nhau cho các mô hình nếu chúng được đào tạo về số lượng phiên bản không tương xứng. Có hai tùy chọn đơn giản để xử lý sự chênh lệch này: 1) đợi cho đến khi bạn tích lũy đủ các trường hợp đã sửa để xấp xỉ bằng số lượng mô hình ban đầu được đào tạo hoặc 2) gán trọng số cho từng mô hình dựa trên cách mô hình thực hiện trên bộ xác thực.


0

Tôi đã làm một số nghiên cứu trong quá khứ về học tập trực tuyến và gia tăng. Có một số ý tưởng bạn cần phải tính đến.

Mỗi trình phân loại có thể 'học' tăng dần, vấn đề duy nhất là với một số khó khăn hơn nhiều để làm điều đó. Không có một thuật toán học tập gia tăng như vậy, chỉ có một cách để đạt được mua này bằng cách sử dụng các thuật toán phổ biến. Thông thường, bạn sẽ chọn một trong số chúng và điều chỉnh cách bạn huấn luyện nó và cung cấp dữ liệu theo lô hoặc theo kiểu trực tuyến.

Bạn có thể thực hiện việc này theo hai cách: a) Giữ lại mô hình từ đầu mỗi khi có mẫu mới (hoặc bộ mẫu) đến. Rõ ràng điều này không lý tưởng, nhưng nếu mô hình của bạn không quá phức tạp (có nghĩa là bạn có thể thực hiện toàn bộ đào tạo giữa các trường hợp sắp tới) và bạn giới hạn kích thước tập dữ liệu của mình (loại bỏ dữ liệu cũ, dữ liệu mới hoặc dữ liệu ngẫu nhiên và giữ số lượng trường hợp đào tạo ổn định ), nó có thể hoạt động trong một số tình huống. Một ví dụ hay về cách học 'giả tăng dần' này với các máy vectơ hỗ trợ có thể được tìm thấy ở đây .

b) Tìm cách cập nhật các tham số / trọng lượng mô hình của bạn bằng cách chỉ sửa đổi 'một chút' các tham số này khi dự đoán sai. Mạng lưới thần kinh thực sự tuyệt vời cho việc này khi bạn có thể đào tạo một mô hình, lưu trọng số và sau đó đào tạo lại với các lô dữ liệu mới khi chúng đến. Ngoài ra, bạn có thể điều chỉnh tốc độ học tập để cung cấp nhiều hơn / ít liên quan hơn đến đầu vào mới của bạn. Nếu bạn có thể chọn bất kỳ thuật toán nào cho trường hợp của bạn, đây sẽ là lựa chọn của tôi. Tuy nhiên, có nhiều phương pháp khác: ví dụ: trong các phương pháp Bayes, bạn có thể sửa đổi các bản phân phối áp dụng tăng / giảm số cho các tham số nhất định (xem ví dụ này để biết ví dụ khác.)

Đọc một số và tìm kiếm các cách tiếp cận trước đó phù hợp với bất cứ điều gì bạn muốn hành vi thuật toán học tập của bạn. Ban đầu có vẻ khó khăn khi thiết lập mọi thứ cho chính mình thay vì sử dụng thư viện này hoặc thư viện đó, nhưng nó trở thành siêu máy tính khi bạn đến điểm bạn cảm thấy chịu trách nhiệm về tất cả quá trình học tập của mô hình.

Chúc may mắn!

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.