การนำส่วนเบี่ยงเบนมาตรฐาน (Standard Deviation) มาวิเคราะห์ข้อมูลใน Machine Learning ด้วย Python
ค่าเบี่ยงเบนมาตรฐาน (Standard deviation) เป็นตัวชี้วัดความแปรปรวนของข้อมูลที่ใช้งานกันอย่างแพร่หลายใน Machine Learning โดยมักนำมาใช้เป็นตัวชี้วัดในการแจกแจงการกระจายของข้อมูล ค่าเบี่ยงเบนมาตรฐานจะบอกถึงค่าเฉลี่ยระยะห่างของข้อมูลจากค่าเฉลี่ยของข้อมูล ซึ่งจะช่วยให้เราเข้าใจถึงการกระจายของข้อมูลในชุดข้อมูลนั้นๆได้ง่ายขึ้น
ค่าเบี่ยงเบนมาตรฐานจะถูกคำนวณโดยใช้สูตรดังนี้:
โดยที่:
คือ ค่าเบี่ยงเบนมาตรฐาน
คือ จำนวนข้อมูลในชุดข้อมูล
คือ ข้อมูลที่ i
คือ ค่าเฉลี่ยของชุดข้อมูล
หากค่าเบี่ยงเบนมาตรฐานมีค่าน้อย แสดงว่าข้อมูลมีการกระจายตัวใกล้กันมาก ส่วนถ้ามีค่ามาก แสดงว่าข้อมูลกระจายตัวไปทั่วไป
การนำค่าเบี่ยงเบนมาตรฐาน (standard deviation) มาใช้ใน Machine Learning สามารถนำไปใช้ในการวิเคราะห์และปรับปรุงโมเดลได้หลากหลาย โดยใช้ค่าเบี่ยงเบนมาตรฐาน เราสามารถวิเคราะห์ได้ว่าข้อมูลแต่ละชุดมีความแปรปรวนมากน้อยแค่ไหน หรือมีความแม่นยำเท่าไหร่
โดยปกติแล้ว ค่าเบี่ยงเบนมาตรฐาน (standard deviation) จะถูกนำมาใช้เพื่อแสดงการกระจายของข้อมูล ซึ่งค่าที่สูงแสดงว่าข้อมูลมีการกระจายอย่างแตกต่างกันมาก และค่าที่ต่ำแสดงว่าข้อมูลมีการกระจายอย่างเข้มงวดมากขึ้น
การใช้ค่าเบี่ยงเบนมาตรฐาน (standard deviation) ใน Machine Learning มีประโยชน์ในการวิเคราะห์และปรับปรุงโมเดล เช่น
-
ใช้ในการตรวจสอบคุณภาพของข้อมูล ค่าเบี่ยงเบนมาตรฐานช่วยให้เราตรวจสอบได้ว่าข้อมูลมีความแปรปรวนเท่าใด ถ้ามีค่าเบี่ยงเบนมาตรฐานสูงอาจแสดงว่าข้อมูลมีความแปรปรวนมากและควรต้องพิจารณาการปรับปรุงโมเดล
-
ใช้ในการเลือก Feature การเลือก feature ที่มีค่าเบี่ยงเบนมาตรฐานสูงมากๆ อาจช่วยให้เราตัด feature ที่ไม่จำเป็นทิ้งได้ เพื่อลดความซับซ้อนของโมเดลและประหยัดเวลาในการ train model
-
ใช้ในการปรับปรุงโมเดล การวิเคราะห์ค่าเบี่ยงเบนมาตรฐานช่วยให้เรารู้ว่าโมเดลของเราสามารถทำนายข้อมูลได้แม่นยำเท่าไร และเราสามารถปรับปรุงโมเดลได้อย่างไรเพื่อทำให้มีประสิทธิภาพสูงขึ้น
-
ใช้ในการสร้าง Threshold ในบางกรณี เราสามารถใช้ค่าเบี่ยงเบนมาตรฐานเพื่อสร้าง threshold ของการตัดสินใจในการจำแนกข้อมูลได้ เช่น ถ้าค่าเบี่ยงเบนมาตรฐานสูงมาก แสดงว่าข้อมูลมีความแปรปรวนมาก จึงสามารถกำหนด threshold ให้สูงขึ้นเพื่อป้องกันการ overfitting ของโมเดล
- ใช้ในการทำนายโมเดล สามารถวิเคราะห์ความแตกต่างระหว่างโมเดลที่แตกต่างกันได้ และช่วยในการตัดสินใจว่าโมเดลใดจะให้ผลลัพธ์ที่ดีที่สุด
ค่าเบี่ยงเบนมาตรฐาน (standard deviation) เป็นตัวบอกว่าข้อมูลมีความแตกต่างกันเพียงใด โดยการนำมาใช้ในการตรวจสอบคุณภาพข้อมูลใน Machine Learning จะช่วยให้เราสามารถตรวจสอบได้ว่าข้อมูลมีความคลาดเคลื่อน (variance) หรือไม่ และว่ามี outlier (ค่าผิดปกติ) หรือไม่
การตรวจสอบคุณภาพของข้อมูลด้วย ค่าเบี่ยงเบนมาตรฐาน (standard deviation) จะช่วยให้เราสามารถปรับปรุงและเลือก feature ที่มีคุณภาพดีเพื่อนำมาใช้ในการสร้างโมเดล และลดปัญหาการ overfitting หรือ underfitting ของโมเดล
นอกจากนี้ ค่าเบี่ยงเบนมาตรฐาน (standard deviation) ยังสามารถช่วยให้เราปรับ hyperparameter ได้ดีขึ้น เช่นการปรับค่า C ใน SVM หรือค่า learning rate ใน Gradient Descent โดยการตรวจสอบค่า standard deviation ของข้อมูลจะช่วยให้เราเลือกค่า hyperparameter ที่เหมาะสมกับข้อมูลมากขึ้น และช่วยให้การสร้างโมเดลมีประสิทธิภาพมากขึ้นด้วย
การใช้ค่าเบี่ยงเบนมาตรฐาน (standard deviation) สำหรับการตรวจสอบคุณภาพของข้อมูล ด้วยภาษา Python สามารถทำได้โดยใช้ฟังก์ชั่น
numpy
ซึ่งเป็นไลบรารีที่ช่วยในการจัดการกับข้อมูลต่างๆ ที่เกี่ยวข้องกับคณิตศาสตร์เชิงเส้น ดังนั้นสิ่งแรกที่ต้องทำคือติดตั้งnumpy
ก่อน เมื่อได้ทำการติดตั้งnumpy
เรียบร้อยแล้ว สามารถนำฟังก์ชั่นnumpy.std()
เข้ามาใช้งานเพื่อคำนวณหาค่าเบี่ยงเบนมาตรฐานของข้อมูล
ตัวอย่าง การใช้ numpy.std()
เพื่อคำนวณหาค่าเบี่ยงเบนมาตรฐานของข้อมูลแบบง่าย โดยมีข้อมูลประกอบด้วย [5, 10, 15, 20, 25]
import numpy as np
data = [5, 10, 15, 20, 25]
# คำนวณหาค่าเบี่ยงเบนมาตรฐาน
std = np.std(data)
print("Standard deviation:", std)
ผลลัพธ์ที่ได้ คือ
Standard deviation: 7.905694150420948
ตัวอย่าง การใช้ข้อมูลความสูง (height) ของนักเรียนที่เรียนอยู่ในโรงเรียนหนึ่ง นำข้อมูลความสูงเหล่านี้มาคำนวณค่าเบี่ยงเบนมาตรฐานด้วยฟังก์ชัน std()
ที่มีอยู่ใน Python library NumPy ดังนี้
import numpy as np
height = [155, 162, 170, 175, 168, 164, 167, 172, 178, 180]
std_dev = np.std(height)
print("Standard Deviation:", std_dev)
ผลลัพธ์ที่ได้จะแสดงค่าเบี่ยงเบนมาตรฐานของข้อมูลความสูงทั้งหมดในตัวแปร height
Standard Deviation: 7.57926736250669
จากนั้นหลังจากได้ค่าเบี่ยงเบนมาตรฐานแล้ว เราสามารถนำมาใช้ในการปรับปรุงและสร้างโมเดล Machine Learning ได้ เช่น ในการตัดสินใจเลือก feature ที่มีความสัมพันธ์กับ target variable ให้ดีขึ้น หรือในการปรับ hyperparameters ของโมเดล เพื่อทำให้โมเดลให้มีประสิทธิภาพและความแม่นยำมากขึ้น
ตัวอย่าง การใช้ค่าเบี่ยงเบนมาตรฐาน (standard deviation) ในการวิเคราะห์และปรับปรุงโมเดล Machine Learning
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
# โหลดข้อมูลเข้ามาใน DataFrame
data = pd.read_csv('data.csv')
# ตัดข้อมูลเป็น features และ target
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# ทำการ Scale features ด้วย StandardScaler
sc = StandardScaler()
X = sc.fit_transform(X)
# คำนวณค่าเบี่ยงเบนมาตรฐานของ features
std = np.std(X, axis=0)
# สร้างโมเดล Linear Regression
regressor = LinearRegression()
# Train โมเดล
regressor.fit(X, y)
# ทำนายผลโดยใช้โมเดล
y_pred = regressor.predict(X)
# ประเมินความแม่นยำของโมเดล
rmse = np.sqrt(np.mean((y_pred - y) ** 2))
print('RMSE:', rmse)
# วิเคราะห์ค่าเบี่ยงเบนมาตรฐาน
print('Standard deviation of features:', std)
จากตัวอย่าง เราทำการโหลดข้อมูลจากไฟล์ CSV เข้ามาใน DataFrame และตัดข้อมูลเป็น features และ target ด้วยคำสั่ง iloc
. เราจากนั้นใช้ StandardScaler
จาก scikit-learn เพื่อ Scale features ของเรา และคำนวณค่าเบี่ยงเบนมาตรฐานของ features ด้วย numpy ด้วยการใช้ np.std
กับ axis=0
เพื่อคำนวณค่าเบี่ยงเบนมาตรฐานแต่ละ feature โดยแนวตั้ง ก่อนที่จะสร้างโมเดล Linear Regression และ Train โมเดลด้วยข้อมูลที่ Scale แล้ว ทำนายผล และประเมินความแม่นยำของโมเดลด้วยค่า RMSE สุดท้าย เราวิเคราะห์ค่าเบี่ยงเบนมาตรฐานของ features