Deep Learning vs gradient boosting: เมื่อไรที่จะใช้อะไร


30

ฉันมีปัญหาข้อมูลขนาดใหญ่กับชุดข้อมูลขนาดใหญ่ (ใช้เวลา 50 ล้านแถวและ 200 คอลัมน์) ชุดข้อมูลประกอบด้วยคอลัมน์ตัวเลขประมาณ 100 คอลัมน์และคอลัมน์หมวด 100 คอลัมน์และคอลัมน์ตอบกลับที่แสดงถึงปัญหาระดับไบนารี ความสำคัญของแต่ละคอลัมน์ที่มีค่าน้อยกว่า 50

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


2
ฉันคิดว่าถ้าคุณมีสัญชาตญาณที่ดีเกี่ยวกับคุณสมบัติของข้อมูลคุณจะต้องสำรวจทั้งสองทางเลือก (อาจจะแค่ 500,000 แถว) และตรวจสอบข้าม แต่บางทีอาจมีการมองเห็นหรือการวิเคราะห์อื่น ๆ ที่สามารถช่วยให้คุณได้สัญชาตญาณ
Neil Slater

1
จริง ๆ แล้วฉันวางแผนที่จะทำการเปรียบเทียบแบบจำลองขนาดใหญ่สำหรับการวิจัยของฉันกับข้อมูลจริงในสัปดาห์นี้ ฉันจะทำความสะอาดผลลัพธ์เล็กน้อยและโพสต์ไว้ที่นี่ นอกจากนี้นักเรียน CS อย่างน้อยหนึ่งคนได้ศึกษาคำถาม: academia.edu/3526056/…
shadowtalker

1
@NeilSlater Id ต้องการดูคำตอบที่บอกถึงสิ่งที่สัญชาตญาณอาจจะ / ควร /
shadowtalker

1
ฉันยังมีชื่อเสียงไม่เพียงพอที่จะแสดงความคิดเห็นสั้น ๆ กับคำถามดั้งเดิมของคุณและนี่ไม่ใช่คำตอบที่แท้จริง ในกรณีใด ๆ ฉันอยากจะบอกว่าฉันคิดว่าบทความนี้ค่อนข้างเกี่ยวข้องกับปัญหานี้: Fernández-Delgado, M. , Cernadas, E. , Barro, S. , & Amorim, D. (2014) เราต้องการตัวจําแนกหลายร้อยเพื่อแก้ปัญหาการจําแนกโลกแห่งความจริงหรือไม่? วารสารการวิจัยการเรียนรู้ของเครื่องจักร, 15, 3133–3181 สืบค้นจากdl.acm.org/citation.cfm?id=2697065
JoséMaría Mateos

มีการวิเคราะห์ข้อมูลเชิงสำรวจหรือเทคนิคอื่น ๆ ที่สามารถช่วยฉันตัดสินใจเลือกวิธีหนึ่งมากกว่าวิธีอื่นได้หรือไม่? ในกรณีทั่วไปไม่ใช่ 'ไม่มีทฤษฎีอาหารกลางวันฟรี' พิสูจน์เรื่องนี้ แต่มีการวิเคราะห์พฤติกรรมที่อาจแนะนำคุณในทิศทางที่ถูกต้องเช่นscikit-learn.org/stable/tutorial/machine_learning_map/...
ไซมอน

คำตอบ:


32

ทำไมต้อง จำกัด ตัวคุณเองด้วยแนวทางทั้งสองนี้ เพราะพวกเขาเท่ห์ ฉันมักจะเริ่มต้นด้วยลักษณนามเชิงเส้นอย่างง่าย \ regressor ดังนั้นในกรณีนี้ Linear SVM หรือ Logistic Regression โดยเฉพาะอย่างยิ่งการใช้อัลกอริทึมที่สามารถใช้ประโยชน์จาก sparsity เนื่องจากขนาดของข้อมูล ใช้เวลานานในการรันอัลกอริธึม DL บนชุดข้อมูลนั้นและโดยปกติฉันจะลองเรียนรู้อย่างลึกซึ้งเกี่ยวกับปัญหาของผู้เชี่ยวชาญที่มีโครงสร้างแบบลำดับชั้นบางอย่างในข้อมูลเช่นรูปภาพหรือข้อความ มันมากเกินไปสำหรับปัญหาการเรียนรู้ที่ง่ายกว่ามากและใช้เวลาและความเชี่ยวชาญในการเรียนรู้และอัลกอริทึม DL นั้นช้ามากในการฝึกอบรม นอกจากนี้เพียงเพราะคุณมี 50M แถวไม่ได้หมายความว่าคุณต้องใช้ชุดข้อมูลทั้งหมดเพื่อให้ได้ผลลัพธ์ที่ดี ขึ้นอยู่กับข้อมูล คุณอาจได้รับผลลัพธ์ที่ดีโดยมีตัวอย่างไม่กี่แถว 100,000 แถวหรือสองสามล้านแถว ฉันจะเริ่มต้นง่ายๆด้วยตัวอย่างเล็ก ๆ และลักษณนามเชิงเส้นและซับซ้อนมากขึ้นจากที่นั่นหากผลลัพธ์ไม่เป็นที่น่าพอใจ อย่างน้อยคุณก็จะได้รับพื้นฐาน เรามักจะพบโมเดลเชิงเส้นเรียบง่ายเพื่อแสดงโมเดลที่ซับซ้อนมากขึ้นในงานส่วนใหญ่ดังนั้นคุณจึงต้องการเริ่มต้นที่นั่นเสมอ


4
+1 สำหรับการเริ่มต้นด้วยโมเดลที่เรียบง่ายและการสุ่มตัวอย่างย่อย
แมตต์

ฉันเห็นด้วยกับการใช้ svm สำหรับข้อมูลที่กระจัดกระจาย แต่คุณไม่คิดว่า svm จะใช้เวลามากในการฝึกฝนชุดข้อมูลขนาดใหญ่เช่นนี้!
blitu12345

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

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

+1 สำหรับลองการเรียนรู้อย่างลึกซึ้งเกี่ยวกับปัญหาของผู้เชี่ยวชาญที่มีโครงสร้างแบบลำดับชั้นบางส่วนในข้อมูล
eric2323223

4

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

เมื่อคุณไปถึงความไม่สมดุลของคลาสที่ใหญ่กว่าประมาณ 1:10 แล้ววิธีการจำแนกส่วนใหญ่ก็หยุดทำงาน คุณจะเหลือวิธีการโดยยึดตามฟอเรสต์แบบสุ่มและอาจใช้ระบบประสาท (ยังไม่ได้ลอง) ฉันทำงานกับคลาสสมดุลในช่วง 1: 500 ถึง 1: 1000 และพบว่าไม่มีการดาวน์หรืออัพอัปแซมปลิง โชคดีที่ชุดข้อมูลของฉันคือ "เพียง" การสังเกต 6mln โดยตัวแปร 200 ตัวและฉันสามารถเรียกใช้ต้นไม้ที่ได้รับการสนับสนุนทั้งชุดในเวลาที่เหมาะสม

ดังนั้นเพื่อตอบคำถามของคุณโดยตรง:

  • คุณควรมีคำถามมากมายที่คุณต้องการคำตอบและในกรณีของการจำแนกประเภทให้ตรวจสอบยอดคงเหลือในชั้นเรียนของตัวแปรเป้าหมาย

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


1
ลองตัวจําแนก SGD จาก sklearn ด้วย class_weight =“ สมดุล”
Diego

4

จากมุมมองของฉันสำหรับ 5 ล้านครั้งที่คุณต้องการต้นไม้จำนวนมากเพื่อให้ได้ข้อสรุปที่ดี (แบบอย่างที่ดีในระยะคนธรรมดา) หากนี่ไม่ใช่ปัญหาจงไปหาคำตอบที่แน่นอนนั้นขึ้นอยู่กับลักษณะของปัญหาของคุณ GBT เป็นวิธีการที่ดีโดยเฉพาะอย่างยิ่งหากคุณมีประเภทของฟีเจอร์ที่หลากหลายเช่นการจัดหมวดหมู่ตัวเลขและอื่น ๆ นอกจากนี้เมื่อเปรียบเทียบกับ Neural Networks จะมีการปรับพารามิเตอร์ไฮเปอร์พารามิเตอร์จำนวนน้อยลง ดังนั้นจึงเร็วกว่าที่จะมีรูปแบบการตั้งค่าที่ดีที่สุด อีกสิ่งหนึ่งคือทางเลือกของการฝึกอบรมแบบขนาน คุณสามารถฝึกฝนต้นไม้หลายต้นในเวลาเดียวกันด้วย CPU ที่ดี หากคุณไม่พอใจกับผลลัพธ์ให้ไปที่ Neural Nets เพราะนั่นหมายความว่าแบบจำลองของคุณควรมีขนาดกว้างขึ้นและควรเรียนรู้ข้อมูลการสั่งซื้อที่สูงขึ้นผ่านข้อมูลของคุณ นั่นเป็นผลมาจาก NNs เมื่อเทียบกับอัลกอริทึมการเรียนรู้อื่น ๆ


4

ในบรรทัดที่ @Simon พูดไว้แล้ว:

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

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


1

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

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

หนึ่งสามารถสร้างลักษณนาม Naive Bayes (NB) เป็นแบบจำลองพื้นฐานและจากนั้นไปสำหรับเทคนิคการเรียนรู้ของเครื่องเช่น Support vector machines (SVM) หรือ multilayer perceptrons (MLP) การปิดการซื้อขายที่นี่คือ NB มีราคาถูกกว่า MLP ที่คำนวณได้ดังนั้นจึงต้องการประสิทธิภาพที่ดีขึ้นจาก MLP

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

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