เนื้อหาของบทความ:

ฉัน บทนำ

  • ภาพรวมโดยย่อของการเรียนรู้ของเครื่องและการใช้งาน
  • คำอธิบายของโมเดลการเรียนรู้ของเครื่องประเภทต่างๆ (ภายใต้การดูแล ไม่ได้รับการดูแล การเสริมกำลัง ฯลฯ)

ครั้งที่สอง โมเดลการเรียนรู้แบบมีผู้สอน

ก. การถดถอยเชิงเส้น

  • คำอธิบายการทำงานของการถดถอยเชิงเส้น
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

บี การถดถอยโลจิสติก

  • คำอธิบายวิธีการทำงานของการถดถอยโลจิสติก
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

ซี ต้นไม้การตัดสินใจ

  • คำอธิบายวิธีการทำงานของแผนผังการตัดสินใจ
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

ดี. ป่าสุ่ม

  • คำอธิบายการทำงานของป่าสุ่ม
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

สาม. รูปแบบการเรียนรู้แบบไม่มีผู้ดูแล

ก. การจัดกลุ่ม K-Means

  • คำอธิบายวิธีการทำงานของการจัดกลุ่มแบบเคมีน
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

บี การวิเคราะห์องค์ประกอบหลัก (PCA)

  • คำอธิบายวิธีการทำงานของ PCA
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

ซี การจัดกลุ่มแบบลำดับชั้น

  • คำอธิบายวิธีการทำงานของการจัดกลุ่มแบบลำดับชั้น
  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

IV. รูปแบบการเรียนรู้แบบเสริมกำลัง

ก. ถาม-การเรียนรู้

  • คำอธิบายการทำงานของ Q-learning
  • การใช้งานใน Python โดยใช้ไลบรารี Keras

บี ซาร์ซา

  • คำอธิบายวิธีการทำงานของ SARSA
  • การใช้งานใน Python โดยใช้ไลบรารี Keras

โวลต์ บทสรุป

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

ฉัน บทนำ

  • ภาพรวมโดยย่อของแมชชีนเลิร์นนิงและแอปพลิเคชัน

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

  • การจดจำรูปภาพ: สามารถฝึกโมเดลการเรียนรู้ของเครื่องให้จดจำวัตถุ ใบหน้า และคุณลักษณะอื่นๆ ในรูปภาพได้ ซึ่งใช้ในแอปพลิเคชันต่างๆ เช่น การจดจำใบหน้า การตรวจจับวัตถุ และการค้นหารูปภาพ
  • การประมวลผลภาษาธรรมชาติ (NLP): โมเดลการเรียนรู้ของเครื่องสามารถใช้เพื่อทำความเข้าใจและตีความภาษามนุษย์ ซึ่งใช้ในแอปพลิเคชันต่างๆ เช่น การจำแนกข้อความ การวิเคราะห์ความรู้สึก และการรู้จำคำพูด .
  • ระบบแนะนำ: โมเดลแมชชีนเลิร์นนิงสามารถใช้เพื่อแนะนำผลิตภัณฑ์ ภาพยนตร์ หรือเพลงให้กับผู้ใช้ตามความต้องการและพฤติกรรมของพวกเขา
  • การตรวจจับการฉ้อโกง: โมเดลการเรียนรู้ของเครื่องสามารถใช้เพื่อตรวจจับรูปแบบของพฤติกรรมที่น่าสงสัยในธุรกรรมทางการเงิน การใช้บัตรเครดิต และข้อมูลประเภทอื่น ๆ
  • การดูแลสุขภาพ: โมเดลแมชชีนเลิร์นนิงสามารถใช้เพื่อวิเคราะห์ภาพทางการแพทย์ คาดการณ์ผลลัพธ์ของผู้ป่วย และปรับปรุงประสิทธิภาพของการรักษาทางการแพทย์

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

  • คำอธิบายโมเดลแมชชีนเลิร์นนิงประเภทต่างๆ (ภายใต้การดูแล ไม่ได้รับการดูแล การเสริมกำลัง ฯลฯ)

โมเดลการเรียนรู้ของเครื่องมีหลายประเภท แต่ละประเภทมีลักษณะเฉพาะและการใช้งานเฉพาะของตัวเอง ซึ่งรวมถึง:

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

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

3.การเรียนรู้แบบเสริมกำลัง: โมเดลการเรียนรู้แบบเสริมการเรียนรู้ผ่านการลองผิดลองถูกโดยการโต้ตอบกับสภาพแวดล้อมและรับคำติชมในรูปแบบของรางวัลหรือบทลงโทษ โมเดลเหล่านี้ใช้สำหรับงานต่างๆ เช่น การเล่นเกม หุ่นยนต์ และการตัดสินใจ

4. การเรียนรู้แบบกึ่งมีผู้สอน: โมเดลการเรียนรู้แบบกึ่งมีผู้สอนเป็นการผสมผสานระหว่างการเรียนรู้แบบมีผู้สอนและแบบไม่มีผู้สอน พวกเขาได้รับการฝึกอบรมโดยใช้ข้อมูลที่มีทั้งแบบมีป้ายกำกับและไม่มีป้ายกำกับผสมกัน มีการใช้ในการใช้งานหลายอย่าง เช่น การประมวลผลภาษาธรรมชาติ คอมพิวเตอร์วิทัศน์ และการดึงข้อมูล

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

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

ครั้งที่สอง รูปแบบการเรียนรู้ภายใต้การดูแล

ก. การถดถอยเชิงเส้น

  • คำอธิบายวิธีการทำงานของการถดถอยเชิงเส้น

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

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

y = b0 + b1x1 + b2x2 + … + bnxn

โดยที่: y คือตัวแปรเป้าหมาย b0, b1, b2, …, bn คือสัมประสิทธิ์ของตัวแปรอินพุต x1, x2, …, xn คือตัวแปรอินพุต

เป้าหมายของการถดถอยเชิงเส้นคือการค้นหาค่าที่ดีที่สุดสำหรับสัมประสิทธิ์ (b0, b1, b2, …, bn) ซึ่งจะลดความแตกต่างระหว่างค่าที่ทำนายของตัวแปรเป้าหมายและค่าจริงให้เหลือน้อยที่สุด โดยทั่วไปจะทำโดยใช้วิธีที่เรียกว่ากำลังสองน้อยที่สุด ซึ่งจะค้นหาค่าของสัมประสิทธิ์ที่จะลดผลรวมของกำลังสองของความแตกต่างระหว่างค่าที่คาดการณ์ไว้และค่าจริงให้เหลือน้อยที่สุด

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

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

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

การถดถอยเชิงเส้น สามารถนำไปใช้ได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส LinearRegression ในตัว ซึ่งสามารถใช้เพื่อสร้างและฝึกโมเดลการถดถอยเชิงเส้น นี่คือตัวอย่างวิธีใช้คลาส LinearRegression เพื่อฝึกโมเดลการถดถอยเชิงเส้น:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# Import data
X = [[1, 2], [2, 3], [3, 4], [4, 5]] # Input variables
y = [1, 2, 3, 4] # Target variable

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
                                   random_state=0)

# Create and train the linear regression model
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)

# Predict target variable for test data
y_pred = lin_reg.predict(X_test)

# Print coefficients and score of the model
print("Coefficients: ", lin_reg.coef_)
print("Intercept: ", lin_reg.intercept_)
print("Score: ", lin_reg.score(X_test, y_test))

ในตัวอย่างนี้ ก่อนอื่นเราจะนำเข้าคลาส LinearRegression จากโมดูล sklearn.linear_model และฟังก์ชัน train_test_split จากโมดูล sklearn.model_selection จากนั้น เราจะนำเข้าข้อมูล ในกรณีนี้ นี่เป็นตัวอย่างง่ายๆ ที่มีตัวแปรอินพุตเพียงสองตัว และตัวแปรเป้าหมายหนึ่งตัว ต่อไป เราใช้ฟังก์ชัน train_test_split เพื่อแบ่งข้อมูลออกเป็นชุดการฝึกและการทดสอบ เราใช้ข้อมูล 80% สำหรับการฝึกอบรมและ 20% สำหรับการทดสอบ

เราสร้างอินสแตนซ์ของคลาส LinearRegression และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูลการฝึก fit() วิธีการรับตัวแปรอินพุตและตัวแปรเป้าหมายเป็นอาร์กิวเมนต์

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

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

ในตัวอย่างนี้ โมเดลการถดถอยเชิงเส้นนี้สามารถตีความได้ว่าเป็นแบบจำลองที่ตัวแปรเป้าหมาย y เท่ากับ 1.5 เท่าของค่าของตัวแปรอินพุตตัวแรก x1 บวก 1 เท่าของค่าของตัวแปรอินพุตตัวที่สอง x2

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal

บี การถดถอยโลจิสติก

  • คำอธิบายวิธีการทำงานของการถดถอยโลจิสติก

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

สมการการถดถอยโลจิสติกสามารถแสดงได้ด้วยสมการต่อไปนี้:

p(y = 1) = 1 / (1 + e^-(b0 + b1x1 + b2x2 + … + bnxn))

โดยที่: p(y = 1) คือความน่าจะเป็นของผลลัพธ์ที่เป็น 1 b0, b1, b2, …, bn คือสัมประสิทธิ์ของตัวแปรอินพุต x1, x2, …, xn คือตัวแปรอินพุต

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

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

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

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

การถดถอยโลจิสติก สามารถนำไปใช้ได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส LogisticRegression ในตัว ซึ่งสามารถใช้เพื่อสร้างและฝึกโมเดลการถดถอยโลจิสติก นี่คือตัวอย่างวิธีใช้คลาส LogisticRegression เพื่อฝึกโมเดลการถดถอยโลจิสติก:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# Import data
X = [[1, 2], [2, 3], [3, 4], [4, 5]] # Input variables
y = [0, 0, 1, 1] # Target variable (0 or 1)

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, 
                                   random_state=0)

# Create and train the logistic regression model
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)

# Predict target variable for test data
y_pred = log_reg.predict(X_test)

# Print coefficients and score of the model
print("Coefficients: ", log_reg.coef_)
print("Intercept: ", log_reg.intercept_)
print("Score: ", log_reg.score(X_test, y_test))

กระบวนการนี้คล้ายกับตัวอย่างการถดถอยเชิงเส้น โดยที่เรานำเข้าคลาส LogisticRegression จากโมดูล sklearn.linear_model ก่อน และฟังก์ชัน train_test_split จากโมดูล sklearn.model_selection จากนั้นเรานำเข้าข้อมูลและใช้ฟังก์ชัน train_test_split เพื่อแบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบ

เราสร้างอินสแตนซ์ของคลาส LogisticRegression และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูลการฝึก fit() วิธีการรับตัวแปรอินพุตและตัวแปรเป้าหมายเป็นอาร์กิวเมนต์

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

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

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal นอกจากนี้ ในตัวอย่างนี้ การถดถอยโลจิสติกเป็นแบบจำลองที่ตัวแปรเป้าหมาย y ถูกกำหนดตามค่าของตัวแปรอินพุตตัวแรกและตัวที่สอง x1 และ x2 ตามลำดับ

ซี ต้นไม้การตัดสินใจ

  • คำอธิบายว่าแผนผังการตัดสินใจทำงานอย่างไร

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

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

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

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

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

ดังนั้น เพื่อเอาชนะข้อจำกัดเหล่านี้ แผนผังการตัดสินใจจึงสามารถนำมาใช้ร่วมกับโมเดลอื่นๆ เช่น Random Forest

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

แผนผังการตัดสินใจ สามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส DecisionTreeClassifier ในตัวสำหรับงานการจัดหมวดหมู่ และคลาส DecisionTreeRegressor สำหรับงานการถดถอย นี่คือตัวอย่างวิธีใช้คลาส DecisionTreeClassifier เพื่อฝึกโมเดลแผนผังการตัดสินใจสำหรับการจัดหมวดหมู่:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

# Import data
X = [[1, 2], [2, 3], [3, 4], [4, 5]] # Input variables
y = [0, 0, 1, 1] # Target variable (0 or 1)

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
                                   random_state=0)

# Create and train the decision tree model
tree_clf = DecisionTreeClassifier()
tree_clf.fit(X_train, y_train)

# Predict target variable for test data
y_pred = tree_clf.predict(X_test)

# Print accuracy of the model
print("Accuracy: ", tree_clf.score(X_test, y_test))

กระบวนการนี้คล้ายกับตัวอย่างการถดถอยเชิงเส้นและลอจิสติก โดยที่เรานำเข้าคลาส DecisionTreeClassifier จากโมดูล sklearn.tree ก่อน และฟังก์ชัน train_test_split จากโมดูล sklearn.model_selection จากนั้นเรานำเข้าข้อมูลและใช้ฟังก์ชัน train_test_split เพื่อแบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบ

เราสร้างอินสแตนซ์ของคลาส DecisionTreeClassifier และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูลการฝึก fit() วิธีการรับตัวแปรอินพุตและตัวแปรเป้าหมายเป็นอาร์กิวเมนต์

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

นอกจากนี้เรายังสามารถตรวจสอบความถูกต้องของแบบจำลองได้ด้วยการเปรียบเทียบค่าเป้าหมายที่คาดการณ์ไว้กับค่าจริง

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

ดี. ป่าสุ่ม

  • คำอธิบายวิธีการทำงานของป่าสุ่ม

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

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

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

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

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

โดยรวมแล้ว ป่าสุ่มมีการใช้กันอย่างแพร่หลายในการใช้งานหลายอย่าง เช่น การประมวลผลภาษาธรรมชาติ คอมพิวเตอร์

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

ฟอเรสต์แบบสุ่มสามารถนำไปใช้ได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส RandomForestClassifier ในตัวสำหรับงานการจัดหมวดหมู่ และคลาส RandomForestRegressor สำหรับงานการถดถอย นี่คือตัวอย่างวิธีใช้คลาส RandomForestClassifier เพื่อฝึกโมเดลฟอเรสต์แบบสุ่มสำหรับการจัดหมวดหมู่:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Import data
X = [[1, 2], [2, 3], [3, 4], [4, 5]] # Input variables
y = [0, 0, 1, 1] # Target variable (0 or 1)

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
                                   random_state=0)

# Create and train the random forest model
rf_clf = RandomForestClassifier()
rf_clf.fit(X_train, y_train)

# Predict target variable for test data
y_pred = rf_clf.predict(X_test)

# Print accuracy of the model
print("Accuracy: ", rf_clf.score(X_test, y_test))

กระบวนการนี้คล้ายกับตัวอย่างแผนผังการตัดสินใจที่เรานำเข้าคลาส RandomForestClassifier จากโมดูล sklearn.ensemble ก่อน และฟังก์ชัน train_test_split จากโมดูล sklearn.model_selection จากนั้นเรานำเข้าข้อมูลและใช้ฟังก์ชัน train_test_split เพื่อแบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบ

เราสร้างอินสแตนซ์ของคลาส RandomForestClassifier และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูลการฝึก fit() วิธีการรับตัวแปรอินพุตและตัวแปรเป้าหมายเป็นอาร์กิวเมนต์

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

นอกจากนี้เรายังสามารถตรวจสอบความถูกต้องของแบบจำลองได้ด้วยการเปรียบเทียบค่าเป้าหมายที่คาดการณ์ไว้กับค่าจริง

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal

นอกจากนี้ สามารถระบุจำนวนแผนผังการตัดสินใจในฟอเรสต์ได้โดยใช้พารามิเตอร์ n_estimators โดยค่าเริ่มต้นจะถูกตั้งค่าไว้

III. โมเดลการเรียนรู้แบบไม่มีผู้ดูแล

ก. การจัดกลุ่ม K-Means

  • คำอธิบายวิธีการทำงานของการจัดกลุ่มเคมีน

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

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

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

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

อย่างไรก็ตาม การจัดกลุ่มเคมีนก็มีข้อจำกัดบางประการเช่นกัน อัลกอริธึมนั้นไวต่อตัวเลือกเริ่มต้น

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

การจัดกลุ่ม K-meansสามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส KMeans ในตัว ซึ่งสามารถใช้เพื่อสร้างและฝึกโมเดลการจัดกลุ่ม k-means นี่คือตัวอย่างวิธีใช้คลาส KMeans เพื่อจัดกลุ่มชุดข้อมูลออกเป็น 2 คลัสเตอร์:

from sklearn.cluster import KMeans
import numpy as np

# Import data
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5],
              [1, 2], [2, 3], [3, 4], [4, 5]]) # Input variables

# Create and train the k-means model
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)

# Predict the cluster for each data point
y_pred = kmeans.predict(X)

# Print the cluster centers
print("Cluster centers: ", kmeans.cluster_centers_)

กระบวนการนี้คล้ายกับตัวอย่างการถดถอยเชิงเส้นและลอจิสติก โดยเราจะนำเข้าคลาส KMeans จากโมดูล sklearn.cluster ก่อน จากนั้นเรานำเข้าข้อมูล ในตัวอย่างนี้ เราใช้อาร์เรย์จำนวน 8 จุดข้อมูล

เราสร้างอินสแตนซ์ของคลาส KMeans และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูล fit() วิธีการรับตัวแปรอินพุตเป็นอาร์กิวเมนต์

สิ่งสำคัญที่ควรทราบก็คือ เราจำเป็นต้องระบุจำนวนคลัสเตอร์ k เป็นอาร์กิวเมนต์ของคลาส KMeans ที่นี่เราระบุว่าเราต้องการจัดกลุ่มข้อมูลออกเป็น 2 คลัสเตอร์

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

นอกจากนี้เรายังสามารถตรวจสอบศูนย์กลางคลัสเตอร์ของโมเดล ซึ่งเป็นค่าเฉลี่ยของจุดข้อมูลที่กำหนดให้กับคลัสเตอร์นั้น

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal นอกจากนี้ ในตัวอย่างนี้ แบบจำลองเคมีนจะจัดกลุ่มจุดข้อมูล 4 จุดแรกไว้ด้วยกัน และจัดกลุ่มจุดข้อมูล 4 จุดสุดท้ายไว้ด้วยกันเนื่องจากมีความคล้ายคลึงกันมาก

B. การวิเคราะห์องค์ประกอบหลัก (PCA)

  • คำอธิบายวิธีการทำงานของ PCA

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

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

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

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

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

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

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

การวิเคราะห์องค์ประกอบหลัก (PCA) สามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส PCA ในตัว ซึ่งสามารถใช้เพื่อสร้างและฝึกอบรมโมเดล PCA นี่คือตัวอย่างวิธีใช้คลาส PCA เพื่อลดมิติของชุดข้อมูล:

from sklearn.decomposition import PCA
import numpy as np

# Import data
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [1, 2],
              [2, 3], [3, 4], [4, 5]]) # Input variables

# Create and train the PCA model
pca = PCA(n_components=1)
pca.fit(X)

# Transform the data
X_transformed = pca.transform(X)

# Print the explained variance
print("Explained variance: ", pca.explained_variance_ratio_)

กระบวนการนี้คล้ายกับตัวอย่างการจัดกลุ่มเคมีน โดยที่เรานำเข้าคลาส PCA จากโมดูล sklearn.decomposition ก่อน จากนั้นเรานำเข้าข้อมูล ในตัวอย่างนี้ เราใช้อาร์เรย์จำนวน 8 จุดข้อมูล

เราสร้างอินสแตนซ์ของคลาส PCA และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูล fit() วิธีการรับตัวแปรอินพุตเป็นอาร์กิวเมนต์

สิ่งสำคัญที่ควรทราบก็คือ เราจำเป็นต้องระบุจำนวนส่วนประกอบหลัก n_components เป็นอาร์กิวเมนต์ของคลาส PCA ในที่นี้ เราระบุว่าเราต้องการลดมิติของข้อมูลให้เหลือ 1 องค์ประกอบหลัก

เมื่อโมเดลได้รับการฝึกฝนแล้ว เราสามารถใช้เมธอดTransform() เพื่อฉายข้อมูลลงในพื้นที่มิติที่ต่ำกว่าโดยการส่งตัวแปรอินพุตเป็นอาร์กิวเมนต์

นอกจากนี้เรายังสามารถตรวจสอบความแปรปรวนที่อธิบายได้ ซึ่งแสดงถึงสัดส่วนของความแปรปรวนที่อธิบายโดยองค์ประกอบหลักแต่ละส่วน ในตัวอย่างนี้ องค์ประกอบหลักแรกอธิบายความแปรปรวนของข้อมูลได้ 100% ตามที่เราได้ระบุไว้ว่าเราต้องการลดมิติข้อมูลให้เหลือองค์ประกอบหลัก 1 รายการ

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal

ซี การจัดกลุ่มแบบลำดับชั้น

  • คำอธิบายวิธีการทำงานของการจัดกลุ่มแบบลำดับชั้น

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

อัลกอริธึมการจัดกลุ่มแบบลำดับชั้นมีสองประเภทหลัก: การรวมกลุ่มและการแบ่งแยก

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

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

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

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

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

โดยรวมแล้ว การจัดกลุ่มแบบลำดับชั้นถูกนำมาใช้กันอย่างแพร่หลายในการใช้งานหลายอย่าง เช่น การแบ่งส่วนภาพ การวิเคราะห์การแสดงออกของยีน และชีวสารสนเทศศาสตร์

  • การใช้งานใน Python โดยใช้ไลบรารี scikit-learn

การจัดกลุ่มแบบลำดับชั้น สามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn ไลบรารีมีคลาส AgglomerativeClustering ในตัว ซึ่งสามารถใช้เพื่อสร้างและฝึกอบรมโมเดลการจัดกลุ่มแบบลำดับชั้นแบบกลุ่ม นี่คือตัวอย่างวิธีใช้คลาส AgglomerativeClustering เพื่อจัดกลุ่มชุดข้อมูลออกเป็น 2 คลัสเตอร์:

from sklearn.cluster import AgglomerativeClustering
import numpy as np

# Import data
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5],
             [1, 2], [2, 3], [3, 4], [4, 5]]) # Input variables

# Create and train the agglomerative hierarchical clustering model
agg_clustering = AgglomerativeClustering(n_clusters=2)
agg_clustering.fit(X)

# Predict the cluster for each data point
y_pred = agg_clustering.fit_predict(X)

# Print the cluster labels
print("Cluster labels: ", y_pred)

กระบวนการนี้คล้ายกับตัวอย่างการจัดกลุ่มแบบเคมีน โดยเราจะนำเข้าคลาส AgglomerativeClustering จากโมดูล sklearn.cluster ก่อน จากนั้นเรานำเข้าข้อมูล ในตัวอย่างนี้ เราใช้อาร์เรย์จำนวน 8 จุดข้อมูล

เราสร้างอินสแตนซ์ของคลาส AgglomerativeClustering และเรียกใช้เมธอด fit() เพื่อฝึกโมเดลกับข้อมูล fit() วิธีการรับตัวแปรอินพุตเป็นอาร์กิวเมนต์

สิ่งสำคัญที่ควรทราบคือเราจำเป็นต้องระบุจำนวนคลัสเตอร์ k เป็นอาร์กิวเมนต์ของคลาส AgglomerativeClustering ที่นี่เราระบุว่าเราต้องการจัดกลุ่มข้อมูลออกเป็น 2 คลัสเตอร์

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

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี scikit-learn ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install scikit-learn ใน command prompt หรือ terminal นอกจากนี้ ในตัวอย่างนี้ โมเดลการจัดกลุ่มแบบลำดับชั้นจะจัดกลุ่มจุดข้อมูล 4 จุดแรกไว้ด้วยกัน และจัดกลุ่มจุดข้อมูล 4 จุดสุดท้ายไว้ด้วยกันเนื่องจากมีความคล้ายคลึงกันมาก

IV. รูปแบบการเรียนรู้แบบเสริมกำลัง

ก. Q-การเรียนรู้

  • คำอธิบายวิธีการทำงานของ Q-learning

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

อัลกอริธึม Q-learning ทำงานโดยการอัปเดตฟังก์ชันมูลค่าการกระทำซ้ำ ๆ โดยอิงตามรางวัลและฟังก์ชันมูลค่าการกระทำโดยประมาณของสถานะถัดไป การอัพเดตทำได้โดยใช้สมการต่อไปนี้:

Q(s,a) = Q(s,a) + α(r + γ max(Q(s', a')) — Q(s,a)) แข็งแกร่ง>

โดยที่ Q(s,a) คือค่าประมาณปัจจุบันของฟังก์ชันค่าการกระทำ r คือรางวัลที่ได้รับหลังจากดำเนินการ a ในสถานะ s, s' คือสถานะถัดไป a' คือการกระทำที่เกิดขึ้นในสถานะ s', γ คือปัจจัยส่วนลด และ α คืออัตราการเรียนรู้

อัลกอริธึม Q-learning ต้องการแบบจำลองของสภาพแวดล้อม ซึ่งสามารถแสดงเป็นชุดของสถานะ การดำเนินการ และการเปลี่ยนภาพได้ อัลกอริธึมยังต้องมีนโยบายซึ่งกำหนดการดำเนินการที่จะดำเนินการในสถานะที่กำหนด อัลกอริธึม Q-learning สามารถใช้ได้กับนโยบายที่แตกต่างกัน เช่น นโยบาย epsilon-greedy หรือนโยบาย softmax

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

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

โดยรวมแล้ว Q-learning ถูกนำมาใช้กันอย่างแพร่หลายในหลายๆ แอปพลิเคชัน เช่น หุ่นยนต์ การเล่นเกม และการตัดสินใจ

  • การใช้งานใน Python โดยใช้ไลบรารี Keras

Q-learning สามารถนำไปใช้ใน Python ได้โดยใช้ไลบรารี Keras ซึ่งเป็นไลบรารีการเรียนรู้เชิงลึกยอดนิยมซึ่งมีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการสร้างและฝึกอบรมโครงข่ายประสาทเทียม นี่คือตัวอย่างวิธีใช้ไลบรารี Keras เพื่อใช้งานตัวแทน Q-learning สำหรับเกมง่ายๆ:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# Define the environment
n_states = 4 # Number of states
n_actions = 2 # Number of actions

# Create the Q-network
model = Sequential()
model.add(Dense(10, input_dim=n_states, activation='relu')) # Input layer
model.add(Dense(n_actions, activation='linear')) # Output layer
model.compile(loss='mse', optimizer='adam')

# Define the Q-learning algorithm
epsilon = 0.1 # Exploration rate
alpha = 0.1 # Learning rate
gamma = 0.9 # Discount factor

for episode in range(10000):
    # Initialize the state
    state = np.random.randint(0, n_states)
    done = False
    while not done:
        # Choose an action using an epsilon-greedy policy
        if np.random.rand() < epsilon:
            action = np.random.randint(0, n_actions)
        else:
            action = np.argmax(model.predict(state))
      # Take the action and observe the next state, reward, and done signal
        next_state, reward, done = step(state, action)
        # Update the Q-value using the Q-learning update rule
        target = reward + gamma * np.max(model.predict(next_state))
        target_vec = model.predict(state)
        target_vec[action] = target
        model.fit(state, target_vec, epochs=1, verbose=0)
        # Update the state
        state = next_state

ในตัวอย่างนี้ อันดับแรกเราสร้างเครือข่าย Q โดยใช้คลาส Sequential จากไลบรารี Keras Q-network คือโครงข่ายประสาทเทียมที่มีเลเยอร์อินพุต เลเยอร์ที่ซ่อนอยู่ และเลเยอร์เอาท์พุต เลเยอร์อินพุตมีจำนวนเซลล์ประสาทเท่ากันกับจำนวนสถานะในสภาพแวดล้อม ส่วนเลเยอร์เอาต์พุตมีจำนวนเท่ากัน

บี ซาร์ซา

  • คำอธิบายวิธีการทำงานของ SARSA

SARSA (State-Action-Reward-State-Action) เป็นอัลกอริธึมการเรียนรู้แบบเสริมกำลังประเภทหนึ่งที่ใช้ในการเรียนรู้การดำเนินการที่เหมาะสมที่สุดในสภาวะที่กำหนด เช่นเดียวกับ Q-learning เป้าหมายของ SARSA คือการประมาณค่าฟังก์ชันค่าการกระทำที่เหมาะสมที่สุด ซึ่งแสดงถึงรางวัลระยะยาวที่คาดหวังสำหรับการดำเนินการเฉพาะในรัฐใดรัฐหนึ่ง ฟังก์ชันค่าการกระทำสามารถแสดงเป็นตารางหรือฟังก์ชัน โดยที่แถวสอดคล้องกับสถานะ และคอลัมน์สอดคล้องกับการกระทำ

อัลกอริทึม SARSA ทำงานโดยการอัปเดตฟังก์ชันมูลค่าการกระทำซ้ำๆ โดยอิงตามรางวัลและฟังก์ชันมูลค่าการกระทำโดยประมาณของสถานะและการดำเนินการถัดไป การอัพเดตทำได้โดยใช้สมการต่อไปนี้:

Q(s,a) = Q(s,a) + α(r + γQ(s’, a’) — Q(s,a))

โดยที่ Q(s,a) คือค่าประมาณปัจจุบันของฟังก์ชันค่าการกระทำ r คือรางวัลที่ได้รับหลังจากดำเนินการ a ในสถานะ s, s' คือสถานะถัดไป a' คือการกระทำที่จะดำเนินการในสถานะ s ', γ คือปัจจัยลด และ α คืออัตราการเรียนรู้

หนึ่งในความแตกต่างที่สำคัญระหว่าง Q-learning และ SARSA ก็คือ Q-learning ใช้ฟังก์ชันมูลค่าการกระทำโดยประมาณสูงสุดของสถานะถัดไปเป็นเป้าหมาย ในขณะที่ SARSA ใช้ฟังก์ชันมูลค่าการกระทำโดยประมาณของสถานะถัดไปและการกระทำเป็นเป้าหมาย .

อัลกอริธึม SARSA ต้องการแบบจำลองของสภาพแวดล้อม ซึ่งสามารถแสดงเป็นชุดของสถานะ การดำเนินการ และการเปลี่ยนภาพได้ อัลกอริธึมยังต้องมีนโยบายซึ่งกำหนดการดำเนินการที่จะดำเนินการในสถานะที่กำหนด อัลกอริธึม SARSA สามารถใช้ได้กับนโยบายที่แตกต่างกัน เช่น นโยบาย epsilon-greedy หรือนโยบาย softmax

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

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

โดยรวมแล้ว SARSA มีการใช้กันอย่างแพร่หลายในการใช้งานหลายอย่าง เช่น หุ่นยนต์ การเล่นเกม และการตัดสินใจ

  • การใช้งานใน Python โดยใช้ไลบรารี Keras

SARSA สามารถนำไปใช้ใน Python ได้โดยใช้ไลบรารี Keras ซึ่งเป็นไลบรารีการเรียนรู้เชิงลึกยอดนิยมซึ่งมีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการสร้างและฝึกอบรมโครงข่ายประสาทเทียม นี่คือตัวอย่างวิธีใช้ไลบรารี Keras เพื่อใช้งานตัวแทน SARSA สำหรับเกมง่ายๆ:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# Define the environment
n_states = 4 # Number of states
n_actions = 2 # Number of actions

# Create the Q-network
model = Sequential()
model.add(Dense(10, input_dim=n_states, activation='relu')) # Input layer
model.add(Dense(n_actions, activation='linear')) # Output layer
model.compile(loss='mse', optimizer='adam')

# Define the SARSA algorithm
epsilon = 0.1 # Exploration rate
alpha = 0.1 # Learning rate
gamma = 0.9 # Discount factor

for episode in range(10000):
    # Initialize the state
    state = np.random.randint(0, n_states)
    # Choose an action using an epsilon-greedy policy
    if np.random.rand() < epsilon:
        action = np.random.randint(0, n_actions)
    else:
        action = np.argmax(model.predict(state))
    done = False
    while not done:
      # Take the action and observe the next state, reward, and done signal
        next_state, reward, done = step(state, action)
        # Choose the next action using an epsilon-greedy policy
        if np.random.rand() < epsilon:
            next_action = np.random.randint(0, n_actions)
        else:
            next_action = np.argmax(model.predict(next_state))
        # Update the Q-value using the SARSA update rule
        target = reward + gamma * model.predict(next_state)[0][next_action]
        target_vec = model.predict(state)
        target_vec[action] = target
        model.fit(state, target_vec, epochs=1, verbose=0)
        # Update the state and action
        state = next_state
        action = next_action

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

เป็นที่น่าสังเกตว่าคุณควรติดตั้งไลบรารี keras ก่อนที่จะลองใช้มันในโค้ดของคุณ คุณสามารถทำได้โดยการรัน pip install keras ใน command prompt หรือ terminal นอกจากนี้ ในตัวอย่างนี้ โครงข่ายประสาทเทียมที่ใช้ในการประมาณฟังก์ชันค่าการกระทำถูกกำหนดโดยใช้ไลบรารี Keras และได้รับการฝึกโดยใช้กฎการอัปเดต SARSA

วี บทสรุป

  • สรุปโมเดลการเรียนรู้ของเครื่องต่างๆ และการนำไปใช้ใน Python

โมเดลการเรียนรู้ของเครื่องมีหลายประเภท แต่ละประเภทมีจุดแข็งและจุดอ่อนของตัวเอง โมเดลยอดนิยมบางรุ่น ได้แก่ :

  • โมเดลการเรียนรู้แบบมีผู้สอน เช่น การถดถอยเชิงเส้นและการถดถอยโลจิสติก ซึ่งใช้ในการทำนายค่าของตัวแปรเป้าหมายตามคุณลักษณะอินพุต โมเดลเหล่านี้สามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn
  • โมเดลการเรียนรู้แบบไม่มีผู้ดูแล เช่น การจัดกลุ่มเคมีนและ PCA ซึ่งใช้เพื่อจัดกลุ่มจุดข้อมูลที่คล้ายคลึงกันไว้ด้วยกันและค้นหารูปแบบในข้อมูล โมเดลเหล่านี้สามารถนำไปใช้งานได้อย่างง่ายดายใน Python โดยใช้ไลบรารี scikit-learn
  • โมเดลการเรียนรู้แบบเสริมกำลัง เช่น Q-learning และ SARSA ซึ่งใช้เพื่อเรียนรู้การดำเนินการที่เหมาะสมที่สุดในสภาวะที่กำหนด โมเดลเหล่านี้สามารถนำไปใช้ใน Python ได้โดยใช้ไลบรารี Keras ซึ่งมีอินเทอร์เฟซที่ใช้งานง่ายสำหรับการสร้างและฝึกโครงข่ายประสาทเทียม

โดยรวมแล้ว โมเดลแมชชีนเลิร์นนิงสามารถนำไปใช้ใน Python ได้โดยใช้ไลบรารีต่างๆ เช่น scikit-learn, tensorflow และ เคราส ไลบรารีเหล่านี้มีฟังก์ชันและคลาสที่ใช้งานง่ายซึ่งสามารถใช้ในการฝึกฝนและคาดการณ์ด้วยโมเดลการเรียนรู้ของเครื่องต่างๆ นอกจากนี้ ทั้งหมดยังมีโมเดลประเภทต่างๆ มากมายที่สามารถฝึกให้เหมาะกับข้อมูลและปัญหาประเภทต่างๆ ได้

  • การอภิปรายข้อดีข้อเสียของแต่ละรุ่น

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

การถดถอยเชิงเส้น:

ข้อดี:

  • เรียบง่ายและง่ายต่อการตีความ
  • รวดเร็วในการฝึกอบรมและคาดการณ์
  • สามารถรองรับข้อมูลจำนวนมากได้
  • สามารถใช้สำหรับงานการถดถอยและการจัดหมวดหมู่

ข้อเสีย:

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

การถดถอยโลจิสติก:

ข้อดี:

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

ข้อเสีย:

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

แผนผังการตัดสินใจ:

ข้อดี:

  • เรียบง่ายและง่ายต่อการตีความ
  • สามารถจัดการความสัมพันธ์ทั้งเชิงเส้นและไม่เชิงเส้นระหว่างตัวแปร
  • สามารถจัดการช่องว่างคุณลักษณะมิติสูงได้

ข้อเสีย:

  • อาจมีแนวโน้มที่จะฟิตเกินไป
  • อาจไวต่อการเปลี่ยนแปลงเล็กน้อยของข้อมูล

ป่าสุ่ม:

ข้อดี:

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

ข้อเสีย:

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

การจัดกลุ่ม K-Means:

ข้อดี:

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

ข้อเสีย:

  • อ่อนไหวต่อการเลือกเซนทรอยด์เริ่มต้น
  • ถือว่ากระจุกเป็นทรงกลม
  • ไม่เหมาะกับคลัสเตอร์ที่ไม่นูน

พีซีเอ:

ข้อดี:

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

ข้อเสีย:

  • มีความไวต่อขนาดของตัวแปร
  • มีความไวต่อค่าผิดปกติ
  • ไม่ใช่เรื่องง่ายที่จะตีความเสมอไป

การจัดกลุ่มแบบลำดับชั้น:

ข้อดี:

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

ข้อเสีย:

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

การเรียนรู้แบบถามตอบ:

ข้อดี:

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

ข้อเสีย:

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

ซาร์ซา:

ข้อดี:

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

ข้อเสีย:

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

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

  • คำแนะนำสำหรับการอ่านเพิ่มเติมและแหล่งข้อมูลสำหรับผู้ที่สนใจเรียนรู้เพิ่มเติมเกี่ยวกับการเรียนรู้ของเครื่องใน Python

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเรียนรู้ของเครื่องใน Python ต่อไปนี้คือคำแนะนำบางส่วนสำหรับการอ่านและแหล่งข้อมูลเพิ่มเติม:

  1. Python Machine Learning” โดย Sebastian Raschkaและ Vahid Mirjalili — นี่คือหนังสือที่ครอบคลุมเนื้อหาเกี่ยวกับ อัลกอริธึมการเรียนรู้ของเครื่องที่สำคัญที่สุดใน Python ครอบคลุมการเรียนรู้ทั้งแบบมีผู้สอนและแบบไม่มีผู้ดูแล รวมถึงตัวอย่างการปฏิบัติจริงและเคล็ดลับการปฏิบัติ
  2. เว็บไซต์ scikit-learn — นี่คือเว็บไซต์อย่างเป็นทางการของห้องสมุด scikit-learn ซึ่งเป็นห้องสมุดการเรียนรู้ของเครื่องยอดนิยมสำหรับ Python ประกอบด้วยเอกสาร บทช่วยสอน และตัวอย่างสำหรับอัลกอริทึมทั้งหมดที่กล่าวถึงในบล็อกโพสต์นี้
  3. หลักสูตรการเรียนรู้ของเครื่องด้วย Python ของ Coursera — หลักสูตรนี้เป็นหลักสูตรที่ครอบคลุมซึ่งครอบคลุมอัลกอริทึมการเรียนรู้ของเครื่องที่สำคัญที่สุดใน Python รวมถึงการเรียนรู้แบบมีผู้ดูแลและไม่ได้รับการดูแล และการเรียนรู้แบบเสริมกำลัง จัดส่งโดยมหาวิทยาลัยวอชิงตันและมีอยู่ใน Coursera
  4. KaggleKaggleเป็นแพลตฟอร์มสำหรับการแข่งขันแมชชีนเลิร์นนิง ซึ่งคุณสามารถค้นหาชุดข้อมูลและปัญหาเพื่อฝึกฝนแมชชีนเลิร์นนิงได้ นอกจากนี้ยังมีชุมชนผู้เชี่ยวชาญด้านการเรียนรู้ของเครื่องที่แบ่งปันโซลูชันและแนวทางปฏิบัติที่ดีที่สุดของตน
  5. หลักสูตรการเรียนรู้ของเครื่องใน Python ของ DataCamp — เป็นหลักสูตรแบบโต้ตอบที่ครอบคลุมอัลกอริทึมการเรียนรู้ของเครื่องที่สำคัญที่สุดใน Python รวมถึงการเรียนรู้แบบมีผู้ดูแลและไม่ได้รับการดูแล และการเรียนรู้แบบเสริมกำลัง ประกอบด้วยตัวอย่างและแบบทดสอบเชิงปฏิบัติเพื่อช่วยคุณทดสอบความเข้าใจ
  6. เว็บไซต์ PyTorch PyTorch เป็นอีกหนึ่งไลบรารีการเรียนรู้ของเครื่องยอดนิยมสำหรับ Python ซึ่งขึ้นชื่อในด้านความสะดวกในการใช้งานและความยืดหยุ่น มันมีประโยชน์อย่างยิ่งสำหรับปัญหาการเรียนรู้เชิงลึก และคุณสามารถดูบทช่วยสอนและตัวอย่างได้จากเว็บไซต์ของพวกเขา

โดยรวมแล้ว แหล่งข้อมูลเหล่านี้จะเปิดโอกาสให้คุณปรับปรุงความเข้าใจเกี่ยวกับ Machine Learning และการนำไปใช้งานใน Python ให้ดียิ่งขึ้น

ฉันหวังว่าคุณจะพบเนื้อหาที่ให้ข้อมูลและมีส่วนร่วม 🤗 แสดงการสนับสนุนของคุณด้วยการปรบมือ 👏🏻 และติดตามฉันให้มากขึ้น 💻 ความคิดเห็นของคุณเป็นสิ่งสำคัญสำหรับฉัน และเราอยากได้ยินความคิดเห็นของคุณในความคิดเห็น โปรดแบ่งปันหัวข้อที่คุณต้องการเห็นในโพสต์ต่อๆ ไป 🤔 และบล็อกที่คุณติดตามเป็นประจำ 📚