ไขปริศนาการถดถอยโลจิสติก: พื้นฐานทางคณิตศาสตร์, กรณีการใช้งาน, การเรียนรู้เชิงลึก, รหัส Python

การแนะนำ
การถดถอยโลจิสติกเป็นวิธีการทางสถิติที่นิยมใช้สำหรับการวิเคราะห์เชิงทำนาย เป็นประเภทของแบบจำลองเชิงเส้นทั่วไป (GLM) ที่เกี่ยวข้องกับตัวแปรตามหมวดหมู่ ซึ่งแตกต่างจากการถดถอยเชิงเส้น การถดถอยโลจิสติกได้รับการออกแบบมาสำหรับสถานการณ์ที่ตัวแปรเอาต์พุตเป็นแบบไบนารี่หรือแบบสองขั้ว กล่าวคือ ตัวแปรนี้มีผลลัพธ์ที่เป็นไปได้เพียงสองผลลัพธ์เท่านั้น เทคนิคอันทรงพลังนี้มีการใช้งานในหลายโดเมน รวมถึงการดูแลสุขภาพ การเงิน และสังคมศาสตร์ ในบทความที่ครอบคลุมนี้ เราจะสำรวจกรณีการใช้งานของ Logistic Regression และเจาะลึกถึงคณิตศาสตร์ที่เป็นรากฐานของเทคนิคอเนกประสงค์นี้
การถดถอยโลจิสติก: พื้นฐาน
การถดถอยโลจิสติกเป็นอัลกอริทึมการเรียนรู้ภายใต้การดูแลที่จำลองความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้นตามตัวแปรทำนายตั้งแต่หนึ่งตัวขึ้นไป สร้างความสัมพันธ์ระหว่างตัวแปรตามและตัวแปรอิสระโดยการประมาณค่าความน่าจะเป็นโดยใช้ฟังก์ชันลอจิสติกส์
ฟังก์ชันลอจิสติกส์ หรือที่เรียกว่าฟังก์ชันซิกมอยด์ เป็นเส้นโค้งรูปตัว S ที่แมปอินพุตที่มีค่าจริงใดๆ กับค่าระหว่าง 0 ถึง 1 ซึ่งกำหนดเป็น:
P(x) = 1 / (1 + e^(-x))
โดยที่ P(x) คือความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้น และ e คือฐานของลอการิทึมธรรมชาติ ซึ่งมีค่าประมาณ 2.718 มีการใช้ฟังก์ชันลอจิสติกส์เนื่องจากสามารถจับคู่ความน่าจะเป็นที่มีข้อจำกัดระหว่าง 0 ถึง 1 ได้อย่างมีประสิทธิภาพ
คณิตศาสตร์ของการถดถอยโลจิสติก
การถดถอยโลจิสติกสร้างขึ้นจากแนวคิดของการถดถอยเชิงเส้น ซึ่งถือว่าความสัมพันธ์เชิงเส้นตรงระหว่างตัวแปรอิสระและตัวแปรตาม อย่างไรก็ตาม การถดถอยโลจิสติกใช้ฟังก์ชันโลจิสติกเพื่อสร้างความสัมพันธ์นี้
สมการถดถอยโลจิสติกกำหนดโดย:
บันทึก(P(x) / (1 — P(x))) = β0 + β1 * x1 + β2 * x2 + … + βn * xn
ที่ไหน:
- P(x) คือความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้น
- β0, β1, …, βn คือค่าสัมประสิทธิ์ซึ่งแสดงถึงผลกระทบของตัวแปรอิสระแต่ละตัว (x1, x2, …, xn) ต่อความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้น
- log(P(x) / (1 — P(x))) คือ log-odds หรือลอการิทึมของอัตราส่วน Odds
ใช้กรณีของการถดถอยโลจิสติก
การถดถอยโลจิสติกมีแอปพลิเคชันที่หลากหลายในโดเมนต่างๆ กรณีการใช้งานทั่วไปบางกรณี ได้แก่ :
ก. การดูแลสุขภาพ
- การทำนายผลลัพธ์ของโรค: Logistic regression ใช้เพื่อจำลองความน่าจะเป็นที่ผู้ป่วยจะเป็นโรคเฉพาะตามปัจจัยต่างๆ เช่น อายุ เพศ และประวัติทางการแพทย์
- การประเมินประสิทธิภาพของการรักษาทางการแพทย์: ช่วยในการพิจารณาประสิทธิภาพของการรักษาโดยการเปรียบเทียบผลลัพธ์ของการรักษาและกลุ่มควบคุม
- การวิเคราะห์ความเสี่ยงด้านสินเชื่อ: การถดถอยโลจิสติกใช้เพื่อทำนายความเป็นไปได้ที่ผู้กู้จะผิดนัดชำระหนี้ตามประวัติเครดิต รายได้ และตัวแปรทางการเงินอื่นๆ
- การคาดคะเนการเลิกใช้บริการของลูกค้า: ช่วยให้บริษัทต่างๆ สามารถระบุลูกค้าที่มีความเสี่ยงที่จะเลิกใช้บริการ ทำให้สามารถรักษาเป้าหมายไว้ได้
- การวิเคราะห์พฤติกรรมการลงคะแนนเสียง: การถดถอยโลจิสติกสามารถจำลองความน่าจะเป็นของบุคคลในการลงคะแนนเสียงให้กับผู้สมัครรับเลือกตั้งรายใดรายหนึ่งโดยพิจารณาจากปัจจัยทางประชากรศาสตร์และเศรษฐกิจและสังคม
- Attrition modeling: ใช้เพื่อคาดการณ์การหมุนเวียนของพนักงานโดยพิจารณาจากปัจจัยต่างๆ เช่น ความพึงพอใจในงาน เงินเดือน และสภาพแวดล้อมในการทำงาน
การถดถอยโลจิสติกขึ้นอยู่กับสมมติฐานหลายประการ ได้แก่ :
- ความเป็นเส้นตรง: การถดถอยโลจิสติกจะถือว่าความสัมพันธ์เชิงเส้นระหว่างค่าล็อกออดด์ของเหตุการณ์ที่เกิดขึ้นกับตัวแปรทำนาย
- ความเป็นอิสระของการสังเกต: การสังเกตแต่ละครั้งในชุดข้อมูลควรเป็นอิสระจากสิ่งอื่น
- ขาด multicollinearity: ตัวแปรทำนายไม่ควรมีความสัมพันธ์กันอย่างมาก เนื่องจากอาจทำให้การประมาณค่าไม่เสถียรและขัดขวางความสามารถในการตีความของแบบจำลอง
- ขนาดตัวอย่างใหญ่: การถดถอยโลจิสติกมักต้องใช้ขนาดตัวอย่างใหญ่เพื่อให้ได้ผลลัพธ์ที่ถูกต้องและเชื่อถือได้
- จำกัดเฉพาะผลลัพธ์แบบไบนารี: การถดถอยโลจิสติกได้รับการออกแบบมาสำหรับปัญหาการจำแนกประเภทแบบไบนารีเป็นหลัก สำหรับปัญหาการจำแนกประเภทหลายชั้น สามารถใช้ส่วนขยายเช่นการถดถอยโลจิสติกแบบพหุนามหรือกลยุทธ์หนึ่งต่อหนึ่งที่เหลือได้
- ไม่สามารถจับความสัมพันธ์ที่ซับซ้อนได้: การถดถอยโลจิสติกอาจมีปัญหาในการสร้างแบบจำลองความสัมพันธ์ที่ซับซ้อนระหว่างตัวแปร โดยเฉพาะอย่างยิ่งเมื่อมีปฏิสัมพันธ์หรือความไม่เป็นเส้นตรง
- ไวต่อค่าผิดปกติ: อัลกอริทึมไวต่ออิทธิพลของค่าผิดปกติ ซึ่งอาจส่งผลต่อค่าสัมประสิทธิ์และประสิทธิภาพของโมเดลอย่างมาก
ในการประเมินประสิทธิภาพของแบบจำลองการถดถอยโลจิสติก สามารถใช้เมตริกต่างๆ ได้ เช่น:
- เมทริกซ์ความสับสน: ตารางที่สรุปผลบวกจริง ผลลบจริง ผลบวกลวง และผลลบเท็จที่เกิดจากแบบจำลอง
- ความแม่นยำ: สัดส่วนของการคาดคะเนที่ถูกต้องโดยแบบจำลอง
- ความแม่นยำ: สัดส่วนของผลบวกจริงจากผลบวกที่คาดการณ์ไว้ทั้งหมด
- เรียกคืน: สัดส่วนของผลบวกจริงจากผลบวกจริง
- คะแนน F1: ค่าเฉลี่ยฮาร์มอนิกของความแม่นยำและการเรียกคืน ซึ่งมีประโยชน์เมื่อต้องจัดการกับชุดข้อมูลที่ไม่สมดุล
หากต้องการปรับปรุงประสิทธิภาพของโมเดลการถดถอยโลจิสติก ให้พิจารณา:
- วิศวกรรมคุณลักษณะ: สร้างคุณลักษณะใหม่หรือแปลงคุณลักษณะที่มีอยู่เพื่อให้จับความสัมพันธ์ระหว่างตัวแปรได้ดียิ่งขึ้น
- การเลือกคุณสมบัติ: ลบคุณสมบัติที่ไม่เกี่ยวข้องหรือซ้ำซ้อนออกเพื่อลดสัญญาณรบกวนและปรับปรุงความสามารถในการตีความโมเดล
- การทำให้เป็นมาตรฐาน: ใช้เทคนิคต่างๆ เช่น การทำให้เป็นมาตรฐาน L1 หรือ L2 เพื่อป้องกันการโอเวอร์ฟิตและเพิ่มความสามารถทั่วไปของโมเดล
การถดถอยโลจิสติกสัมพันธ์อย่างใกล้ชิดกับการเรียนรู้เชิงลึกและการรับรู้ เนื่องจากทำหน้าที่เป็นรากฐานสำหรับการพัฒนาโครงข่ายประสาทเทียมขั้นสูง การถดถอยโลจิสติกสามารถมองได้ว่าเป็นชั้นเดียว ซึ่งเป็นรูปแบบที่ง่ายที่สุดของโครงข่ายประสาทเทียม ทั้งการถดถอยโลจิสติกและเพอร์เซ็ปตรอนใช้สำหรับงานจำแนกประเภทไบนารี และการเชื่อมต่ออยู่ในฟังก์ชันการเปิดใช้งานและกระบวนการเรียนรู้
การถดถอยโลจิสติกเป็นฟังก์ชันการเปิดใช้งาน
ในบริบทของโครงข่ายประสาทเทียม ฟังก์ชันโลจิสติกหรือฟังก์ชันซิกมอยด์ มักถูกใช้เป็นฟังก์ชันกระตุ้น ฟังก์ชันลอจิสติกแมปค่าอินพุตเป็นช่วงระหว่าง 0 ถึง 1 ซึ่งสามารถตีความได้ว่าเป็นความน่าจะเป็นของคลาสบวกในงานจำแนกประเภทไบนารี
เพอร์เซปตรอนประกอบด้วยชั้นอินพุต น้ำหนัก และฟังก์ชันกระตุ้น ซึ่งอาจเป็นฟังก์ชันโลจิสติกก็ได้ เมื่อใช้ฟังก์ชันลอจิสติกส์เป็นฟังก์ชันกระตุ้นในเพอร์เซปตรอน เพอร์เซ็ปตรอนจะกลายเป็นแบบจำลองการถดถอยโลจิสติกโดยพื้นฐานแล้ว ผลลัพธ์ของ perceptron สามารถคำนวณได้ดังนี้:
P(x) = 1 / (1 + e^(-(β0 + β1 * x1 + β2 * x2 + … + βn * xn)))
โดยที่ P(x) คือความน่าจะเป็นของคลาสบวก และ β0, β1, …, βn คือน้ำหนักที่กำหนดให้กับคุณลักษณะอินพุตแต่ละรายการ (x1, x2, …, xn)
กระบวนการเรียนรู้
ทั้งการถดถอยโลจิสติกและเปอร์เซ็ปตรอนใช้วิธีการปรับให้เหมาะสมตามการไล่ระดับสีเพื่อเรียนรู้น้ำหนักที่เหมาะสมที่สุด ในการถดถอยโลจิสติก วิธีการประมาณค่าความน่าจะเป็นสูงสุด (MLE) จะใช้เพื่อค้นหาน้ำหนักที่เพิ่มค่าความน่าจะเป็นของข้อมูลที่กำหนดให้ได้มากที่สุด ในทำนองเดียวกัน ใน perceptron น้ำหนักจะได้รับการอัปเดตโดยใช้การลงสีแบบไล่ระดับสีหรืออัลกอริทึมการปรับให้เหมาะสมอื่นๆ เพื่อลดข้อผิดพลาดระหว่างผลลัพธ์ที่คาดการณ์ไว้และป้ายกำกับจริง
การถดถอยโลจิสติกและการเรียนรู้เชิงลึก
การถดถอยโลจิสติกสามารถพิจารณาได้ว่าเป็นหน่วยการสร้างสำหรับโมเดลการเรียนรู้เชิงลึก โมเดลการเรียนรู้เชิงลึก เช่น เพอร์เซปตรอนหลายชั้นและโครงข่ายประสาทเทียมประกอบด้วยเซลล์ประสาทที่เชื่อมต่อกันหลายชั้น เซลล์ประสาทแต่ละตัวสามารถใช้ฟังก์ชันลอจิสติกส์เป็นฟังก์ชันกระตุ้น โดยแปลงผลรวมถ่วงน้ำหนักของอินพุตให้เป็นเอาต์พุตที่ไม่ใช่เชิงเส้น
อย่างไรก็ตาม ในสถาปัตยกรรมการเรียนรู้เชิงลึกสมัยใหม่ ฟังก์ชันการเปิดใช้งานอื่นๆ เช่น ReLU (rectified linear unit), Leaky ReLU หรือ Tanh ได้รับความนิยมมากขึ้นเนื่องจากประสิทธิภาพที่ดีกว่าและการฝึกอบรมที่ง่ายกว่าเมื่อเทียบกับฟังก์ชัน sigmoid
โดยสรุป การถดถอยโลจิสติกมีบทบาทสำคัญในรากฐานของการเรียนรู้เชิงลึกและการรับรู้ ทำหน้าที่เป็นฟังก์ชันเปิดใช้งานและช่วยในกระบวนการเรียนรู้ผ่านการปรับให้เหมาะสมตามการไล่ระดับสี แม้ว่าการถดถอยโลจิสติกจะเป็นแบบจำลองที่ค่อนข้างง่ายเมื่อเทียบกับสถาปัตยกรรมการเรียนรู้เชิงลึก แต่การทำความเข้าใจหลักการของมันสามารถช่วยในการเข้าใจโครงข่ายประสาทเทียมที่ซับซ้อนมากขึ้น

ความสัมพันธ์ใกล้ชิดระหว่างการถดถอยโลจิสติกและการรับรู้
เพื่อแสดงความสัมพันธ์ระหว่างการถดถอยโลจิสติกและเปอร์เซ็ปตรอนในทางคณิตศาสตร์ เรามาเริ่มกันที่การกำหนดส่วนประกอบของแบบจำลองทั้งสอง
การถดถอยโลจิสติก
การถดถอยโลจิสติกเป็นแบบจำลองเชิงเส้นทั่วไปที่ประเมินความน่าจะเป็นของผลลัพธ์แบบไบนารีตามคุณลักษณะอินพุตอย่างน้อยหนึ่งรายการ ใช้ฟังก์ชันโลจิสติกเพื่อจับคู่ค่าอินพุตกับช่วง [0, 1] ฟังก์ชันโลจิสติกถูกกำหนดเป็น:
P(x) = 1 / (1 + e^(-z))
โดยที่ P(x) แทนค่าความน่าจะเป็นของคลาสบวก และ z คือค่าผสมเชิงเส้นของคุณสมบัติอินพุตและน้ำหนักที่สอดคล้องกัน:
z = β0 + β1 * x1 + β2 * x2 + … + βn * xn
เพอร์เซปตรอน
Perceptron เป็นเครือข่ายประสาทชั้นเดียวที่ใช้สำหรับงานจำแนกประเภทไบนารี ประกอบด้วยคุณสมบัติการป้อนข้อมูล น้ำหนัก และฟังก์ชันการเปิดใช้งาน แบบจำลอง perceptron สามารถแสดงเป็น:
y = ฉ(z)
โดยที่ y คือเอาต์พุตของ perceptron, f(z) คือฟังก์ชันการเปิดใช้งาน และ z คือผลรวมถ่วงน้ำหนักของคุณสมบัติอินพุต:
z = β0 + β1 * x1 + β2 * x2 + … + βn * xn
ตอนนี้มาเชื่อมต่อการถดถอยโลจิสติกและการรับรู้ทางคณิตศาสตร์:
เมื่อเราใช้ฟังก์ชันลอจิสติกส์ (ฟังก์ชันซิกมอยด์) เป็นฟังก์ชันกระตุ้นในแบบจำลองเพอร์เซปตรอน ผลลัพธ์ของเพอร์เซ็ปตรอนจะกลายเป็น:
y = f(z) = 1 / (1 + e^(-z))
เนื่องจากผลรวมถ่วงน้ำหนัก (z) เท่ากันสำหรับทั้งการถดถอยโลจิสติกและเพอร์เซปตรอน เราจึงสรุปได้ว่าเพอร์เซปตรอนที่มีฟังก์ชันโลจิสติกเป็นฟังก์ชันกระตุ้นนั้นเทียบเท่ากับโมเดลการถดถอยโลจิสติก
โดยสรุป ทั้งการถดถอยโลจิสติกและเพอร์เซ็ปตรอนใช้การรวมกันเชิงเส้นเดียวกันของคุณสมบัติอินพุตและน้ำหนัก (z) เมื่อใช้ฟังก์ชันลอจิสติกส์เป็นฟังก์ชันการเปิดใช้งานในเพอร์เซปตรอน เพอร์เซ็ปตรอนจะเทียบเท่ากับแบบจำลองการถดถอยโลจิสติก ซึ่งแสดงให้เห็นความสัมพันธ์ใกล้ชิดระหว่างแบบจำลองทั้งสอง
รหัส Python บางตัว
ต่อไปนี้เป็นการนำ Python ไปใช้อย่างง่ายของการถดถอยโลจิสติกและ Perceptron ที่มีฟังก์ชันการเปิดใช้งานโลจิสติก (sigmoid) โดยใช้ชุดข้อมูลเดียวกัน เราจะใช้ชุดข้อมูล Iris เพื่อจุดประสงค์ในการสาธิต
นำเข้าไลบรารีที่จำเป็น:
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
iris = datasets.load_iris()
X = iris.data[:100, :2] # Select only first two features for simplicity
y = iris.target[:100] # Select only first two classes for binary classification
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
y_pred_log_reg = log_reg.predict(X_test)
def sigmoid(z):
return 1 / (1 + np.exp(-z))
class Perceptron:
def __init__(self, learning_rate=0.1, n_iterations=1000):
self.learning_rate = learning_rate
self.n_iterations = n_iterations
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
for _ in range(self.n_iterations):
linear_output = np.dot(X, self.weights) + self.bias
y_predicted = sigmoid(linear_output)
# Update weights and bias
self.weights -= self.learning_rate * np.dot(X.T, (y_predicted - y)) / n_samples
self.bias -= self.learning_rate * np.sum(y_predicted - y) / n_samples
def predict(self, X):
linear_output = np.dot(X, self.weights) + self.bias
y_predicted = sigmoid(linear_output)
return np.round(y_predicted)
perc = Perceptron()
perc.fit(X_train, y_train)
y_pred_perc = perc.predict(X_test)
accuracy_log_reg = accuracy_score(y_test, y_pred_log_reg)
accuracy_perc = accuracy_score(y_test, y_pred_perc)
print("Logistic Regression Accuracy:", accuracy_log_reg)
print("Perceptron with Logistic Activation Function Accuracy:", accuracy_perc)
บทสรุป
การถดถอยโลจิสติกเป็นวิธีการทางสถิติที่หลากหลายและมีประสิทธิภาพ ซึ่งสามารถจำลองความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้นตามตัวแปรทำนายหนึ่งตัวหรือมากกว่า ด้วยแอปพลิเคชันที่ครอบคลุมการดูแลสุขภาพ การเงิน และสังคมศาสตร์ การถดถอยโลจิสติกจึงเป็นวิธีที่มีประสิทธิภาพในการแก้ปัญหาการจำแนกเลขฐานสอง ด้วยการทำความเข้าใจพื้นฐานทางคณิตศาสตร์ สมมติฐาน และข้อจำกัด ผู้ปฏิบัติงานสามารถใช้ประโยชน์จากการถดถอยโลจิสติกเพื่อทำการตัดสินใจและคาดการณ์อย่างรอบรู้ในขอบเขตต่างๆ
การสร้างบทความนี้ได้รับการสนับสนุนบางส่วนโดย GPT-4