Logistic regression एल्गोरिदम
आइए अंदर की कार्यप्रणाली समझें और एक logistic regression एल्गोरिदम इम्प्लीमेंट करें। क्योंकि statsmodels का logit() फंक्शन काफी जटिल है, आप एक ही डेटासेट के लिए सरल logistic regression इम्प्लीमेंट करने तक सीमित रहेंगे।
Sum of squares को मेट्रिक के रूप में लेने के बजाय, हम likelihood का उपयोग करना चाहते हैं। हालाँकि, log-likelihood कम्प्यूटेशनली ज़्यादा स्थिर होती है, इसलिए हम वही उपयोग करेंगे। एक और बदलाव: हमें log-likelihood को maximize करना है, लेकिन minimize() डिफ़ॉल्ट रूप से minimum ढूँढ़ता है, इसलिए negative log-likelihood निकालना आसान रहता है।
हर observation के लिए log-likelihood का मान है $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$
कैल्कुलेट करने के लिए मेट्रिक इन log-likelihood कॉन्ट्रिब्यूशन्स के negative sum के बराबर है।
Explanatory वैल्यूज़ (churn के time_since_last_purchase कॉलम) x_actual के रूप में उपलब्ध हैं।
Response वैल्यूज़ (churn के has_churned कॉलम) y_actual के रूप में उपलब्ध हैं।
logistic को scipy.stats से इम्पोर्ट किया गया है, और logit() तथा minimize() भी लोड हैं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
इंटरमीडिएट Regression with statsmodels in Python
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Complete the function
def calc_neg_log_likelihood(coeffs):
# Unpack coeffs
____, ____ = ____
# Calculate predicted y-values
y_pred = ____
# Calculate log-likelihood
log_likelihood = ____
# Calculate negative sum of log_likelihood
neg_sum_ll = ____
# Return negative sum of log_likelihood
return ____
# Test the function with intercept 10 and slope 1
print(calc_neg_log_likelihood([10, 1]))