Logistic regression ทำงานอย่างไร

Regression ระดับกลางด้วย statsmodels ใน Python

Maarten Van den Broeck

Content Developer at DataCamp

ผลรวมกำลังสองใช้ไม่ได้

np.sum((y_pred - y_actual) ** 2)

y_actual มีค่าเป็น 0 หรือ 1 เสมอ

y_pred มีค่าอยู่ระหว่าง 0 ถึง 1

มีเมตริกที่ดีกว่าผลรวมกำลังสอง

Regression ระดับกลางด้วย statsmodels ใน Python

Likelihood

       y_pred * y_actual
Regression ระดับกลางด้วย statsmodels ใน Python

Likelihood

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Regression ระดับกลางด้วย statsmodels ใน Python

Likelihood

np.sum(y_pred * y_actual + (1 - y_pred) * (1 - y_actual))

เมื่อ y_actual = 1

y_pred * 1 + (1 - y_pred) * (1 - 1) = y_pred

เมื่อ y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Regression ระดับกลางด้วย statsmodels ใน Python

Log-likelihood

  • การคำนวณ likelihood ต้องบวกตัวเลขขนาดเล็กมากจำนวนมาก ส่งผลให้เกิดความคลาดเคลื่อนเชิงตัวเลข
  • Log-likelihood คำนวณได้ง่ายกว่า
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

ทั้งสองสมการให้ผลลัพธ์เดียวกัน

Regression ระดับกลางด้วย statsmodels ใน Python

Negative log-likelihood

การ maximize log-likelihood เท่ากับการ minimize negative log-likelihood

-np.sum(log_likelihoods)
Regression ระดับกลางด้วย statsmodels ใน Python

อัลกอริทึม Logistic regression

def calc_neg_log_likelihood(coeffs)

intercept, slope = coeffs
# More calculation!
from scipy.optimize import minimize

minimize(
  fun=calc_neg_log_likelihood,
  x0=[0, 0]
)
Regression ระดับกลางด้วย statsmodels ใน Python

มาฝึกกันเถอะ!

Regression ระดับกลางด้วย statsmodels ใน Python

Preparing Video For Download...