การนำส่วนเบี่ยงเบนมาตรฐาน (Standard Deviation) มาวิเคราะห์ข้อมูลใน Machine Learning ด้วย Python

ค่าเบี่ยงเบนมาตรฐาน (Standard deviation) เป็นตัวชี้วัดความแปรปรวนของข้อมูลที่ใช้งานกันอย่างแพร่หลายใน Machine Learning โดยมักนำมาใช้เป็นตัวชี้วัดในการแจกแจงการกระจายของข้อมูล ค่าเบี่ยงเบนมาตรฐานจะบอกถึงค่าเฉลี่ยระยะห่างของข้อมูลจากค่าเฉลี่ยของข้อมูล ซึ่งจะช่วยให้เราเข้าใจถึงการกระจายของข้อมูลในชุดข้อมูลนั้นๆได้ง่ายขึ้น

ค่าเบี่ยงเบนมาตรฐานจะถูกคำนวณโดยใช้สูตรดังนี้:

$\sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N}(x_i - \mu)^2}$

โดยที่:

$\sigma$ คือ ค่าเบี่ยงเบนมาตรฐาน
$N$ คือ จำนวนข้อมูลในชุดข้อมูล
$x_i$ คือ ข้อมูลที่ i
$\mu$ คือ ค่าเฉลี่ยของชุดข้อมูล

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

การนำค่าเบี่ยงเบนมาตรฐาน (standard deviation) มาใช้ใน Machine Learning สามารถนำไปใช้ในการวิเคราะห์และปรับปรุงโมเดลได้หลากหลาย โดยใช้ค่าเบี่ยงเบนมาตรฐาน เราสามารถวิเคราะห์ได้ว่าข้อมูลแต่ละชุดมีความแปรปรวนมากน้อยแค่ไหน หรือมีความแม่นยำเท่าไหร่

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

การใช้ค่าเบี่ยงเบนมาตรฐาน (standard deviation) ใน Machine Learning มีประโยชน์ในการวิเคราะห์และปรับปรุงโมเดล เช่น

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

  2. ใช้ในการเลือก Feature การเลือก feature ที่มีค่าเบี่ยงเบนมาตรฐานสูงมากๆ อาจช่วยให้เราตัด feature ที่ไม่จำเป็นทิ้งได้ เพื่อลดความซับซ้อนของโมเดลและประหยัดเวลาในการ train model

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

  4. ใช้ในการสร้าง Threshold ในบางกรณี เราสามารถใช้ค่าเบี่ยงเบนมาตรฐานเพื่อสร้าง threshold ของการตัดสินใจในการจำแนกข้อมูลได้ เช่น ถ้าค่าเบี่ยงเบนมาตรฐานสูงมาก แสดงว่าข้อมูลมีความแปรปรวนมาก จึงสามารถกำหนด threshold ให้สูงขึ้นเพื่อป้องกันการ overfitting ของโมเดล

  5. ใช้ในการทำนายโมเดล สามารถวิเคราะห์ความแตกต่างระหว่างโมเดลที่แตกต่างกันได้ และช่วยในการตัดสินใจว่าโมเดลใดจะให้ผลลัพธ์ที่ดีที่สุด

ค่าเบี่ยงเบนมาตรฐาน (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