Logistic Regression คือ อะไร

Logistic Regression คือ อะไร
Photo by Lee Campbell

ใช้สำหรับปัญหา Classification ใช้ในการประมาณความน่าจะเป็นที่ Instance จะไปอยู่ใน Class หนึ่งๆ เช่น

  • ทำนายนักเรียนที่จะสอบผ่าน หรือ ไม่ผ่าน จากจำนวนชั่วโมงเข้าเรียน
  • ทำนาย Transaction ว่าเป็น Fraud หรือไม่

🟢 ข้อดี

  • แน้วโน้มที่จะเกิด Overfit น้อย แต่เป็นไปได้ กรณี High Dimensional Datasets
  • ใช้งานได้ดี เมื่อ Dataset มีความสัมพันธ์แบบ Linear
  • ง่ายในการ Implement และ ใช้เวลาในการ Train น้อย
  • แปลความหมายได้ง่าย

🔴 ข้อเสีย

  • จากสมมติฐาน ต้องเป็น Linear Boundary
  • ไม่มีความสามารถในการทำงานกับความสัมพันธ์ที่ซับซ้อนมากได้

Hyper-parameters ใน Logistic Regression

  • C (Inverse ของ regularization strength)
  • penalty (ถูกใช้ในการระบุ Norm ใน Penalization)
  • solver (Algorithm ที่ใช้สำหรับ Optimization)
  • max_iter (จำนวน Iterations สูงสุด สำหรับ Solvers ที่จะ Converge)
  • fit_intercept (ระบุหากมี Constant ที่ต้องเพิ่มใน Decision Function)
  • multi_class (กรณีใช้กับปัญหา Multi-classes)

ตัวอย่าง Python Code 👨🏻‍💻

# To import libraries
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import classification_report

# To load dataset
data = load_iris()
X = data.data
y = data.target

# To split train and test data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Initialize Logistic Regression
clf = LogisticRegression()

# To define hyper-parameters grid for tuning
param_grid = {
    'C': np.logspace(-4, 4, 20),
    'penalty':['l2','none'],
    'solver':['newton-cg','lbfs','liblinear','sag','saga'],
    'max_iter':[100, 500, 1000, 1500]
}

# To use GridSerachCV to find the best hyperparameters
grid_search = GridSearchCV(clf, param_grid=param_grid, cv=5, verbose=1, n_jobs=-1)

grid_search.fit(X_train, y_train)

# To print the best hyper-parameters
print ("Best Parameters: ", grid_search.best_params_)

# To use the best model for predicting the test data
best_clf = grid_search.best_estimator_
predictions = best_clf.predict(X_test)

# To print the classification report
print (classification_report(y_test, predictions))

******

อ่านเพิ่มเติม Pros & Cons ของ Machine Learning Algorithms ที่นิยมใช้

******

ข้อมูลอ้างอิง - Analytics Vidhya