ตัวแยกประเภทป่าแบบสุ่ม: ภาพรวม มันทำงานอย่างไร ข้อดี & ข้อเสีย

เผยแพร่แล้ว: 2021-06-18

คุณเคยสงสัยหรือไม่ว่า Netflix เลือกหนังมาแนะนำให้คุณได้อย่างไร? หรือวิธีที่ Amazon เลือกผลิตภัณฑ์ที่จะแสดงในฟีดของคุณ?

พวกเขาทั้งหมดใช้ระบบการแนะนำ ซึ่งเป็นเทคโนโลยีที่ใช้ตัวแยกประเภทฟอเรสต์แบบสุ่ม

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

เราจะครอบคลุมข้อดีและข้อเสียของ sklearn สุ่มป่าและอื่น ๆ อีกมากมายในประเด็นต่อไปนี้

สารบัญ

ลักษณนามสุ่มป่า: บทนำ

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

เหตุใดตัวจำแนกป่าสุ่มจึงเรียกว่าป่าสุ่ม

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

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

มันทำงานอย่างไร?

สมมติว่าชุดข้อมูลของคุณมีคุณสมบัติ "m" ฟอเรสต์สุ่มจะสุ่มเลือกคุณสมบัติ "k" โดยที่ k < m ตอนนี้ อัลกอริธึมจะคำนวณโหนดรูทระหว่างคุณลักษณะ k โดยเลือกโหนดที่มีการรับข้อมูลสูงสุด

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

มันเป็นหนึ่งในอัลกอริธึมที่ซับซ้อนที่สุดอย่างแน่นอน เนื่องจากมันสร้างขึ้นจากการทำงานของแผนผังการตัดสินใจ

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

การใช้งาน Python แบบสุ่มของฟอเรสต์นั้นง่ายกว่าและมีประสิทธิภาพมากกว่าอัลกอริธึมที่ไม่ใช่เชิงเส้นอื่น ๆ ที่ใช้สำหรับปัญหาการจำแนกประเภท

ตัวอย่างต่อไปนี้จะช่วยให้คุณเข้าใจว่าคุณใช้ตัวแยกประเภทฟอเรสต์แบบสุ่มในชีวิตประจำวันของคุณอย่างไร:

ตัวอย่าง

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

ที่นี่ Supratik ใช้วิธี Decision Tree เพื่อให้ข้อเสนอแนะตามคำตอบของคุณ หลังจากคำแนะนำของเขา คุณรู้สึกแย่กับคำแนะนำของเขา ดังนั้นคุณจึงถาม Aditya เกี่ยวกับคำแนะนำของเขา และเขาก็ถามคุณเกี่ยวกับความชอบและข้อกำหนดอื่นๆ ของคุณด้วย

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

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

ข้อดีและข้อเสียของตัวแยกประเภทป่าสุ่ม

อัลกอริธึมการเรียนรู้ของเครื่องทุกตัวมีข้อดีและข้อเสีย ต่อไปนี้เป็นข้อดีและข้อเสียของอัลกอริทึมการจำแนกฟอเรสต์แบบสุ่ม:

ข้อดี

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

ข้อเสีย

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

ความแตกต่างระหว่างป่าสุ่มและต้นไม้แห่งการตัดสินใจ

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

ในทางกลับกัน ฟอเรสต์สุ่มใช้แผนผังการตัดสินใจหลายแบบ จึงเรียกว่า 'ฟอเรสต์' รวบรวมคะแนนโหวตจากแผนผังการตัดสินใจต่างๆ ที่ใช้ในการทำนายตามที่กำหนด

ดังนั้น ความแตกต่างหลักระหว่างตัวแยกประเภทฟอเรสต์แบบสุ่มและแผนผังการตัดสินใจก็คือ แบบแรกใช้คอลเล็กชันของแบบหลัง นี่คือความแตกต่างเพิ่มเติมระหว่างสองสิ่งนี้:

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

การสร้างอัลกอริทึม (สุ่ม Forest Sklearn)

ในตัวอย่างต่อไปนี้ เราได้ดำเนินการสุ่มนำ Python ฟอเรสต์ไปใช้งานโดยใช้ไลบรารี scikit-learn คุณสามารถทำตามขั้นตอนของบทช่วยสอนนี้เพื่อสร้างตัวแยกประเภทฟอเรสต์แบบสุ่มของคุณเอง

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

ขั้นตอนแรก: นำเข้าไลบรารีและโหลดชุดข้อมูล

ขั้นแรก เราจะต้องนำเข้าไลบรารีที่จำเป็นและโหลดชุดข้อมูลของเราลงในกรอบข้อมูล

ป้อนข้อมูล:

#การนำเข้าห้องสมุดที่จำเป็น

นำเข้าแพนด้าเป็น pd

นำเข้า numpy เป็น np

นำเข้า matplotlib.pyplot เป็น plt

#การนำเข้าชุดข้อมูล

จาก sklearn.datasets นำเข้า load_iris
ชุดข้อมูล = load_iris ()

ขั้นตอนที่สอง: แยกชุดข้อมูลออกเป็นชุดการฝึกและชุดทดสอบ

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

ป้อนข้อมูล:

#ใส่ลักษณนามให้เข้ากับชุดฝึก

จาก sklearn.tree นำเข้า DecisionTreeClassifier

model = DecisionTreeClassifier(เกณฑ์ = 'entropy' , splitter = 'best' , random_state = 0)

model.fit(X_train, y_train)

เอาท์พุท:

DecisionTreeClassifier(class_weight=None, criterion='entropy' , max_depth=None,
max_features=ไม่มี, max_leaf_nodes=ไม่มี,
min_impurity_decrease=0.0, min_impurity_split=ไม่มี,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

splitter='ดีที่สุด')

ขั้นตอนที่สาม: สร้างตัวแยกประเภทฟอเรสต์แบบสุ่ม

ตอนนี้ เราจะสร้างตัวแยกประเภทฟอเรสต์แบบสุ่มโดยใช้ Python และ scikit-learn

ป้อนข้อมูล:

#การประกอบลักษณนามเข้ากับชุดฝึก

จาก sklearn.ensemble นำเข้า RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, เกณฑ์-'เอนโทรปี', random_state = 0)

model.fit(X_train, y_train)

เอาท์พุท:

RandomForestClassifier (bootstrap=True, class_weight=None, เกณฑ์='เอนโทรปี',

max_deep=ไม่มี, max_features='auto', max_leaf_nodes=None,

min_impurity_decrease=0.0, min_impurity_split=ไม่มี,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=ไม่มี,

oob_score=เท็จ random_state=0, verbose=0, warm_start=False)

ขั้นตอนที่สี่: ทำนายผลลัพธ์และสร้างเมทริกซ์ความสับสน

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

ป้อนข้อมูล:

#ทำนายผลชุดทดสอบ

y_pred = mode.predict(X_test)

#สร้างเมทริกซ์ความสับสน

จาก sklearn.metrics นำเข้าสับสน_matrix

cm = ความสับสน_เมทริกซ์ (y_test, y_pred)

ซม

เอาท์พุต :

อาร์เรย์ ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

อินพุต :

#รับคะแนนสำหรับนางแบบของคุณ

model.score(X_test, y_test)

เอาท์พุต :

0.9777777777777777

บทสรุป

ตัวแยกประเภทฟอเรสต์สุ่มมีการใช้งานมากมาย พวกเขาเป็นหนึ่งในอัลกอริธึมการเรียนรู้ของเครื่องที่แข็งแกร่งที่สุดและเป็นสิ่งที่ต้องมีใน AI และ ML มืออาชีพ

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับปัญญาประดิษฐ์ โปรดดูโปรแกรม Executive PG ของ IIIT-B และ upGrad ในการเรียนรู้ของเครื่องและ AI ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 450 ชั่วโมง กรณีศึกษาและการมอบหมายมากกว่า 30 รายการ IIIT -B สถานะศิษย์เก่า 5+ โครงการหลักที่ใช้งานได้จริง & ความช่วยเหลืองานกับ บริษัท ชั้นนำ

Random Forest ในการเรียนรู้ของเครื่องคืออะไร?

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

อะไรคือความแตกต่างระหว่างสุ่มป่าและต้นไม้ตัดสินใจ?

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

ข้อเสียของ Random Forest คืออะไร?

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