อัลกอริทึมการจำแนก - ป่าสุ่ม

บทนำ

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

การทำงานของอัลกอริทึมป่าสุ่ม

เราสามารถเข้าใจการทำงานของอัลกอริทึม Random Forest ด้วยความช่วยเหลือของขั้นตอนต่อไปนี้ -

  • Step 1 - ขั้นแรกเริ่มต้นด้วยการเลือกตัวอย่างสุ่มจากชุดข้อมูลที่กำหนด

  • Step 2- ถัดไปอัลกอริทึมนี้จะสร้างโครงสร้างการตัดสินใจสำหรับทุกตัวอย่าง จากนั้นจะได้รับผลการทำนายจากต้นไม้การตัดสินใจทุกครั้ง

  • Step 3 - ในขั้นตอนนี้การลงคะแนนจะดำเนินการสำหรับทุกผลการทำนาย

  • Step 4 - ในที่สุดให้เลือกผลการทำนายที่ได้รับการโหวตมากที่สุดเป็นผลการทำนายขั้นสุดท้าย

แผนภาพต่อไปนี้จะแสดงให้เห็นถึงการทำงาน -

การใช้งานใน Python

ขั้นแรกเริ่มต้นด้วยการนำเข้าแพ็คเกจ Python ที่จำเป็น -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

จากนั้นดาวน์โหลดชุดข้อมูลม่านตาจากเว็บลิงค์ดังต่อไปนี้ -

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

ต่อไปเราต้องกำหนดชื่อคอลัมน์ให้กับชุดข้อมูลดังนี้ -

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

ตอนนี้เราต้องอ่าน dataset ไปยัง dataframe ของแพนด้าดังนี้ -

dataset = pd.read_csv(path, names=headernames)
dataset.head()
ความยาวของกลีบเลี้ยง ความกว้างของกลีบเลี้ยง ความยาวกลีบดอก ความกว้างกลีบดอก คลาส
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa

การประมวลผลข้อมูลล่วงหน้าจะดำเนินการด้วยความช่วยเหลือของบรรทัดสคริปต์ต่อไปนี้ -

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

ต่อไปเราจะแบ่งข้อมูลออกเป็นส่วนรถไฟและการทดสอบ รหัสต่อไปนี้จะแบ่งชุดข้อมูลออกเป็นข้อมูลการฝึกอบรม 70% และข้อมูลการทดสอบ 30% -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

จากนั้นฝึกโมเดลด้วยความช่วยเหลือของคลาส RandomForestClassifier ของ sklearn ดังนี้ -

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

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

y_pred = classifier.predict(X_test)

จากนั้นพิมพ์ผลลัพธ์ดังนี้ -

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

เอาต์พุต

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

ข้อดีข้อเสียของ Random Forest

ข้อดี

ต่อไปนี้เป็นข้อดีของอัลกอริทึม Random Forest -

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

  • ฟอเรสต์แบบสุ่มทำงานได้ดีสำหรับรายการข้อมูลจำนวนมากมากกว่าทรีการตัดสินใจเดียว

  • ป่าสุ่มมีความแปรปรวนน้อยกว่าต้นไม้การตัดสินใจเดี่ยว

  • ป่าสุ่มมีความยืดหยุ่นสูงและมีความแม่นยำสูงมาก

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

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

จุดด้อย

ต่อไปนี้เป็นข้อเสียของอัลกอริทึม Random Forest -

  • ความซับซ้อนเป็นข้อเสียเปรียบหลักของอัลกอริทึมฟอเรสต์แบบสุ่ม

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

  • ต้องใช้ทรัพยากรในการคำนวณมากขึ้นเพื่อใช้อัลกอริทึม Random Forest

  • ใช้งานง่ายน้อยกว่าในกรณีที่เรามีต้นไม้การตัดสินใจจำนวนมาก

  • กระบวนการทำนายโดยใช้ฟอเรสต์แบบสุ่มนั้นใช้เวลานานมากเมื่อเทียบกับอัลกอริทึมอื่น ๆ