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