การเรียนรู้ที่เพิ่มขึ้นสำหรับแบบจำลองการจำแนกใน R


11

สมมติว่าฉันมีตัวจําแนก(อาจเป็นตัวจําแนกมาตรฐานใด ๆ เช่นต้นไม้ตัดสินใจ, ฟอเรสต์แบบสุ่ม, การถดถอยโลจิสติกและอื่น ๆ )สำหรับการตรวจจับการฉ้อโกงโดยใช้รหัสด้านล่าง

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

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

ตอนนี้ฉันได้คาดการณ์ชุดข้อมูลที่มองไม่เห็น

pred = predict(rfFit, newData)

แล้วฉันจะได้รับการตอบรับจากทีมสืบสวนเกี่ยวกับการจำแนกของฉันและพบว่าฉันได้ทำผิดพลาดของการจำแนกประเภทที่หลอกลวงไม่ทุจริต (เช่นหนึ่งลบเท็จ ) มีอยู่หรือไม่ที่ฉันสามารถให้อัลกอริทึมของฉันเข้าใจว่ามันทำผิดพลาดหรือไม่? เช่นวิธีใดในการเพิ่มลูปข้อเสนอแนะไปยังอัลกอริทึมเพื่อให้สามารถแก้ไขข้อผิดพลาดได้

ทางเลือกหนึ่งที่ฉันสามารถนึกได้จากส่วนบนของหัวคือการสร้างตัวadaboost classifierแยกประเภทใหม่เพื่อแก้ไขข้อผิดพลาดของตัวเก่า หรือผมเคยได้ยินอะไรบางอย่างหรือIncremental Learning Online learningมีการใช้งาน (แพ็คเกจ) ที่มีอยู่Rหรือไม่?

มันเป็นแนวทางที่ถูกต้องหรือไม่? หรือมีวิธีอื่นใดในการปรับแต่งโมเดลแทนการสร้างจากศูนย์?


คุณหาทางออกหรือไม่? ฉันมีปัญหาเดียวกัน
Blu3nx

@ Blu3nx โปรดอย่าใช้คำตอบสำหรับการแสดงความคิดเห็นคำถาม คำตอบมีขึ้นเพื่อตอบคำถามเหล่านี้
ทิม

ไม่ใช่คำตอบ แต่สิ่งใดที่ทำให้คุณหยุดการฉ้อโกง myData $ Fraud [positionofincorrectvariable] = ค่าที่ถูกต้อง?
Dale C

คำตอบ:


2

กลยุทธ์การส่งเสริมอาจปรับปรุงประสิทธิภาพของโมเดลของคุณดังนั้นจึงควรลองดู ด้วยความเคารพต่อการเรียนรู้ที่เพิ่มขึ้น / ออนไลน์ฉันไม่ได้ตระหนักถึงแพคเกจใด ๆ ใน R ที่ใช้มัน (อื่น ๆ โปรดแก้ไขให้ฉันถ้าฉันผิด) ใน Scikit Learn มีตัวแยกประเภทนอกหลักที่อนุญาตให้มีการเรียนรู้เพิ่มเติม อย่างไรก็ตามหากคุณเชื่อมโยงกับการใช้ R คุณอาจไม่มีทางเลือกนอกจากเขียนแบบเพิ่มหน่วยของคุณเอง ไม่ว่าในกรณีใดการดูตัวแยกประเภท out-of-core หลักของ Scikit Learn อาจทำให้คุณทราบว่าจะเริ่มจากตรงไหน

รายละเอียดที่ควรทราบอีกประการหนึ่งคือขอบเขตที่การปรับปรุงโมเดลบนค่าบวกปลอมหรือค่าลบเท็จจะปรับปรุงประสิทธิภาพของโมเดล ในโดเมนของการฉ้อโกงโดยทั่วไปจะมีอีกหลายพันถึงล้านเท่าของอินสแตนซ์ของการไม่หลอกลวงและการฉ้อโกง ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องพยายามเรียนรู้ที่จะแยกแยะการโกงทุกครั้งอย่างถูกต้อง แต่การปรับปรุงแบบจำลองในการฉ้อโกงครั้งเดียวอาจจะไม่เปลี่ยนรูปแบบอย่างมีนัยสำคัญ พิจารณากลยุทธ์อื่น ๆ ในการนำโมเดลมาใช้เพื่อให้ความสำคัญกับอินสแตนซ์ของการฉ้อโกง

วิธีที่ตรงไปตรงมาที่สุดในการปรับปรุงแบบจำลองภายใต้การดูแลของคุณโดยอิงจากความคิดเห็นจากผู้ตรวจสอบของมนุษย์ก็คือการสร้างแบบจำลองแยกต่างหากจากอินสแตนซ์ที่ถูกต้อง (เช่นอินสแตนซ์ที่คาดการณ์ไม่ถูกต้อง จากนั้นคุณสามารถมี "การลงคะแนน" ทั้งสองแบบของคุณเกี่ยวกับการจำแนกอินสแตนซ์ในอนาคตโดยการรวมการเป็นสมาชิกคลาสที่คาดการณ์ไว้ ตัวอย่างเช่นModelAอาจเชื่อว่าInstance1คือ [การฉ้อโกง: 0.65, การไม่หลอกลวง: 0.35] ขณะที่ModelBเชื่อว่าInstance1คือ [การฉ้อโกง: 0.47, การไม่หลอกลวง: 0.53] คำทำนายของทั้งมวลจะเป็น [การหลอกลวง: (0.65 + 0.47) /2=0.56, การไม่หลอกลวง: (0.35 + 0.53) /2=0.44]

หากโมเดลดั้งเดิมของคุณทำงานได้ดีกว่าโอกาสจำนวนอินสแตนซ์ที่จัดประเภทอย่างถูกต้องจะมากกว่าจำนวนที่จำแนกอย่างไม่ถูกต้อง ดังนั้นคุณไม่ต้องการให้น้ำหนักเท่ากับโมเดลหากได้รับการฝึกอบรมตามจำนวนอินสแตนซ์ที่ไม่สมส่วน มีสองตัวเลือกที่ตรงไปตรงมาเพื่อจัดการกับความไม่เสมอภาคนี้: 1) รอจนกว่าคุณจะได้รับอินสแตนซ์ที่ถูกต้องเพียงพอที่จะประมาณจำนวนเท่ากับรุ่นเดิมที่ได้รับการฝึกฝนหรือ 2) กำหนดน้ำหนักให้กับแต่ละรุ่น


0

ฉันเคยทำการวิจัยเกี่ยวกับการเรียนรู้ออนไลน์และการเรียนรู้เพิ่มเติม มีแนวคิดบางอย่างที่คุณต้องคำนึงถึง

ตัวแยกแยะทุกคนสามารถเรียนรู้แบบเพิ่มหน่วยได้ แต่ปัญหาเดียวก็คือการที่บางคนยากที่จะทำเช่นนั้น ไม่มีอัลกอริทึมการเรียนรู้ที่เพิ่มขึ้นเช่นนี้เพียงวิธีการซื้อนี้โดยใช้อัลกอริทึมทั่วไป โดยปกติแล้วคุณจะเลือกหนึ่งในนั้นและปรับเปลี่ยนวิธีการฝึกอบรมและป้อนข้อมูลในชุดหรือในแบบออนไลน์

คุณสามารถทำได้สองวิธี: a) ฝึกฝนแบบจำลองใหม่ตั้งแต่เริ่มต้นทุกครั้งที่มีตัวอย่างใหม่ (หรือชุดตัวอย่าง) มาถึง เห็นได้ชัดว่านี่ไม่เหมาะ แต่ถ้าแบบจำลองของคุณไม่ซับซ้อนเกินไป (หมายถึงคุณสามารถทำการฝึกอบรมทั้งหมดระหว่างอินสแตนซ์ที่กำลังมาถึง) และคุณ จำกัด ขนาดชุดข้อมูลของคุณ (ทิ้งข้อมูลเก่าข้อมูลใหม่หรือข้อมูลสุ่มและรักษาอินสแตนซ์ ) มันสามารถทำงานได้ในบางสถานการณ์ เป็นตัวอย่างที่ดีของนี้ 'หลอกเพิ่มขึ้น' การเรียนรู้ด้วยการสนับสนุนเครื่องเวกเตอร์สามารถพบได้ที่นี่

b) ค้นหาวิธีในการอัปเดตพารามิเตอร์ / ตุ้มน้ำหนักรุ่นของคุณโดยแก้ไขพารามิเตอร์เหล่านี้เพียงเล็กน้อยเมื่อการทำนายผิด Neural Nets เป็นธรรมชาติที่ยอดเยี่ยมสำหรับสิ่งนี้เพราะคุณสามารถฝึกนางแบบประหยัดน้ำหนักแล้วฝึกใหม่ด้วยข้อมูลใหม่ ๆ นอกจากนี้คุณสามารถปรับแต่งอัตราการเรียนรู้เพื่อให้ความเกี่ยวข้องมากขึ้น / น้อยลงกับอินพุตใหม่ของคุณ หากคุณสามารถเลือกอัลกอริทึมสำหรับกรณีของคุณนี่เป็นทางเลือกของฉัน อย่างไรก็ตามมีวิธีการอื่น ๆ อีกมากมายเช่นในแนวทางแบบเบย์คุณสามารถแก้ไขการแจกแจงโดยใช้การเพิ่ม / ลดจำนวนตัวเลขในพารามิเตอร์บางตัว (ดูตัวอย่างนี้สำหรับตัวอย่างอื่น)

ทำการอ่านและค้นหาแนวทางก่อนหน้าซึ่งตรงกับสิ่งที่คุณต้องการพฤติกรรมการเรียนรู้อัลกอริทึมของคุณ ดูเหมือนว่าในตอนแรกจะตั้งค่าทุกอย่างให้กับตัวเองแทนที่จะใช้สิ่งนี้หรือห้องสมุด แต่มันจะกลายเป็น supercool เมื่อคุณมาถึงจุดที่คุณรู้สึกว่ารับผิดชอบกระบวนการเรียนรู้ทั้งหมดของแบบจำลองของคุณ

โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.