มีห้องสมุดใดบ้างสำหรับวิธีการแบบ CART ที่ใช้ตัวทำนายและการตอบสนองแบบกระจัดกระจาย?


11

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

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

ฉันได้ดูไปรอบ ๆ และดูเหมือนว่าสิ่งนี้ควรจะอยู่ที่นั่น:

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

  • การจัดหมวดหมู่เอกสารดูเหมือนจะเป็นพื้นที่ที่การเรียนรู้จากการเว้นช่องว่างคุณลักษณะมีประโยชน์ (เอกสารส่วนใหญ่ไม่มีคำมากที่สุด) ตัวอย่างเช่นมีการอ้างอิงแบบเอียงในการใช้งาน C4.5 (อัลกอริทึมคล้าย CART) ในเอกสารนี้แต่ไม่มีรหัส

  • จากรายการส่งจดหมาย WEKA สามารถรับข้อมูลที่กระจัดกระจายได้ แต่ไม่เหมือนกับวิธีการในเอกสารที่ฉันลิงก์ด้านบน WEKA ไม่ได้รับการปรับให้เหมาะสมเพื่อใช้ประโยชน์จากมันจริง ๆ ในแง่ของการหลีกเลี่ยงวงจร CPU ที่สิ้นเปลือง

ขอบคุณล่วงหน้า!


2
ไม่ใช่ R แต่ Python scikits.learnมีการสนับสนุนที่เพิ่มมากขึ้นสำหรับเมทริกซ์กระจัดกระจาย
chl

@ ch1 ขอบคุณ ดูเหมือนว่าพวกเขายังไม่ได้เพิ่มวิธีการต้นไม้ มีคนกำลังใช้งานระบบแต่ฉันไม่แน่ใจว่าจะสามารถใช้ข้อมูลที่กระจัดกระจายได้หรือไม่ ฉันจะจำวิธีการ SVM แบบเบาบางไว้ในใจเสมอ!
David J. Harris

เมื่อคุณพูดว่า "คล้ายกับรถเข็น" คุณต้องการต้นไม้ตัดสินใจหรือรูปแบบการพยากรณ์แบบใดเป็นพิเศษหรือไม่
Michael McGowan

@Michael - ฉันต้องการต้นไม้เพราะฉันจะให้อาหารพวกเขาเพื่อขั้นตอนการส่งเสริมและพวกเขามีความแปรปรวนสูง
David J. Harris

2
ผมไม่ทราบว่าของแบบจำลองต้นไม้ แต่glmnetและe1071::svmสนับสนุนทั้งเบาบางMatrixวัตถุ GAMboostและGLMboost(จากแพ็คเกจGAMboost) ก็เช่นกัน
Zach

คำตอบ:


2

ฉันต้องการดูเกณฑ์มาตรฐานของการใช้งานแบบเบาบางกับการใช้งาน CART สมัยใหม่ที่ใช้ใน rf's กระดาษนั่นค่อนข้างเก่าในแง่ของความก้าวหน้าในพื้นที่นี้และฉันจะแปลกใจถ้ามันยังให้ความเร็วที่สำคัญขึ้น

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

นี้จะกล่าวถึงที่นี่ , ที่นี่ , ที่นี่

จริง ๆ แล้วฉันใช้การแสดงข้อมูลที่กระจัดกระจายของข้อมูล ณ จุดหนึ่งในแพ็คเกจRFของฉันCloudForestแต่พบว่าช้าลงจากนั้นจึงแสดงข้อมูลที่หนาแน่นและยกเลิกมันแม้ว่ามันจะให้ข้อดีของหน่วยความจำบางส่วนก็ตาม

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


1

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


ขอบคุณสำหรับการตอบกลับ. การสุ่มตัวอย่างเสียงดูเหมือนความคิดที่น่าสนใจ ขณะนี้ฉันกำลังลดน้ำหนักบางแง่มุมของข้อมูลด้วยเหตุผลอื่น แต่นั่นอาจเป็นความคิดที่ดีเช่นกัน แต่ทำไมคุณถึงพูดว่ารหัสนี้ไม่น่าจะมีอยู่? ฉันเชื่อมโยงกับกระดาษจาก 12 ปีที่แล้วซึ่งดูเหมือนว่าจะมีปัญหาเดียวกัน
David J. Harris

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

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

@ David ฉันคิดว่าจุดของ mbq ​​คือการเข้ารหัส 1-of-n ขนาดใหญ่ (เช่นรหัสเว็บไซต์ / ลูกค้า ฯลฯ ) หรือรายการของสารเคมีที่มีอยู่) มักจะเป็นตัวแทนที่ไม่ดีสำหรับการเรียนรู้ คุณควรเปลี่ยนเป็น "ฟีเจอร์" เช่นสำหรับเว็บไซต์ที่อาจจัดอยู่ในหมวดหมู่: ร้านค้า / ข่าว / บล็อกกีฬา / เทคโนโลยี ฯลฯ
seanv507

1

คุณเคยดูcaretแพ็คเกจใน R หรือไม่? มันมีอินเตอร์เฟซที่ทำให้มันง่ายต่อการใช้ความหลากหลายของรูปแบบรวมทั้งบางส่วนสำหรับการแบ่งพาร์ทิชัน recursive เช่นrpart, และctreectree2


ฉันคุ้นเคยกับแพ็คเกจ / ฟังก์ชั่นเหล่านั้นและไม่มีใครทำงานกับข้อมูลที่กระจัดกระจายเท่าที่ฉันสามารถบอกได้
David J. Harris

1
ลูกศรรองรับMatrixวัตถุจะแปลกใจ แต่มันไม่มีอยู่ในปัจจุบัน ทุกอย่างได้รับการบีบบังคับกับ data.frame
Zach

คุณอาจลองส่งอีเมลถึงผู้พัฒนาและถามเขาเกี่ยวกับเรื่องนี้ ฉันส่งอีเมลถึงเขาในสิ่งอื่นและเขาให้คำตอบที่เป็นประโยชน์ - max.kuhn [at] pfizer.com
paul
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.