เคี้ยวการถดถอยโลจิสติก

เคี้ยวการถดถอยโลจิสติก

ในบทความนี้ เราจะวิเคราะห์การคำนวณทางทฤษฎีของการแปลง ฟังก์ชันการถดถอยเชิงเส้น в ฟังก์ชันการแปลง logit ผกผัน (หรือเรียกว่าฟังก์ชันตอบสนองลอจิสติก). จากนั้นจึงใช้คลังแสง วิธีความน่าจะเป็นสูงสุดตามแบบจำลองการถดถอยโลจิสติก เราได้ฟังก์ชันการสูญเสียมา การสูญเสียทางลอจิสติกส์หรืออีกนัยหนึ่ง เราจะกำหนดฟังก์ชันที่เลือกพารามิเตอร์ของเวกเตอร์น้ำหนักในแบบจำลองการถดถอยโลจิสติก เคี้ยวการถดถอยโลจิสติก.

โครงร่างบทความ:

  1. ให้เราทำซ้ำความสัมพันธ์เชิงเส้นระหว่างตัวแปรสองตัว
  2. เรามาระบุความจำเป็นในการเปลี่ยนแปลงกันดีกว่า ฟังก์ชันการถดถอยเชิงเส้น เคี้ยวการถดถอยโลจิสติก в ฟังก์ชั่นตอบสนองลอจิสติกส์ เคี้ยวการถดถอยโลจิสติก
  3. เรามาดำเนินการแปลงและส่งออกกัน ฟังก์ชั่นตอบสนองลอจิสติกส์
  4. ลองทำความเข้าใจว่าทำไมวิธีกำลังสองน้อยที่สุดจึงไม่ดีเมื่อเลือกพารามิเตอร์ เคี้ยวการถดถอยโลจิสติก คุณสมบัติ การสูญเสียทางลอจิสติกส์
  5. เราใช้ วิธีความน่าจะเป็นสูงสุด เพื่อกำหนด ฟังก์ชั่นการเลือกพารามิเตอร์ เคี้ยวการถดถอยโลจิสติก:

    5.1. กรณีที่ 1: ฟังก์ชั่น การสูญเสียทางลอจิสติกส์ สำหรับวัตถุที่มีการกำหนดคลาส 0 и 1:

    เคี้ยวการถดถอยโลจิสติก

    5.2. กรณีที่ 2: ฟังก์ชั่น การสูญเสียทางลอจิสติกส์ สำหรับวัตถุที่มีการกำหนดคลาส -1 и +1:

    เคี้ยวการถดถอยโลจิสติก


บทความนี้ประกอบด้วยตัวอย่างง่ายๆ ซึ่งการคำนวณทั้งหมดทำได้ง่ายด้วยวาจาหรือบนกระดาษ ในบางกรณี อาจจำเป็นต้องใช้เครื่องคิดเลข ดังนั้นเตรียมตัวให้พร้อม :)

บทความนี้มีไว้สำหรับนักวิทยาศาสตร์ข้อมูลซึ่งมีความรู้เบื้องต้นเกี่ยวกับพื้นฐานของแมชชีนเลิร์นนิงในระดับเริ่มต้น

บทความนี้ยังให้โค้ดสำหรับการวาดกราฟและการคำนวณอีกด้วย รหัสทั้งหมดเขียนด้วยภาษา หลาม 2.7. ฉันขออธิบายล่วงหน้าเกี่ยวกับ "ความแปลกใหม่" ของเวอร์ชันที่ใช้ - นี่คือหนึ่งในเงื่อนไขในการเข้าเรียนหลักสูตรที่รู้จักกันดีจาก Yandex บนแพลตฟอร์มการศึกษาออนไลน์ที่มีชื่อเสียงไม่แพ้กัน Courseraและอย่างที่ใครๆ ก็คิดได้ เนื้อหาได้จัดทำขึ้นตามหลักสูตรนี้

01. การพึ่งพาเส้นตรง

มันค่อนข้างสมเหตุสมผลที่จะถามคำถาม - การพึ่งพาเชิงเส้นและการถดถอยโลจิสติกเกี่ยวอะไรกับมัน?

มันง่ายมาก! การถดถอยโลจิสติกเป็นหนึ่งในแบบจำลองที่อยู่ในลักษณนามเชิงเส้น พูดง่ายๆ ก็คือ หน้าที่ของตัวแยกประเภทเชิงเส้นคือการทำนายค่าเป้าหมาย เคี้ยวการถดถอยโลจิสติก จากตัวแปร (ตัวถดถอย) เคี้ยวการถดถอยโลจิสติก. เชื่อกันว่าการพึ่งพาระหว่างลักษณะ เคี้ยวการถดถอยโลจิสติก และค่าเป้าหมาย เคี้ยวการถดถอยโลจิสติก เชิงเส้น ดังนั้นชื่อของลักษณนาม - เชิงเส้น หากจะกล่าวอย่างคร่าวๆ แบบจำลองการถดถอยโลจิสติกจะขึ้นอยู่กับสมมติฐานที่ว่ามีความสัมพันธ์เชิงเส้นระหว่างคุณลักษณะต่างๆ เคี้ยวการถดถอยโลจิสติก และค่าเป้าหมาย เคี้ยวการถดถอยโลจิสติก. นี่คือการเชื่อมต่อ

มีตัวอย่างแรกในสตูดิโอ และถูกต้อง เกี่ยวกับการพึ่งพาเป็นเส้นตรงของปริมาณที่กำลังศึกษา ในกระบวนการเตรียมบทความฉันเจอตัวอย่างที่ทำให้หลายคนตกตะลึง - การพึ่งพากระแสกับแรงดันไฟฟ้า (“การวิเคราะห์การถดถอยประยุกต์”, N. Draper, G. Smith). เราจะดูที่นี่ด้วย

ตามที่ กฎของโอห์ม:

เคี้ยวการถดถอยโลจิสติกที่ไหน เคี้ยวการถดถอยโลจิสติก - ความแรงในปัจจุบัน เคี้ยวการถดถอยโลจิสติก - แรงดันไฟฟ้า, เคี้ยวการถดถอยโลจิสติก - ความต้านทาน.

ถ้าเราไม่รู้ กฎของโอห์มจากนั้นเราสามารถค้นหาการพึ่งพาเชิงประจักษ์ได้โดยการเปลี่ยนแปลง เคี้ยวการถดถอยโลจิสติก และการวัด เคี้ยวการถดถอยโลจิสติกในขณะที่สนับสนุน เคี้ยวการถดถอยโลจิสติก ที่ตายตัว. จากนั้นเราจะเห็นว่ากราฟการพึ่งพา เคี้ยวการถดถอยโลจิสติก จาก เคี้ยวการถดถอยโลจิสติก ให้เส้นตรงผ่านจุดกำเนิดไม่มากก็น้อย เราพูดว่า "ไม่มากก็น้อย" เพราะถึงแม้ว่าความสัมพันธ์จะมีความแม่นยำจริงๆ แต่การวัดของเราอาจมีข้อผิดพลาดเล็กน้อย ดังนั้นจุดบนกราฟอาจไม่ตกลงบนเส้นตรง แต่จะกระจัดกระจายแบบสุ่ม

กราฟ 1 “การพึ่งพา” เคี้ยวการถดถอยโลจิสติก จาก เคี้ยวการถดถอยโลจิสติก»

เคี้ยวการถดถอยโลจิสติก

รหัสการวาดแผนภูมิ

import matplotlib.pyplot as plt
%matplotlib inline

import numpy as np

import random

R = 13.75

x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
    y_line.append(i/R)
    
y_dot = []
for i in y_line:
    y_dot.append(i+random.uniform(-0.9,0.9))


fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

02. ความจำเป็นในการแปลงสมการถดถอยเชิงเส้น

ลองดูอีกตัวอย่างหนึ่ง ลองจินตนาการว่าเราทำงานในธนาคารและงานของเราคือการกำหนดโอกาสที่ผู้กู้จะชำระคืนเงินกู้โดยขึ้นอยู่กับปัจจัยบางประการ เพื่อให้งานง่ายขึ้น เราจะพิจารณาเพียงสองปัจจัยเท่านั้น: เงินเดือนรายเดือนของผู้ยืมและจำนวนการชำระคืนเงินกู้รายเดือน

งานนี้มีเงื่อนไขมาก แต่ด้วยตัวอย่างนี้ เราสามารถเข้าใจได้ว่าเหตุใดจึงไม่เพียงพอที่จะใช้งาน ฟังก์ชันการถดถอยเชิงเส้นและยังค้นหาว่าจำเป็นต้องทำการแปลงอะไรบ้างด้วยฟังก์ชัน

กลับมาที่ตัวอย่างกัน เป็นที่เข้าใจว่ายิ่งเงินเดือนสูงเท่าไรผู้กู้ก็จะสามารถจัดสรรรายเดือนเพื่อชำระคืนเงินกู้ได้มากขึ้นเท่านั้น ในเวลาเดียวกัน สำหรับช่วงเงินเดือนหนึ่ง ความสัมพันธ์นี้จะค่อนข้างเป็นเส้นตรง ตัวอย่างเช่น ลองใช้ช่วงเงินเดือนตั้งแต่ 60.000 RUR ถึง 200.000 RUR และสมมติว่าในช่วงเงินเดือนที่ระบุ การขึ้นอยู่กับขนาดของการชำระเงินรายเดือนกับขนาดของเงินเดือนนั้นเป็นเส้นตรง สมมติว่าในช่วงค่าจ้างที่ระบุพบว่าอัตราส่วนเงินเดือนต่อการจ่ายต้องไม่ต่ำกว่า 3 และผู้กู้จะต้องมีเงินสำรอง 5.000 RUR และในกรณีนี้เท่านั้น เราจะถือว่าผู้กู้จะต้องชำระคืนเงินกู้ให้กับธนาคาร จากนั้นสมการการถดถอยเชิงเส้นจะอยู่ในรูปแบบ:

เคี้ยวการถดถอยโลจิสติก

ที่ไหน เคี้ยวการถดถอยโลจิสติก, เคี้ยวการถดถอยโลจิสติก, เคี้ยวการถดถอยโลจิสติก, เคี้ยวการถดถอยโลจิสติก - เงินเดือน เคี้ยวการถดถอยโลจิสติก-ผู้กู้คนที่ เคี้ยวการถดถอยโลจิสติก - ชำระสินเชื่อ เคี้ยวการถดถอยโลจิสติก-ผู้กู้คนที่

แทนที่เงินเดือนและการชำระเงินกู้ด้วยพารามิเตอร์คงที่ลงในสมการ เคี้ยวการถดถอยโลจิสติก คุณสามารถตัดสินใจได้ว่าจะออกหรือปฏิเสธเงินกู้

เมื่อมองไปข้างหน้า เราทราบว่า ด้วยพารามิเตอร์ที่กำหนด เคี้ยวการถดถอยโลจิสติก ฟังก์ชันการถดถอยเชิงเส้นใช้ใน ฟังก์ชั่นตอบสนองลอจิสติกส์ จะสร้างค่าจำนวนมากซึ่งจะทำให้การคำนวณซับซ้อนเพื่อกำหนดความน่าจะเป็นของการชำระคืนเงินกู้ ดังนั้นจึงเสนอให้ลดค่าสัมประสิทธิ์ของเราลง 25.000 เท่า การเปลี่ยนแปลงค่าสัมประสิทธิ์นี้จะไม่เปลี่ยนแปลงการตัดสินใจในการกู้ยืม เรามาจำจุดนี้ไว้สำหรับอนาคต แต่ตอนนี้ เพื่อให้ชัดเจนยิ่งขึ้นว่าเรากำลังพูดถึงอะไร ลองพิจารณาสถานการณ์ของผู้มีโอกาสกู้ยืมสามคน

ตารางที่ 1 “ผู้มีโอกาสกู้ยืม”

เคี้ยวการถดถอยโลจิสติก

รหัสสำหรับสร้างตาราง

import pandas as pd

r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r

data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']), 
        'Salary':np.array([120000,180000,210000]),
       'Payment':np.array([3000,50000,70000])}

df = pd.DataFrame(data)

df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2

decision = []
for i in df['f(w,x)']:
    if i > 0:
        dec = 'Approved'
        decision.append(dec)
    else:
        dec = 'Refusal'
        decision.append(dec)
        
df['Decision'] = decision

df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]

ตามข้อมูลในตาราง Vasya ซึ่งมีเงินเดือน 120.000 RUR ต้องการรับเงินกู้เพื่อที่เขาจะได้ชำระคืนเป็นรายเดือนที่ 3.000 RUR เราพิจารณาแล้วว่าในการอนุมัติเงินกู้ เงินเดือนของ Vasya จะต้องเกินสามเท่าของจำนวนเงินที่ชำระ และยังมีเงินเหลืออยู่ 5.000 RUR Vasya ปฏิบัติตามข้อกำหนดนี้: เคี้ยวการถดถอยโลจิสติก. เหลือเงินอีก 106.000 RUR แม้ว่าเมื่อคำนวณแล้วก็ตาม เคี้ยวการถดถอยโลจิสติก เราได้ลดโอกาสลงแล้ว เคี้ยวการถดถอยโลจิสติก 25.000 ครั้ง ผลเหมือนเดิม - อนุมัติสินเชื่อได้ Fedya จะได้รับเงินกู้ด้วย แต่ Lesha แม้ว่าเขาจะได้รับมากที่สุด แต่ก็จะต้องควบคุมความอยากอาหารของเขา

ลองวาดกราฟสำหรับกรณีนี้กัน

ภาพที่ 2 “การจัดกลุ่มผู้กู้”

เคี้ยวการถดถอยโลจิสติก

รหัสสำหรับการวาดกราฟ

salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2


fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'], 
         'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'], 
         's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

ดังนั้นเส้นตรงของเรา สร้างขึ้นตามฟังก์ชัน เคี้ยวการถดถอยโลจิสติกแยกผู้ยืมที่ “ไม่ดี” ออกจาก “ผู้กู้ที่ดี” ผู้กู้ยืมที่มีความปรารถนาไม่ตรงกับความสามารถของตนอยู่เหนือเส้น (Lesha) ในขณะที่ผู้ที่สามารถชำระคืนเงินกู้ตามพารามิเตอร์ของแบบจำลองของเรานั้นอยู่ต่ำกว่าเส้น (Vasya และ Fedya) กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ดังนี้: สายตรงของเราแบ่งผู้กู้ยืมออกเป็นสองประเภท ให้เราแสดงพวกมันดังนี้: ถึงชั้นเรียน เคี้ยวการถดถอยโลจิสติก เราจะจำแนกผู้กู้ที่มีแนวโน้มจะชำระคืนเงินกู้มากที่สุดเป็น เคี้ยวการถดถอยโลจิสติก หรือ เคี้ยวการถดถอยโลจิสติก เราจะรวมผู้กู้ยืมที่อาจไม่สามารถชำระคืนเงินกู้ได้มากที่สุด

ให้เราสรุปข้อสรุปจากตัวอย่างง่ายๆ นี้ เรามาประเด็นกัน เคี้ยวการถดถอยโลจิสติก และแทนพิกัดของจุดลงในสมการที่สอดคล้องกันของเส้นตรง เคี้ยวการถดถอยโลจิสติกให้พิจารณาสามตัวเลือก:

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

ทีนี้ ลองจินตนาการว่าเราไม่มีปัจจัยสองปัจจัย แต่มีผู้กู้ยืมหลายสิบคน ไม่ใช่สาม แต่มีผู้กู้ยืมหลายพันคน จากนั้นเราจะได้เส้นตรงแทน m-มิติ ระนาบและสัมประสิทธิ์ เคี้ยวการถดถอยโลจิสติก เราจะไม่ถูกนำออกจากอากาศ แต่ได้มาตามกฎทั้งหมดและบนพื้นฐานของข้อมูลที่สะสมของผู้กู้ที่มีหรือยังไม่ได้ชำระคืนเงินกู้ และแน่นอนว่า ขณะนี้เรากำลังเลือกผู้กู้ยืมโดยใช้ค่าสัมประสิทธิ์ที่ทราบอยู่แล้ว เคี้ยวการถดถอยโลจิสติก. ที่จริงแล้ว งานของแบบจำลองการถดถอยโลจิสติกคือการกำหนดพารามิเตอร์อย่างแม่นยำ เคี้ยวการถดถอยโลจิสติกซึ่งค่าของฟังก์ชันการสูญเสีย การสูญเสียทางลอจิสติกส์ จะมีแนวโน้มให้น้อยที่สุด แต่เกี่ยวกับวิธีการคำนวณเวกเตอร์ เคี้ยวการถดถอยโลจิสติกเราจะหาข้อมูลเพิ่มเติมในส่วนที่ 5 ของบทความ ในระหว่างนี้ เราจะกลับไปยังดินแดนแห่งพันธสัญญา - เพื่อไปหานายธนาคารและลูกค้าทั้งสามของเขา

ขอบคุณฟังก์ชัน เคี้ยวการถดถอยโลจิสติก เรารู้ว่าใครสามารถกู้ยืมได้และใครต้องถูกปฏิเสธ แต่คุณไม่สามารถไปหาผู้อำนวยการพร้อมข้อมูลดังกล่าวได้เพราะพวกเขาต้องการได้รับความน่าจะเป็นที่ผู้กู้แต่ละรายจะชำระคืนเงินกู้จากเรา จะทำอย่างไร? คำตอบนั้นง่าย - เราจำเป็นต้องแปลงฟังก์ชันด้วยวิธีใดวิธีหนึ่ง เคี้ยวการถดถอยโลจิสติกซึ่งมีค่าอยู่ในช่วง เคี้ยวการถดถอยโลจิสติก ไปยังฟังก์ชันที่มีค่าจะอยู่ในช่วง เคี้ยวการถดถอยโลจิสติก. และมีฟังก์ชันดังกล่าวอยู่เรียกว่า ฟังก์ชันตอบสนองโลจิสติกหรือการแปลงโลจิตผกผัน. พบปะ:

เคี้ยวการถดถอยโลจิสติก

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

03. เราได้รับฟังก์ชันตอบสนองลอจิสติกส์

ขั้นตอนที่ 1 แปลงค่าความน่าจะเป็นเป็นช่วง เคี้ยวการถดถอยโลจิสติก

ในระหว่างการเปลี่ยนแปลงฟังก์ชัน เคี้ยวการถดถอยโลจิสติก в ฟังก์ชั่นตอบสนองลอจิสติกส์ เคี้ยวการถดถอยโลจิสติก เราจะปล่อยให้นักวิเคราะห์เครดิตของเราอยู่คนเดียวและไปเยี่ยมชมเจ้ามือรับแทงแทน ไม่ แน่นอน เราจะไม่วางเดิมพัน ทั้งหมดที่เราสนใจคือความหมายของสำนวน เช่น โอกาสคือ 4 ต่อ 1 อัตราต่อรองที่นักเดิมพันทุกคนคุ้นเคยคืออัตราส่วนของ “ความสำเร็จ” ต่อ “ ความล้มเหลว” ในแง่ของความน่าจะเป็น อัตราต่อรองคือความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้น หารด้วยความน่าจะเป็นของเหตุการณ์ที่ไม่เกิดขึ้น มาเขียนสูตรโอกาสที่เหตุการณ์จะเกิดขึ้นกันดีกว่า เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก

ที่ไหน เคี้ยวการถดถอยโลจิสติก - ความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้น เคี้ยวการถดถอยโลจิสติก - ความน่าจะเป็นของเหตุการณ์ที่ไม่เกิดขึ้น

เช่น ถ้าความน่าจะเป็นที่ม้าอายุน้อย แข็งแรง และขี้เล่น ชื่อเล่นว่า "เวเทอร็อก" จะเอาชนะหญิงชราป้อแป้ชื่อ "มาทิลด้า" ในการแข่งขันได้เท่ากับ เคี้ยวการถดถอยโลจิสติกแล้วโอกาสสำเร็จของ “เวเทอรอก” ก็คงเป็น เคี้ยวการถดถอยโลจิสติก к เคี้ยวการถดถอยโลจิสติก เคี้ยวการถดถอยโลจิสติก และในทางกลับกันการรู้อัตราต่อรองเราก็คำนวณความน่าจะเป็นได้ไม่ยาก เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก

ดังนั้นเราจึงได้เรียนรู้ที่จะ "แปล" ความน่าจะเป็นเป็นโอกาสซึ่งนำค่ามา เคี้ยวการถดถอยโลจิสติก ไปยัง เคี้ยวการถดถอยโลจิสติก. เรามาเรียนรู้ที่จะ "แปล" ความน่าจะเป็นของเส้นจำนวนทั้งหมดกันดีกว่า เคี้ยวการถดถอยโลจิสติก ไปยัง เคี้ยวการถดถอยโลจิสติก.

ขั้นตอนที่ 2 แปลงค่าความน่าจะเป็นเป็นช่วง เคี้ยวการถดถอยโลจิสติก

ขั้นตอนนี้ง่ายมาก - ลองนำลอการิทึมของอัตราต่อรองไปที่ฐานของเลขออยเลอร์ เคี้ยวการถดถอยโลจิสติก และเราได้รับ:

เคี้ยวการถดถอยโลจิสติก

ตอนนี้เรารู้แล้วว่าถ้า เคี้ยวการถดถอยโลจิสติกแล้วจึงคำนวณค่า เคี้ยวการถดถอยโลจิสติก จะง่ายมาก และยิ่งไปกว่านั้น ควรเป็นบวก: เคี้ยวการถดถอยโลจิสติก. นี่เป็นเรื่องจริง

ด้วยความอยากรู้ เรามาดูกันดีกว่าว่าจะเป็นเช่นไร เคี้ยวการถดถอยโลจิสติกจากนั้นเราคาดว่าจะเห็นค่าลบ เคี้ยวการถดถอยโลจิสติก. เราตรวจสอบ: เคี้ยวการถดถอยโลจิสติก. ถูกตัอง.

ตอนนี้เรารู้วิธีแปลงค่าความน่าจะเป็นแล้ว เคี้ยวการถดถอยโลจิสติก ไปยัง เคี้ยวการถดถอยโลจิสติก ตลอดเส้นจำนวนทั้งหมดจาก เคี้ยวการถดถอยโลจิสติก ไปยัง เคี้ยวการถดถอยโลจิสติก. ในขั้นตอนถัดไปเราจะทำตรงกันข้าม

ในตอนนี้ เราสังเกตว่าตามกฎของลอการิทึม การรู้ค่าของฟังก์ชัน เคี้ยวการถดถอยโลจิสติกคุณสามารถคำนวณอัตราต่อรองได้:

เคี้ยวการถดถอยโลจิสติก

วิธีการกำหนดอัตราต่อรองนี้จะเป็นประโยชน์สำหรับเราในขั้นตอนถัดไป

ขั้นตอนที่ 3 ลองหาสูตรมาพิจารณากัน เคี้ยวการถดถอยโลจิสติก

เราจึงเรียนรู้รู้ เคี้ยวการถดถอยโลจิสติก, ค้นหาค่าฟังก์ชัน เคี้ยวการถดถอยโลจิสติก. อย่างไรก็ตาม ที่จริงแล้ว เราต้องการสิ่งที่ตรงกันข้าม นั่นคือการรู้คุณค่า เคี้ยวการถดถอยโลจิสติก เพื่อค้นหา เคี้ยวการถดถอยโลจิสติก. เมื่อต้องการทำเช่นนี้ ให้เราหันมาใช้แนวคิดเช่นฟังก์ชันอัตราต่อรองผกผัน ตามที่:

เคี้ยวการถดถอยโลจิสติก

ในบทความเราจะไม่ได้รับสูตรข้างต้น แต่เราจะตรวจสอบโดยใช้ตัวเลขจากตัวอย่างด้านบน เรารู้ว่าด้วยอัตราต่อรอง 4 ต่อ 1 (เคี้ยวการถดถอยโลจิสติก) ความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้นคือ 0.8 (เคี้ยวการถดถอยโลจิสติก). มาทำการทดแทนกัน: เคี้ยวการถดถอยโลจิสติก. สิ่งนี้เกิดขึ้นพร้อมกับการคำนวณของเราก่อนหน้านี้ เดินหน้าต่อไป

ในขั้นตอนสุดท้ายเราอนุมานได้ว่า เคี้ยวการถดถอยโลจิสติกซึ่งหมายความว่าคุณสามารถทำการทดแทนในฟังก์ชันอัตราต่อรองผกผันได้ เราได้รับ:

เคี้ยวการถดถอยโลจิสติก

หารทั้งเศษและส่วนด้วย เคี้ยวการถดถอยโลจิสติก, แล้ว:

เคี้ยวการถดถอยโลจิสติก

ในกรณีนี้ เพื่อให้แน่ใจว่าเราไม่ได้ทำผิดพลาดใดๆ เราจะทำการตรวจสอบเล็กๆ น้อยๆ อีกครั้งหนึ่ง ในขั้นตอนที่ 2 เราสำหรับ เคี้ยวการถดถอยโลจิสติก ตัดสินใจว่า เคี้ยวการถดถอยโลจิสติก. จากนั้นจึงทำการแทนค่า เคี้ยวการถดถอยโลจิสติก เข้าสู่ฟังก์ชันการตอบสนองด้านลอจิสติกส์ที่เราคาดว่าจะได้รับ เคี้ยวการถดถอยโลจิสติก. เราทดแทนและรับ: เคี้ยวการถดถอยโลจิสติก

ขอแสดงความยินดี ผู้อ่านที่รัก เราเพิ่งได้รับและทดสอบฟังก์ชันการตอบสนองลอจิสติกส์ ลองดูกราฟของฟังก์ชันกัน

กราฟที่ 3 “ฟังก์ชันตอบสนองลอจิสติกส์”

เคี้ยวการถดถอยโลจิสติก

รหัสสำหรับการวาดกราฟ

import math

def logit (f):
    return 1/(1+math.exp(-f))

f = np.arange(-7,7,0.05)
p = []

for i in f:
    p.append(logit(i))

fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()

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

ฉันขอแนะนำให้กลับไปหานักวิเคราะห์สินเชื่อของเราและช่วยเขาคำนวณความน่าจะเป็นในการชำระคืนเงินกู้ ไม่เช่นนั้นเขาอาจเสี่ยงที่จะถูกทิ้งไว้โดยไม่มีโบนัส :)

ตารางที่ 2 “ผู้มีโอกาสกู้ยืม”

เคี้ยวการถดถอยโลจิสติก

รหัสสำหรับสร้างตาราง

proba = []
for i in df['f(w,x)']:
    proba.append(round(logit(i),2))
    
df['Probability'] = proba

df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]

ดังนั้นเราจึงได้กำหนดความน่าจะเป็นของการชำระคืนเงินกู้ โดยทั่วไปสิ่งนี้ดูเหมือนจะเป็นจริง

แท้จริงแล้ว ความน่าจะเป็นที่ Vasya ซึ่งมีเงินเดือน 120.000 RUR จะสามารถให้ธนาคารได้ 3.000 RUR ทุกเดือนนั้นเกือบถึง 100% อย่างไรก็ตาม เราต้องเข้าใจว่าธนาคารสามารถออกเงินกู้ให้กับ Lesha ได้หากนโยบายของธนาคารกำหนดไว้ เช่น เพื่อให้สินเชื่อแก่ลูกค้าที่มีความน่าจะเป็นในการชำระคืนเงินกู้มากกว่า 0.3 กล่าว เพียงแต่ในกรณีนี้ธนาคารจะสร้างสำรองที่มากขึ้นสำหรับการสูญเสียที่อาจเกิดขึ้น

ควรสังเกตด้วยว่าอัตราส่วนเงินเดือนต่อการจ่ายเงินอย่างน้อย 3 และมีส่วนต่าง 5.000 RUR ถูกนำออกจากเพดาน ดังนั้นเราจึงไม่สามารถใช้เวกเตอร์ของตุ้มน้ำหนักในรูปแบบดั้งเดิมได้ เคี้ยวการถดถอยโลจิสติก. เราจำเป็นต้องลดค่าสัมประสิทธิ์ลงอย่างมาก และในกรณีนี้ เราหารค่าสัมประสิทธิ์แต่ละตัวด้วย 25.000 ซึ่งโดยพื้นฐานแล้ว เราได้ปรับผลลัพธ์แล้ว แต่สิ่งนี้ทำขึ้นโดยเฉพาะเพื่อลดความซับซ้อนในการทำความเข้าใจเนื้อหาในระยะเริ่มแรก ในชีวิตเราไม่จำเป็นต้องประดิษฐ์และปรับสัมประสิทธิ์แต่ต้องหาให้เจอ ในส่วนถัดไปของบทความ เราจะได้สมการที่เลือกพารามิเตอร์ต่างๆ เคี้ยวการถดถอยโลจิสติก.

04. วิธีกำลังสองน้อยที่สุดในการกำหนดเวกเตอร์ของน้ำหนัก เคี้ยวการถดถอยโลจิสติก ในฟังก์ชันตอบสนองลอจิสติกส์

เรารู้วิธีการนี้ในการเลือกเวกเตอร์ของน้ำหนักแล้ว เคี้ยวการถดถอยโลจิสติกในขณะที่ วิธีกำลังสองน้อยที่สุด (LSM) และในความเป็นจริง ทำไมเราไม่ใช้มันในปัญหาการจำแนกประเภทไบนารี่ล่ะ? แท้จริงแล้วไม่มีสิ่งใดขัดขวางไม่ให้คุณใช้งาน บรรษัทข้ามชาติมีเพียงวิธีการนี้ในการแก้ปัญหาการจำแนกประเภทเท่านั้นที่ให้ผลลัพธ์ที่แม่นยำน้อยกว่า การสูญเสียทางลอจิสติกส์. มีพื้นฐานทางทฤษฎีสำหรับเรื่องนี้ ก่อนอื่นเรามาดูตัวอย่างง่ายๆ กันก่อน

สมมติว่าโมเดลของเรา (โดยใช้ MSE и การสูญเสียทางลอจิสติกส์) ได้เริ่มเลือกเวกเตอร์ของตุ้มน้ำหนักแล้ว เคี้ยวการถดถอยโลจิสติก และเราก็หยุดการคำนวณไปในขั้นตอนหนึ่ง ไม่สำคัญว่าอยู่ตรงกลาง ในตอนท้าย หรือตอนเริ่มต้น สิ่งสำคัญคือเรามีค่าเวกเตอร์น้ำหนักอยู่แล้ว และสมมติว่าในขั้นตอนนี้ เวกเตอร์ของน้ำหนัก เคี้ยวการถดถอยโลจิสติก สำหรับทั้งสองรุ่นไม่มีความแตกต่างกัน จากนั้นนำตุ้มน้ำหนักผลลัพธ์มาแทนที่ ฟังก์ชั่นตอบสนองลอจิสติกส์ (เคี้ยวการถดถอยโลจิสติก) สำหรับวัตถุบางอย่างที่เป็นของคลาส เคี้ยวการถดถอยโลจิสติก. เราตรวจสอบสองกรณี เมื่อแบบจำลองของเราผิดพลาดอย่างมาก ตามเวกเตอร์น้ำหนักที่เลือก และในทางกลับกัน โมเดลมีความมั่นใจมากว่าวัตถุนั้นอยู่ในคลาส เคี้ยวการถดถอยโลจิสติก. มาดูกันว่าจะมีการออกค่าปรับอะไรบ้างเมื่อใช้ บรรษัทข้ามชาติ и การสูญเสียทางลอจิสติกส์.

รหัสในการคำนวณบทลงโทษขึ้นอยู่กับฟังก์ชันการสูญเสียที่ใช้

# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01

MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1

# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
    return math.log(proba/(1-proba)) 

LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1

proba_2 = 0.99

MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))

print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2

กรณีของความผิดพลาด — โมเดลกำหนดวัตถุให้กับคลาส เคี้ยวการถดถอยโลจิสติก ด้วยความน่าจะเป็น 0,01

บทลงโทษในการใช้งาน บรรษัทข้ามชาติ จะ:
เคี้ยวการถดถอยโลจิสติก

บทลงโทษในการใช้งาน การสูญเสียทางลอจิสติกส์ จะ:
เคี้ยวการถดถอยโลจิสติก

กรณีที่มีความเชื่อมั่นอย่างแรงกล้า — โมเดลกำหนดวัตถุให้กับคลาส เคี้ยวการถดถอยโลจิสติก ด้วยความน่าจะเป็น 0,99

บทลงโทษในการใช้งาน บรรษัทข้ามชาติ จะ:
เคี้ยวการถดถอยโลจิสติก

บทลงโทษในการใช้งาน การสูญเสียทางลอจิสติกส์ จะ:
เคี้ยวการถดถอยโลจิสติก

ตัวอย่างนี้แสดงให้เห็นอย่างชัดเจนว่าในกรณีที่เกิดข้อผิดพลาดร้ายแรง ฟังก์ชันการสูญเสีย บันทึกการสูญเสีย ลงโทษโมเดลอย่างมีนัยสำคัญมากกว่า MSE. ตอนนี้เรามาทำความเข้าใจว่าพื้นฐานทางทฤษฎีคืออะไรในการใช้ฟังก์ชันการสูญเสีย บันทึกการสูญเสีย ในปัญหาการจำแนกประเภท

05. วิธีความน่าจะเป็นสูงสุดและการถดถอยโลจิสติก

ตามที่สัญญาไว้ตั้งแต่ต้น บทความนี้ประกอบด้วยตัวอย่างง่ายๆ ในสตูดิโอมีอีกตัวอย่างหนึ่งคือแขกเก่า - ผู้ยืมธนาคาร: Vasya, Fedya และ Lesha

ในกรณีนี้ ก่อนที่จะพัฒนาตัวอย่าง ฉันขอเตือนคุณว่าในชีวิตนี้ เรากำลังเผชิญกับตัวอย่างการฝึกอบรมจำนวนหลายพันหรือล้านรายการที่มีคุณสมบัตินับสิบหรือหลายร้อยรายการ อย่างไรก็ตาม มีการใช้ตัวเลขที่นี่เพื่อให้พอดีกับหัวของนักวิทยาศาสตร์ข้อมูลมือใหม่ได้อย่างง่ายดาย

กลับมาที่ตัวอย่างกัน ลองนึกภาพว่าผู้อำนวยการธนาคารตัดสินใจปล่อยเงินกู้ให้กับทุกคนที่ต้องการแม้ว่าอัลกอริทึมจะบอกว่าอย่าให้ Lesha ก็ตาม และตอนนี้เวลาผ่านไปพอสมควรแล้ว และเรารู้ว่าฮีโร่คนไหนในสามคนที่จ่ายคืนเงินกู้ได้ และตัวไหนที่จ่ายไม่ได้ สิ่งที่คาดหวัง: Vasya และ Fedya ชำระคืนเงินกู้ แต่ Lesha ไม่ได้ทำ ตอนนี้ลองจินตนาการว่าผลลัพธ์นี้จะเป็นตัวอย่างการฝึกอบรมใหม่สำหรับเราและในขณะเดียวกันก็เหมือนกับว่าข้อมูลทั้งหมดเกี่ยวกับปัจจัยที่มีอิทธิพลต่อความเป็นไปได้ในการชำระคืนเงินกู้ (เงินเดือนของผู้กู้ ขนาดการชำระเงินรายเดือน) หายไป จากนั้น ตามสัญชาตญาณ เราสามารถสรุปได้ว่าผู้กู้คนที่สามทุกรายไม่ชำระคืนเงินกู้ให้กับธนาคาร หรืออีกนัยหนึ่งคือ ความน่าจะเป็นที่ผู้กู้รายถัดไปจะชำระคืนเงินกู้ เคี้ยวการถดถอยโลจิสติก. สมมติฐานตามสัญชาตญาณนี้ได้รับการยืนยันทางทฤษฎีและมีพื้นฐานมาจาก วิธีความน่าจะเป็นสูงสุดซึ่งมักเรียกในวรรณคดีว่า หลักการความน่าจะเป็นสูงสุด.

ก่อนอื่น เรามาทำความรู้จักกับเครื่องมือทางแนวคิดกันก่อน

ความน่าจะเป็นในการสุ่มตัวอย่าง คือความน่าจะเป็นที่จะได้ตัวอย่างดังกล่าว โดยได้รับการสังเกต/ผลลัพธ์ดังกล่าวทุกประการ กล่าวคือ ผลคูณของความน่าจะเป็นที่จะได้ผลลัพธ์ตัวอย่างแต่ละรายการ (ตัวอย่างเช่น ไม่ว่าจะชำระคืนเงินกู้ของ Vasya, Fedya และ Lesha หรือไม่ก็ตามในเวลาเดียวกัน)

ฟังก์ชันความน่าจะเป็น เชื่อมโยงความน่าจะเป็นของกลุ่มตัวอย่างกับค่าของพารามิเตอร์การกระจาย

ในกรณีของเรา ตัวอย่างการฝึกเป็นแบบแผน Bernoulli ทั่วไป ซึ่งตัวแปรสุ่มรับค่าเพียงสองค่าเท่านั้น: เคี้ยวการถดถอยโลจิสติก หรือ เคี้ยวการถดถอยโลจิสติก. ดังนั้น ความน่าจะเป็นตัวอย่างจึงสามารถเขียนเป็นฟังก์ชันความน่าจะเป็นของพารามิเตอร์ได้ เคี้ยวการถดถอยโลจิสติก ดังต่อไปนี้:

เคี้ยวการถดถอยโลจิสติก
เคี้ยวการถดถอยโลจิสติก

รายการข้างต้นสามารถตีความได้ดังนี้ ความน่าจะเป็นร่วมกันที่ Vasya และ Fedya จะชำระคืนเงินกู้นั้นเท่ากับ เคี้ยวการถดถอยโลจิสติกความน่าจะเป็นที่ Lesha จะไม่ชำระคืนเงินกู้เท่ากับ เคี้ยวการถดถอยโลจิสติก (เนื่องจากไม่ใช่การชำระคืนเงินกู้ที่เกิดขึ้น) ดังนั้น ความน่าจะเป็นร่วมของทั้งสามเหตุการณ์จึงเท่ากัน เคี้ยวการถดถอยโลจิสติก.

วิธีความน่าจะเป็นสูงสุด เป็นวิธีในการประมาณค่าพารามิเตอร์ที่ไม่รู้จักโดยการขยายให้ใหญ่สุด ฟังก์ชันความน่าจะเป็น. ในกรณีของเรา เราจำเป็นต้องค้นหาค่าดังกล่าว เคี้ยวการถดถอยโลจิสติกที่ เคี้ยวการถดถอยโลจิสติก ถึงจุดสูงสุดแล้ว

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

แน่นอนว่าเรากำลังเผชิญกับปัญหาการปรับให้เหมาะสมซึ่งเราจำเป็นต้องค้นหาจุดปลายสุดของฟังก์ชัน ในการค้นหาจุดสุดขั้ว จำเป็นต้องพิจารณาเงื่อนไขอันดับหนึ่ง นั่นคือ เท่ากับอนุพันธ์ของฟังก์ชันให้เป็นศูนย์ และแก้สมการด้วยความเคารพต่อพารามิเตอร์ที่ต้องการ อย่างไรก็ตาม การค้นหาอนุพันธ์ของผลิตภัณฑ์ที่มีปัจจัยจำนวนมากอาจเป็นงานที่ใช้เวลานาน เพื่อหลีกเลี่ยงปัญหานี้ มีเทคนิคพิเศษ - เปลี่ยนไปใช้ลอการิทึม ฟังก์ชันความน่าจะเป็น. เหตุใดการเปลี่ยนแปลงดังกล่าวจึงเป็นไปได้ ให้เราใส่ใจกับความจริงที่ว่าเราไม่ได้มองหาจุดสุดยอดของฟังก์ชันนั้นเองเคี้ยวการถดถอยโลจิสติกและจุดปลายสุด นั่นคือค่าของพารามิเตอร์ที่ไม่รู้จัก เคี้ยวการถดถอยโลจิสติกที่ เคี้ยวการถดถอยโลจิสติก ถึงจุดสูงสุดแล้ว เมื่อเคลื่อนที่ไปที่ลอการิทึม จุดสุดขั้วจะไม่เปลี่ยนแปลง (แม้ว่าจุดสุดขั้วจะต่างกันก็ตาม) เนื่องจากลอการิทึมเป็นฟังก์ชันแบบโมโนโทนิก

ตามที่ระบุไว้ข้างต้น เรามาพัฒนาตัวอย่างของเราต่อไปด้วยการกู้ยืมจาก Vasya, Fedya และ Lesha ก่อนอื่นเรามาต่อกันที่ ลอการิทึมของฟังก์ชันความน่าจะเป็น:

เคี้ยวการถดถอยโลจิสติก

ตอนนี้เราสามารถแยกแยะนิพจน์ได้อย่างง่ายดายโดย เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก

และสุดท้าย พิจารณาเงื่อนไขอันดับหนึ่ง - เราถือเอาอนุพันธ์ของฟังก์ชันเป็นศูนย์:

เคี้ยวการถดถอยโลจิสติก

ดังนั้นการประมาณความน่าจะเป็นของการชำระคืนเงินกู้ตามสัญชาตญาณของเรา เคี้ยวการถดถอยโลจิสติก มีเหตุผลตามทฤษฎีแล้ว

เยี่ยมมาก แต่เราควรทำอย่างไรกับข้อมูลนี้ตอนนี้? หากเราถือว่าผู้กู้ทุก ๆ สามรายไม่คืนเงินให้ธนาคาร ผู้กู้รายหลังก็จะล้มละลายอย่างหลีกเลี่ยงไม่ได้ ถูกต้อง แต่เมื่อประเมินความน่าจะเป็นของการชำระคืนเงินกู้เท่ากับเท่านั้น เคี้ยวการถดถอยโลจิสติก เราไม่ได้คำนึงถึงปัจจัยที่มีอิทธิพลต่อการชำระคืนเงินกู้: เงินเดือนของผู้กู้และขนาดของการชำระเงินรายเดือน ให้เราจำไว้ว่าก่อนหน้านี้เราคำนวณความน่าจะเป็นในการชำระคืนเงินกู้โดยลูกค้าแต่ละรายโดยคำนึงถึงปัจจัยเดียวกันเหล่านี้ เป็นเหตุผลที่เราได้รับความน่าจะเป็นที่แตกต่างจากค่าคงที่ที่เท่ากัน เคี้ยวการถดถอยโลจิสติก.

มากำหนดความน่าจะเป็นของกลุ่มตัวอย่าง:

รหัสสำหรับการคำนวณความน่าจะเป็นตัวอย่าง

from functools import reduce

def likelihood(y,p):
    line_true_proba = []
    for i in range(len(y)):
        ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
        line_true_proba.append(ltp_i)
    likelihood = []
    return reduce(lambda a, b: a*b, line_true_proba)
        
    
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]


print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)

print '****************************************************************************************************'

print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)

ความน่าจะเป็นตัวอย่างที่ค่าคงที่ เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก

ตัวอย่างความน่าจะเป็นเมื่อคำนวณความน่าจะเป็นของการชำระคืนเงินกู้โดยคำนึงถึงปัจจัยต่างๆ เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก
เคี้ยวการถดถอยโลจิสติก

ความน่าจะเป็นของกลุ่มตัวอย่างที่มีความน่าจะเป็นที่คำนวณขึ้นอยู่กับปัจจัยต่างๆ นั้นสูงกว่าความน่าจะเป็นที่มีค่าความน่าจะเป็นคงที่ สิ่งนี้หมายความว่า? สิ่งนี้ชี้ให้เห็นว่าความรู้เกี่ยวกับปัจจัยต่างๆ ทำให้สามารถเลือกความน่าจะเป็นของการชำระคืนเงินกู้สำหรับลูกค้าแต่ละรายได้แม่นยำยิ่งขึ้น ดังนั้นในการออกเงินกู้ครั้งต่อไปควรใช้แบบจำลองที่นำเสนอท้ายบทที่ 3 ของบทความเพื่อประเมินความน่าจะเป็นของการชำระหนี้จะถูกต้องกว่า

แต่แล้วถ้าเราอยากเพิ่มขีดสุด ฟังก์ชันความน่าจะเป็นตัวอย่างถ้าอย่างนั้นทำไมไม่ใช้อัลกอริธึมบางตัวที่จะสร้างความน่าจะเป็นสำหรับ Vasya, Fedya และ Lesha เช่นเท่ากับ 0.99, 0.99 และ 0.01 ตามลำดับ บางทีอัลกอริทึมดังกล่าวอาจทำงานได้ดีกับตัวอย่างการฝึก เนื่องจากจะทำให้ค่าความน่าจะเป็นของตัวอย่างเข้าใกล้มากขึ้น เคี้ยวการถดถอยโลจิสติกแต่ประการแรก อัลกอริธึมดังกล่าวมักจะมีปัญหากับความสามารถในการวางนัยทั่วไป และประการที่สอง อัลกอริธึมนี้จะไม่เชิงเส้นอย่างแน่นอน และหากวิธีการต่อสู้กับการฝึกมากเกินไป (ความสามารถในการสรุปทั่วไปที่อ่อนแอพอ ๆ กัน) ไม่รวมอยู่ในแผนของบทความนี้อย่างชัดเจน เรามาดูรายละเอียดจุดที่สองกันดีกว่า ในการดำเนินการนี้ เพียงตอบคำถามง่ายๆ ความน่าจะเป็นที่ Vasya และ Fedya จะชำระคืนเงินกู้จะเท่ากันหรือไม่โดยคำนึงถึงปัจจัยที่เรารู้จัก? จากมุมมองของตรรกะเสียง แน่นอนว่าไม่ มันไม่สามารถทำได้ ดังนั้น Vasya จะจ่ายเงิน 2.5% ของเงินเดือนต่อเดือนเพื่อชำระคืนเงินกู้และ Fedya - เกือบ 27,8% นอกจากนี้ในกราฟที่ 2 "การจำแนกประเภทลูกค้า" เราเห็นว่า Vasya อยู่ห่างจากเส้นแบ่งคลาสมากกว่า Fedya มาก และสุดท้าย เราก็รู้ว่าฟังก์ชันนั้น เคี้ยวการถดถอยโลจิสติก สำหรับ Vasya และ Fedya ใช้ค่าที่แตกต่างกัน: 4.24 สำหรับ Vasya และ 1.0 สำหรับ Fedya ตัวอย่างเช่น หาก Fedya ได้รับลำดับความสำคัญมากขึ้นหรือขอสินเชื่อน้อยลง ความน่าจะเป็นในการชำระคืนเงินกู้ให้กับ Vasya และ Fedya ก็จะใกล้เคียงกัน กล่าวอีกนัยหนึ่ง ไม่สามารถหลอกการพึ่งพาเชิงเส้นได้ และถ้าเราคำนวณอัตราต่อรองจริงๆ เคี้ยวการถดถอยโลจิสติกและไม่ได้เอามันออกไปจากอากาศเราสามารถพูดได้อย่างปลอดภัยว่าค่านิยมของเรา เคี้ยวการถดถอยโลจิสติก ดีที่สุดให้เราประมาณความน่าจะเป็นของการชำระคืนเงินกู้ของผู้กู้แต่ละราย แต่เนื่องจากเราตกลงที่จะถือว่าการกำหนดค่าสัมประสิทธิ์ เคี้ยวการถดถอยโลจิสติก ดำเนินการตามกฎทั้งหมด จากนั้นเราจะถือว่าเป็นเช่นนั้น - ค่าสัมประสิทธิ์ของเราช่วยให้เราสามารถประมาณความน่าจะเป็นได้ดีขึ้น :)

อย่างไรก็ตามเราพูดนอกเรื่อง ในส่วนนี้ เราต้องเข้าใจว่าเวกเตอร์ของตุ้มน้ำหนักถูกกำหนดอย่างไร เคี้ยวการถดถอยโลจิสติกซึ่งจำเป็นในการประเมินความน่าจะเป็นของการชำระคืนเงินกู้ของผู้กู้แต่ละราย

ให้เราสรุปสั้น ๆ เกี่ยวกับคลังแสงที่เรามองหาอัตราต่อรอง เคี้ยวการถดถอยโลจิสติก:

1. เราถือว่าความสัมพันธ์ระหว่างตัวแปรเป้าหมาย (ค่าทำนาย) และปัจจัยที่มีอิทธิพลต่อผลลัพธ์จะเป็นเส้นตรง ด้วยเหตุนี้จึงมีการใช้ ฟังก์ชันการถดถอยเชิงเส้น ชนิด เคี้ยวการถดถอยโลจิสติกเส้นแบ่งวัตถุ (ไคลเอนต์) ออกเป็นคลาส เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก หรือ เคี้ยวการถดถอยโลจิสติก (ลูกค้าที่สามารถชำระคืนเงินกู้ได้และผู้ที่ไม่สามารถชำระคืนเงินกู้ได้) ในกรณีของเรา สมการจะมีรูปแบบ เคี้ยวการถดถอยโลจิสติก.

2. เราใช้ ฟังก์ชันบันทึกผกผัน ชนิด เคี้ยวการถดถอยโลจิสติก เพื่อกำหนดความน่าจะเป็นของวัตถุที่อยู่ในคลาส เคี้ยวการถดถอยโลจิสติก.

3. เราถือว่าชุดการฝึกอบรมของเราเป็นการดำเนินการทั่วไป แผนการของเบอร์นูลลีนั่นคือสำหรับแต่ละวัตถุจะมีการสร้างตัวแปรสุ่มซึ่งมีความน่าจะเป็น เคี้ยวการถดถอยโลจิสติก (ของตัวเองสำหรับแต่ละวัตถุ) รับค่า 1 และความน่าจะเป็น เคี้ยวการถดถอยโลจิสติก - 0

4. เรารู้ว่าเราต้องเพิ่มอะไรให้สูงสุด ฟังก์ชันความน่าจะเป็นตัวอย่าง โดยคำนึงถึงปัจจัยที่ยอมรับเพื่อให้ตัวอย่างที่มีอยู่เป็นไปได้มากที่สุด กล่าวอีกนัยหนึ่ง เราจำเป็นต้องเลือกพารามิเตอร์ที่ตัวอย่างจะเป็นไปได้มากที่สุด ในกรณีของเรา พารามิเตอร์ที่เลือกคือความน่าจะเป็นของการชำระคืนเงินกู้ เคี้ยวการถดถอยโลจิสติกซึ่งจะขึ้นอยู่กับค่าสัมประสิทธิ์ที่ไม่ทราบ เคี้ยวการถดถอยโลจิสติก. เราจึงต้องหาเวกเตอร์ของน้ำหนักแบบนั้น เคี้ยวการถดถอยโลจิสติกซึ่งความน่าจะเป็นของกลุ่มตัวอย่างจะสูงสุด

5. เรารู้ว่าอะไรจะทำให้เกิดประโยชน์สูงสุด ฟังก์ชันความน่าจะเป็นตัวอย่าง สามารถใช้ วิธีความน่าจะเป็นสูงสุด. และเรารู้เคล็ดลับยุ่งยากทั้งหมดในการทำงานกับวิธีนี้

นี่คือลักษณะการเคลื่อนไหวหลายขั้นตอน :)

ตอนนี้โปรดจำไว้ว่าในตอนต้นของบทความเราต้องการได้รับฟังก์ชันการสูญเสียสองประเภท การสูญเสียทางลอจิสติกส์ ขึ้นอยู่กับวิธีการกำหนดคลาสอ็อบเจ็กต์ มันเกิดขึ้นว่าในปัญหาการจำแนกประเภทที่มีสองคลาส คลาสจะถูกแสดงเป็น เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก หรือ เคี้ยวการถดถอยโลจิสติก. เอาต์พุตจะมีฟังก์ชันการสูญเสียที่สอดคล้องกัน ทั้งนี้ขึ้นอยู่กับสัญกรณ์

กรณีที่ 1 การจำแนกประเภทของวัตถุเป็น เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก

ก่อนหน้านี้เมื่อพิจารณาความน่าจะเป็นของกลุ่มตัวอย่างซึ่งคำนวณความน่าจะเป็นของการชำระหนี้ของผู้กู้ตามปัจจัยและค่าสัมประสิทธิ์ที่กำหนด เคี้ยวการถดถอยโลจิสติกเราใช้สูตร:

เคี้ยวการถดถอยโลจิสติก

แท้จริง เคี้ยวการถดถอยโลจิสติก คือความหมาย ฟังก์ชั่นตอบสนองลอจิสติกส์ เคี้ยวการถดถอยโลจิสติก สำหรับเวกเตอร์น้ำหนักที่กำหนด เคี้ยวการถดถอยโลจิสติก

ถ้าอย่างนั้น ไม่มีอะไรขัดขวางเราไม่ให้เขียนฟังก์ชันความน่าจะเป็นตัวอย่างดังนี้:

เคี้ยวการถดถอยโลจิสติก

มันเกิดขึ้นว่าบางครั้งเป็นเรื่องยากสำหรับนักวิเคราะห์มือใหม่บางคนที่จะเข้าใจทันทีว่าฟังก์ชันนี้ทำงานอย่างไร ลองดูตัวอย่างสั้นๆ 4 ตัวอย่างที่จะอธิบายทุกอย่างให้ชัดเจน:

1. ถ้า เคี้ยวการถดถอยโลจิสติก (เช่น ตามตัวอย่างการฝึก วัตถุอยู่ในคลาส +1) และอัลกอริทึมของเรา เคี้ยวการถดถอยโลจิสติก กำหนดความน่าจะเป็นของการจัดประเภทวัตถุเป็นคลาส เคี้ยวการถดถอยโลจิสติก เท่ากับ 0.9 จากนั้นความน่าจะเป็นของกลุ่มตัวอย่างชิ้นนี้จะถูกคำนวณดังนี้

เคี้ยวการถดถอยโลจิสติก

2. ถ้า เคี้ยวการถดถอยโลจิสติกและ เคี้ยวการถดถอยโลจิสติกจากนั้นการคำนวณจะเป็นดังนี้:

เคี้ยวการถดถอยโลจิสติก

3. ถ้า เคี้ยวการถดถอยโลจิสติกและ เคี้ยวการถดถอยโลจิสติกจากนั้นการคำนวณจะเป็นดังนี้:

เคี้ยวการถดถอยโลจิสติก

4. ถ้า เคี้ยวการถดถอยโลจิสติกและ เคี้ยวการถดถอยโลจิสติกจากนั้นการคำนวณจะเป็นดังนี้:

เคี้ยวการถดถอยโลจิสติก

เห็นได้ชัดว่าฟังก์ชันความน่าจะเป็นจะถูกขยายให้ใหญ่สุดในกรณีที่ 1 และ 3 หรือในกรณีทั่วไป - ด้วยค่าที่เดาได้อย่างถูกต้องของความน่าจะเป็นในการกำหนดวัตถุให้กับคลาส เคี้ยวการถดถอยโลจิสติก.

เนื่องจากข้อเท็จจริงที่ว่าเมื่อพิจารณาความน่าจะเป็นในการกำหนดวัตถุให้กับชั้นเรียน เคี้ยวการถดถอยโลจิสติก เราแค่ไม่รู้สัมประสิทธิ์เท่านั้น เคี้ยวการถดถอยโลจิสติกแล้วเราจะค้นหาพวกเขา ตามที่กล่าวไว้ข้างต้น นี่คือปัญหาการหาค่าเหมาะที่สุด โดยอันดับแรกเราต้องค้นหาอนุพันธ์ของฟังก์ชันความน่าจะเป็นเทียบกับเวกเตอร์ของน้ำหนัก เคี้ยวการถดถอยโลจิสติก. อย่างไรก็ตาม ก่อนอื่น เราควรทำให้งานง่ายขึ้น: เราจะมองหาอนุพันธ์ของลอการิทึม ฟังก์ชันความน่าจะเป็น.

เคี้ยวการถดถอยโลจิสติก

ทำไมหลังจากลอการิทึมใน ฟังก์ชั่นข้อผิดพลาดลอจิสติกส์,เราเปลี่ยนป้ายจาก เคี้ยวการถดถอยโลจิสติก บน เคี้ยวการถดถอยโลจิสติก. ทุกอย่างเป็นเรื่องง่าย เนื่องจากในปัญหาในการประเมินคุณภาพของแบบจำลอง เป็นเรื่องปกติที่จะลดค่าของฟังก์ชันให้เหลือน้อยที่สุด เราจึงคูณทางด้านขวาของนิพจน์ด้วย เคี้ยวการถดถอยโลจิสติก และด้วยเหตุนี้ แทนที่จะขยายใหญ่สุด ตอนนี้เราจึงย่อฟังก์ชันให้เหลือน้อยที่สุด

จริงๆ แล้ว ต่อหน้าต่อตาคุณแล้ว ฟังก์ชันการสูญเสียนั้นได้รับมาอย่างอุตสาหะ - การสูญเสียทางลอจิสติกส์ สำหรับชุดฝึกซ้อมที่มี XNUMX คลาส: เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก.

ทีนี้ หากต้องการหาสัมประสิทธิ์ เราแค่ต้องหาอนุพันธ์ ฟังก์ชั่นข้อผิดพลาดลอจิสติกส์ จากนั้นใช้วิธีการหาค่าเหมาะที่สุดเชิงตัวเลข เช่น การไล่ระดับลงมาหรือการไล่ระดับแบบสุ่ม ให้เลือกค่าสัมประสิทธิ์ที่เหมาะสมที่สุด เคี้ยวการถดถอยโลจิสติก. แต่เนื่องจากมีบทความจำนวนมากจึงเสนอให้ดำเนินการสร้างความแตกต่างด้วยตัวเองหรือบางทีนี่อาจเป็นหัวข้อสำหรับบทความถัดไปที่มีเลขคณิตมากมายโดยไม่มีตัวอย่างโดยละเอียด

กรณีที่ 2 การจำแนกประเภทของวัตถุเป็น เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก

แนวทางที่นี่จะเหมือนกับชั้นเรียน เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติกแต่เป็นเส้นทางของตัวเองไปยังเอาต์พุตของฟังก์ชันการสูญเสีย การสูญเสียทางลอจิสติกส์,จะดูหรูหรามากขึ้น. มาเริ่มกันเลย. สำหรับฟังก์ชันความน่าจะเป็น เราจะใช้ตัวดำเนินการ "ถ้า...ถ้าอย่างนั้น...". นั่นก็คือถ้า เคี้ยวการถดถอยโลจิสติกวัตถุที่ th อยู่ในชั้นเรียน เคี้ยวการถดถอยโลจิสติกจากนั้นในการคำนวณความน่าจะเป็นของกลุ่มตัวอย่าง เราใช้ความน่าจะเป็น เคี้ยวการถดถอยโลจิสติกถ้าวัตถุนั้นเป็นของคลาส เคี้ยวการถดถอยโลจิสติกแล้วเราก็ทดแทนความน่าจะเป็น เคี้ยวการถดถอยโลจิสติก. นี่คือลักษณะของฟังก์ชันความน่าจะเป็น:

เคี้ยวการถดถอยโลจิสติก

ให้เราอธิบายด้วยนิ้วของเราว่ามันทำงานอย่างไร ลองพิจารณา 4 กรณี:

1. ถ้า เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติกจากนั้นความน่าจะเป็นของการสุ่มตัวอย่างจะ “ไป” เคี้ยวการถดถอยโลจิสติก

2. ถ้า เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติกจากนั้นความน่าจะเป็นของการสุ่มตัวอย่างจะ “ไป” เคี้ยวการถดถอยโลจิสติก

3. ถ้า เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติกจากนั้นความน่าจะเป็นของการสุ่มตัวอย่างจะ “ไป” เคี้ยวการถดถอยโลจิสติก

4. ถ้า เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติกจากนั้นความน่าจะเป็นของการสุ่มตัวอย่างจะ “ไป” เคี้ยวการถดถอยโลจิสติก

เห็นได้ชัดว่าในกรณีที่ 1 และ 3 เมื่ออัลกอริธึมกำหนดความน่าจะเป็นอย่างถูกต้อง ฟังก์ชันความน่าจะเป็น จะถูกขยายให้ใหญ่สุด นั่นคือนี่คือสิ่งที่เราต้องการได้รับ อย่างไรก็ตาม วิธีการนี้ค่อนข้างยุ่งยาก และต่อไปเราจะพิจารณารูปแบบที่กะทัดรัดกว่านี้ แต่ก่อนอื่น เรามาลอการิทึมฟังก์ชันความน่าจะเป็นด้วยการเปลี่ยนเครื่องหมาย เนื่องจากตอนนี้เราจะย่อให้เล็กสุด

เคี้ยวการถดถอยโลจิสติก

เรามาทดแทนกัน เคี้ยวการถดถอยโลจิสติก การแสดงออก เคี้ยวการถดถอยโลจิสติก:

เคี้ยวการถดถอยโลจิสติก

มาลดความซับซ้อนของพจน์ที่ถูกต้องภายใต้ลอการิทึมโดยใช้เทคนิคทางคณิตศาสตร์ง่ายๆ แล้วได้:

เคี้ยวการถดถอยโลจิสติก

ตอนนี้ถึงเวลากำจัดโอเปอเรเตอร์แล้ว "ถ้า...ถ้าอย่างนั้น...". โปรดทราบว่าเมื่อมีวัตถุ เคี้ยวการถดถอยโลจิสติก อยู่ในชั้นเรียน เคี้ยวการถดถอยโลจิสติกจากนั้นในนิพจน์ใต้ลอการิทึม ในตัวส่วน เคี้ยวการถดถอยโลจิสติก ยกขึ้นสู่อำนาจ เคี้ยวการถดถอยโลจิสติกถ้าวัตถุนั้นเป็นของคลาส เคี้ยวการถดถอยโลจิสติกจากนั้น $e$ จะถูกยกกำลัง เคี้ยวการถดถอยโลจิสติก. ดังนั้น สัญกรณ์สำหรับระดับจึงสามารถทำให้ง่ายขึ้นโดยการรวมทั้งสองกรณีเป็นหนึ่งเดียว: เคี้ยวการถดถอยโลจิสติก. แล้วก็ ฟังก์ชั่นข้อผิดพลาดลอจิสติกส์ จะอยู่ในรูปแบบ:

เคี้ยวการถดถอยโลจิสติก

ตามกฎของลอการิทึมให้พลิกเศษส่วนแล้วใส่เครื่องหมาย "เคี้ยวการถดถอยโลจิสติก" (ลบ) สำหรับลอการิทึม เราได้:

เคี้ยวการถดถอยโลจิสติก

นี่คือฟังก์ชันการสูญเสีย การสูญเสียลอจิสติกส์ซึ่งใช้ในชุดการฝึกกับวัตถุที่กำหนดให้กับชั้นเรียน: เคี้ยวการถดถอยโลจิสติก и เคี้ยวการถดถอยโลจิสติก.

เมื่อถึงจุดนี้ ฉันขอลาและสรุปบทความนี้

เคี้ยวการถดถอยโลจิสติก ผลงานก่อนหน้าของผู้เขียนคือ “การนำสมการถดถอยเชิงเส้นมาสู่รูปแบบเมทริกซ์”

วัสดุเสริม

1. วรรณกรรม

1) การวิเคราะห์การถดถอยประยุกต์ / N. Draper, G. Smith - 2nd ed. – อ.: การเงินและสถิติ, 1986 (แปลจากภาษาอังกฤษ)

2) ทฤษฎีความน่าจะเป็นและสถิติทางคณิตศาสตร์ / V.E. Gmurman - ฉบับที่ 9 - ม.: มัธยมปลาย, 2003

3) ทฤษฎีความน่าจะเป็น / N.I. เชอร์โนวา - โนโวซีบีสค์: มหาวิทยาลัยแห่งรัฐโนโวซีบีร์สค์, 2007

4) การวิเคราะห์ธุรกิจ: จากข้อมูลสู่ความรู้ / Paklin N. B. , Oreshkov V. I. - 2nd ed — เซนต์ปีเตอร์สเบิร์ก: ปีเตอร์ 2013

5) วิทยาศาสตร์ข้อมูล วิทยาศาสตร์ข้อมูลตั้งแต่เริ่มต้น / Joel Gras - เซนต์ปีเตอร์สเบิร์ก: BHV ปีเตอร์สเบิร์ก, 2017

6) สถิติเชิงปฏิบัติสำหรับผู้เชี่ยวชาญด้าน Data Science / P. Bruce, E. Bruce - เซนต์ปีเตอร์สเบิร์ก: BHV ปีเตอร์สเบิร์ก, 2018

2. การบรรยายหลักสูตร (วิดีโอ)

1) สาระสำคัญของวิธีความเป็นไปได้สูงสุด Boris Demeshev

2) วิธีความน่าจะเป็นสูงสุดในกรณีต่อเนื่อง บอริส เดเมเชฟ

3) การถดถอยโลจิสติก. เปิดหลักสูตร ODS, Yury Kashnitsky

4) การบรรยายที่ 4 Evgeny Sokolov (จากวิดีโอ 47 นาที)

5) การถดถอยโลจิสติก วยาเชสลาฟ โวรอนต์ซอฟ

3. แหล่งข้อมูลอินเทอร์เน็ต

1) การจำแนกเชิงเส้นและแบบจำลองการถดถอย

2) วิธีทำความเข้าใจการถดถอยโลจิสติกอย่างง่ายดาย

3) ฟังก์ชันข้อผิดพลาดลอจิสติกส์

4) การทดสอบอิสระและสูตรเบอร์นูลลี

5) เพลงบัลลาดของ MMP

6) วิธีความน่าจะเป็นสูงสุด

7) สูตรและคุณสมบัติของลอการิทึม

8) ทำไมต้องเบอร์. เคี้ยวการถดถอยโลจิสติก?

9) ลักษณนามเชิงเส้น

ที่มา: will.com

เพิ่มความคิดเห็น