คำแนะนำที่ครอบคลุมในการเพิ่มอัลกอริทึมการเรียนรู้ของเครื่อง



บล็อกนี้มุ่งเน้นไปที่วิธีการทำงานของ Boosting Machine Learning และวิธีการนำไปใช้เพื่อเพิ่มประสิทธิภาพของโมเดล Machine Learning

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

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





นี่คือรายการหัวข้อที่จะกล่าวถึง ในบล็อกนี้:

  1. ทำไมต้องใช้ Boosting?
  2. Boosting คืออะไร?
  3. Boosting Algorithm ทำงานอย่างไร?
  4. ประเภทของการส่งเสริม
  5. การสาธิต

เหตุใดจึงใช้ Boosting

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



  1. ภาพมีหูแหลม: แมว

  2. ภาพนี้มีดวงตาเป็นรูปแมว: แมว

  3. ภาพมีแขนขาใหญ่ขึ้น: สุนัข



  4. ภาพมีกรงเล็บที่แหลมขึ้น: แมว

  5. ภาพมีโครงสร้างปากที่กว้างขึ้น: สุนัข

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

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

ในตัวอย่างข้างต้นเราได้กำหนดผู้เรียนที่อ่อนแอ 5 คนและกฎเหล่านี้ส่วนใหญ่ (เช่นผู้เรียน 3 ใน 5 คนทำนายภาพว่าเป็นแมว) ให้คำทำนายแก่เรา ภาพนั้นคือแมว ดังนั้นผลลัพธ์สุดท้ายของเราคือแมว

ดังนั้นจึงนำเรามาสู่คำถามว่า

Boosting คืออะไร?

Boosting เป็นเทคนิคการเรียนรู้ทั้งชุดที่ใช้ชุดของอัลกอริทึม Machine Learning เพื่อแปลงผู้เรียนที่อ่อนแอให้เป็นผู้เรียนที่แข็งแกร่งเพื่อเพิ่มความแม่นยำของแบบจำลอง

What-Is-Boosting-Boosting-Machine-Learning-Edureka

การส่งเสริมคืออะไร - การส่งเสริมการเรียนรู้ของเครื่อง - Edureka

อย่างที่ฉันพูดถึง Boosting เป็นวิธีการเรียนรู้ทั้งมวล แต่การเรียนรู้ทั้งมวลคืออะไรกันแน่?

Ensemble ใน Machine Learning คืออะไร?

Ensemble learning เป็นวิธีการที่ใช้เพื่อเพิ่มประสิทธิภาพของโมเดล Machine Learning โดยการรวมผู้เรียนหลาย ๆ คน เมื่อเปรียบเทียบกับแบบจำลองเดียวการเรียนรู้ประเภทนี้จะสร้างแบบจำลองที่มีประสิทธิภาพและความแม่นยำที่ดีขึ้น นี่คือเหตุผลที่ใช้วิธีการทั้งมวลเพื่อเอาชนะการแข่งขันชั้นนำของตลาดเช่นการแข่งขันตามคำแนะนำของ Netflix การแข่งขัน Kaggle และอื่น ๆ

Ensemble Learning คืออะไร - การส่งเสริมการเรียนรู้ของเครื่อง - Edureka

ด้านล่างนี้ฉันได้พูดถึงความแตกต่างระหว่าง Boosting และ Bagging

ข้อมูลอินสแตนซ์สำหรับคลาส java

การส่งเสริมและการบรรจุถุง

การเรียนรู้แบบ Ensemble สามารถทำได้สองวิธี:

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

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

ในบล็อกนี้ฉันจะเน้นไปที่วิธีการ Boosting ดังนั้นในส่วนด้านล่างเราจะเข้าใจวิธีการทำงานของอัลกอริทึมการเพิ่มประสิทธิภาพ

Boosting Algorithm ทำงานอย่างไร?

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

การส่งเสริมอัลกอริทึมทำงานอย่างไร - การส่งเสริมการเรียนรู้ของเครื่อง - Edureka

วิธีการทำงานของอัลกอริทึมมีดังนี้

ขั้นตอนที่ 1: อัลกอริทึมฐานจะอ่านข้อมูลและกำหนดน้ำหนักให้กับการสังเกตแต่ละตัวอย่างเท่า ๆ กัน

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

ขั้นตอนที่ 3: ทำซ้ำขั้นตอนที่ 2 จนกว่าอัลกอริทึมสามารถจำแนกเอาต์พุตได้อย่างถูกต้อง

ดังนั้นจุดมุ่งหมายหลักของ Boosting คือ เพื่อมุ่งเน้นไปที่การคาดการณ์ที่ไม่ถูกจัดประเภทมากขึ้น

ตอนนี้เรารู้แล้วว่าอัลกอริทึมการเพิ่มประสิทธิภาพทำงานอย่างไรมาทำความเข้าใจเทคนิคการส่งเสริมประเภทต่างๆกัน

ประเภทของการส่งเสริม

มีสามวิธีหลักในการเพิ่มประสิทธิภาพ:

  1. Adaptive Boosting หรือ AdaBoost

  2. การไล่ระดับสี

  3. XGBoost

ฉันจะพูดถึงพื้นฐานเบื้องหลังแต่ละประเภทเหล่านี้

Adaptive Boosting

  • AdaBoost ถูกนำมาใช้โดยการรวมผู้เรียนที่อ่อนแอหลาย ๆ คนไว้ในผู้เรียนที่แข็งแกร่งเพียงคนเดียว

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

  • มีการวิเคราะห์ผลลัพธ์จากตอการตัดสินใจครั้งแรกและหากการสังเกตใด ๆ จัดประเภทผิดพลาดจะมีการกำหนดน้ำหนักที่สูงขึ้น

  • โพสต์สิ่งนี้ตอการตัดสินใจใหม่เกิดขึ้นโดยพิจารณาจากการสังเกตที่มีน้ำหนักที่สูงขึ้นซึ่งมีความสำคัญมากกว่า

    วิธีส่งผ่านข้อมูลอ้างอิงใน java
  • อีกครั้งหากการสังเกตมีการจัดประเภทที่ไม่ถูกต้องการสังเกตจะได้รับน้ำหนักที่สูงขึ้นและกระบวนการนี้จะดำเนินต่อไปจนกว่าการสังเกตทั้งหมดจะอยู่ในระดับที่เหมาะสม

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

การไล่ระดับสี

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

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

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

  1. ฟังก์ชั่นการสูญเสีย ที่ต้องได้รับการแก้ไข

  2. ผู้เรียนที่อ่อนแอ สำหรับการคาดการณ์การคำนวณและการสร้างผู้เรียนที่แข็งแกร่ง

  3. อัน แบบจำลองสารเติมแต่ง ที่จะทำให้ฟังก์ชันการสูญเสียเป็นประจำ

เช่นเดียวกับ AdaBoost Gradient Boosting ยังสามารถใช้ได้กับทั้งการจำแนกประเภทและปัญหาการถดถอย

XGBoost

XGBoost เป็นวิธีการเพิ่มประสิทธิภาพไล่ระดับสีขั้นสูงซึ่งหมายถึง eXtreme Gradient Boosting อย่างแท้จริง XGBoost พัฒนาโดย Tianqi Chen อยู่ในหมวดหมู่ Distributed Machine Learning Community (DMLC)

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

XGBoost - การส่งเสริมการเรียนรู้ของเครื่อง - Edureka

XGBoost ออกแบบมาเพื่อเน้นความเร็วในการคำนวณและประสิทธิภาพของโมเดล คุณสมบัติหลักของ XGBoost คือ:

  • สร้างแผนผังการตัดสินใจแบบคู่ขนาน

  • การใช้วิธีการคำนวณแบบกระจายสำหรับการประเมินแบบจำลองขนาดใหญ่และซับซ้อน

  • การใช้คอมพิวเตอร์นอกคอร์เพื่อวิเคราะห์ชุดข้อมูลขนาดใหญ่

  • ใช้การเพิ่มประสิทธิภาพแคชเพื่อใช้ทรัพยากรให้เกิดประโยชน์สูงสุด

ดังนั้นสิ่งเหล่านี้คืออัลกอริธึม Boosting Machine Learning ประเภทต่างๆ เพื่อให้สิ่งต่าง ๆ น่าสนใจในส่วนด้านล่างเราจะทำการสาธิตเพื่อดูว่าสามารถใช้อัลกอริทึมการเพิ่มประสิทธิภาพใน Python ได้อย่างไร

การส่งเสริมการเรียนรู้ของเครื่องใน Python

ข้อจำกัดความรับผิดชอบสั้น ๆ : ฉันจะใช้ Python เพื่อเรียกใช้การสาธิตนี้ดังนั้นหากคุณไม่รู้จัก Python คุณสามารถอ่านบล็อกต่อไปนี้:

  1. วิธีเรียนรู้ Python 3 จาก Scratch - คู่มือสำหรับผู้เริ่มต้น

ตอนนี้ได้เวลาทำให้มือของคุณสกปรกแล้วเริ่มเขียนโค้ด

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

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

ตรรกะ: สร้างโมเดล Machine Learning โดยใช้อัลกอริทึม Boosting เพื่อทำนายว่าเห็ดกินได้หรือไม่

ขั้นตอนที่ 1: นำเข้าแพ็คเกจที่ต้องการ

จาก sklearn.ensemble นำเข้า AdaBoostClassifier จาก sklearn.preprocessing นำเข้า LabelEncoder จาก sklearn.tree นำเข้า DecisionTreeClassifier นำเข้าแพนด้าเป็นฟังก์ชัน pd # นำเข้า train_test_split จาก sklearn.model_selection นำเข้า train_test_split #Import โมดูลเมตริกการนำเข้า scikit-learn สำหรับการคำนวณเมตริกความแม่นยำจาก sklearn

ขั้นตอนที่ 2: นำเข้าชุดข้อมูล

# โหลดในชุดข้อมูล = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

ขั้นตอนที่ 3: การประมวลผลข้อมูล

# กำหนดชื่อคอลัมน์ dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'smell', 'gill-attachment', 'gill-spacing ',' gill-size ',' gill-color ',' stalk-shape ',' stalk-root ',' stalk-surface-above-ring ',' stalk-surface-below-ring ',' stalk-color -above-ring ',' stalk-color-below-ring ',' veil-type ',' veil-color ',' ring-number ',' ring-type ',' spore-print-color ',' ประชากร ',' ที่อยู่อาศัย '] สำหรับป้ายกำกับใน dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) # แสดงข้อมูลเกี่ยวกับการพิมพ์ชุดข้อมูล (dataset.info ( )) Int64Index: 8124 รายการ, 6074 ถึง 686 คอลัมน์ข้อมูล (ทั้งหมด 23 คอลัมน์): เป้าหมาย 8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 bruises 8124 non-null int32 กลิ่น 8124 non-null int32 gill-attachment 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stalk-shape 8124 non-null int32 stalk-root 8124 int32 ที่ไม่ใช่ null ก้านพื้นผิวเหนือแหวน 8124 ไม่ใช่โมฆะ int32 ก้านพื้นผิวด้านล่างแหวน 8124 ไม่ใช่โมฆะ int32 ก้านสีเหนือแหวน 8124 ไม่ใช่โมฆะ int32 ก้านสีด้านล่างแหวน 8124 ไม่ใช่โมฆะ int32 ม่าน - ประเภท 8124 non-null int32 veil-color 8124 non-null int32 ring-number 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 ประชากร 8124 non-null int32 ที่อยู่อาศัย 8124 non- null int32 dtypes: int32 (23) การใช้หน่วยความจำ: 793.4 KB

ขั้นตอนที่ 4: การต่อข้อมูล

X = dataset.drop (['target'], แกน = 1) Y = ชุดข้อมูล ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

ขั้นตอนที่ 5: สร้างแบบจำลอง

model = DecisionTreeClassifier (เกณฑ์ = 'เอนโทรปี', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

ในข้อมูลโค้ดด้านบนเราได้ใช้อัลกอริทึม AdaBoost ฟังก์ชัน 'AdaBoostClassifier' รับพารามิเตอร์ที่สำคัญสามพารามิเตอร์:

  • base_estimator: ตัวประมาณค่าพื้นฐาน (ผู้เรียนที่อ่อนแอ) คือต้นไม้แห่งการตัดสินใจโดยค่าเริ่มต้น
  • n_estimator: ฟิลด์นี้ระบุจำนวนผู้เรียนพื้นฐานที่จะใช้
  • อัตราการเรียนรู้: ฟิลด์นี้ระบุอัตราการเรียนรู้ซึ่งเราได้ตั้งค่าเป็นค่าเริ่มต้นนั่นคือ 1
# ปรับโมเดลด้วยการเพิ่มข้อมูลการฝึกอบรม = AdaBoost.fit (X_train, Y_train)

ขั้นตอนที่ 6: การประเมินแบบจำลอง

# ประเมินความแม่นยำของแบบจำลอง y_pred = boostmodel.predict (X_test) การคาดคะเน = metrics.accuracy_score (Y_test, y_pred) # การคำนวณความแม่นยำในเปอร์เซ็นต์การพิมพ์ ('ความแม่นยำคือ:', การคาดการณ์ * 100, '%') คือ: 100.0%

เราได้รับความแม่นยำ 100% ซึ่งสมบูรณ์แบบ!

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบล็อก Boosting Machine Learning นี้ หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Machine Learning คุณสามารถอ่านบล็อกเหล่านี้ได้:

  1. javascript และ jquery ต่างกันอย่างไร

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