เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

อัลกอริทึมการถดถอยโลจิสติก

มาเจาะลึกหลักการทำงานภายในและสร้างอัลกอริทึมการถดถอยโลจิสติกกัน เนื่องจากฟังก์ชัน logit() ของ statsmodels มีความซับซ้อนมาก เราจะเน้นไปที่การสร้างการถดถอยโลจิสติกแบบง่ายสำหรับชุดข้อมูลเดียว

แทนที่จะใช้ผลรวมกำลังสองเป็นเมตริก เราจะใช้ likelihood แทน อย่างไรก็ตาม log-likelihood มีความเสถียรในเชิงคำนวณมากกว่า จึงใช้ค่านั้นแทน นอกจากนี้ยังมีการปรับอีกหนึ่งจุด ได้แก่ เนื่องจากเราต้องการหาค่าสูงสุดของ log-likelihood แต่ minimize() ค้นหาค่าต่ำสุดเป็นค่าเริ่มต้น จึงคำนวณ negative log-likelihood แทนจะสะดวกกว่า

ค่า log-likelihood ของแต่ละการสังเกตคือ $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

เมตริกที่ต้องคำนวณคือผลรวมติดลบของค่า log-likelihood เหล่านี้

ค่าตัวแปรอธิบาย (คอลัมน์ time_since_last_purchase ของ churn) พร้อมใช้งานในชื่อ x_actual ค่าตอบสนอง (คอลัมน์ has_churned ของ churn) พร้อมใช้งานในชื่อ y_actual logistic นำเข้ามาจาก scipy.stats และ logit() กับ minimize() ก็ถูกโหลดมาแล้วเช่นกัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Regression ระดับกลางด้วย statsmodels ใน 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]))
แก้ไขและรันโค้ด