logistic regression

Logistic regression

หลังจากที่เราได้รู้กันไปแล้วว่า การแบ่งข้อมูลแบบ classification คือการแบ่งข้อมูลโดยที่ผลลัพธ์ (Y) ของเรานั้นจะเป็นในรูปแบบ decrete values หรือ category ต่อมาเราจะมาเจาะลึกลงไปในแต่ละ algorithm เลยว่าแต่ละแบบมีกระบวนการคำนวณยังไง และนำไปใช้ประโยชน์อะไรในชีวิตจริงได้บ้าง โดย algorithm แรกที่เราจะไปดูคือ logistic regression  โดยในบทนี้เราจะดูว่า

  1. Logistic regression คืออะไร
  2. สมการ logistic regression
  3. การตีความโดยใช้ probability  
  4. Decision boundary 
  5. Cost function 
  6. Gradient descent 
  7. multi-class classification
  8. วัดความแม่นยำของ model ด้วย confusion matrix
  9. Overfitting คือ อะไร
  10.  แนวทางการแก้ไขปัญหา overfitting

1. Logistic regression คืออะไร

logistic regression คือ การประมาณการข้อมูลโดยผลลัพธ์ (Y) จะออกมาในรูปแบบของ “โอกาสที่จะเกิดเหตุการณ์ที่เราสนใจ” เช่น เราต้องการตรวจเนื้องอกของผู้ป่วยเราก็จะสนใจว่าเนื้องอกนี้มี “โอกาสที่จะเป็นมะเร็ง” เท่าไร เป็นต้น
โดยหลักการคล้ายๆการวิเคราะห์แบบ linear regression คือนำข้อมูล x มาทำการประมาณการแล้วมันก็จะประมาณค่า Y ออกมา แต่ว่าค่า Y ของเราจะเป็นกลุ่ม (category) เหมาะกับการประมาณการข้อมูลที่เป็นเชิงคุณภาพ(Quality) การแบ่งผลลัพธ์แบบ logistic regression เราแบ่งออกเป็น 2 แบบ คือ

  1. ผลลัพธ์แบ่งออกเป็น 2 กลุ่ม yes, no หรือ ดี,แย่ เราเรียกการแบ่งผลลัพธ์แบบนี้ว่า binary logistic regression analysis
  2. แบ่งผลลัพธ์ออกเป็น 3 กลุ่มขึ้นไป เราเรียกว่า multinomial logistic regression analysis
    เพื่อความง่ายเราจะเริ่มจากแบบ binary logistic regression analysis ก่อนนะคะ

2. สมการ logistic regression

ต่อมาเราจะมาอธิบายที่มาของสมการ logistic regression function โดยเริ่มจาก

  1. ผลลัพธ์(Y) ที่เราต้องการนั้น แบ่งงอกเป็น 2 กลุ่ม ดังนั้น y จึงเป็น subset 0และ1 เขียนแทนด้วย y = {0,1} นั้นหมายถึงว่า hypothesis () หรือ สมการประมาณการของเราต้องมีค่าอยู่ระหว่าง 0 และ 1 
  2. สมการ linear regression 
  3. ต่อมาเราจะมา แปลงสมการ linear regression function ของเราให้เป็น logistic regression เพื่อให้ค่า y ออกมาเป็น 2 ค่า โดยใช้ link function เขียนแทนด้วย g(z) (อธิบายเพิ่มเติม link function เป็นสมการแบบหนึ่งที่มันจะแปลงค่าที่ได้จากสมการ linear regression ให้อยู่ในรูปของ Probability ซึ่งค่า probability จะมีค่าอยู่ระหว่าง 0-1 และ logit เป็น 1 ใน link function เลือกใช้เพราะ y ที่เราต้องการแบ่งออกเป็น 2 กลุ่มคือ 0,1 : สามารถอ่านเพิ่มเติมได้ที่นี่)  ขั้นตอนการแปลงสมการเป็นดังนี้
    1. กำหนดให้ multiple linear regression = g() และ Z =  เมื่อ Z คือ จำนวนจริง(real number)
    2. ต่อมาสมการ logistic regression function คือ g(z) = 1/1+e^(-z) จากนั้นนำสมการ logistic functionนี้ คลอบลงไปบนสมการ linear regression ตามข้อกำหนดในข้อที่ 1 สุดท้ายเราก็จะได้สมการ logistic regression function หรืออีกชื่อคือ sigmoid function ดังสมการข้างล่างสุด ส่วนรูปทางด้านขวาเป็นการ plot กราฟระหว่าง g(z) function กับค่า z ซึ่ง logistic function นี้ จะให้ค่าอยู่รหว่าง 0 และ 1 ซึ่งมันก็คือค่า probability นั่นเอง และไม่ว่าค่า x จะมากหรือน้อยมากแค่ไหนค่าค่า probability จะอยู่ในขอบเขต 0-1 เสมอ 

เพิ่มเติม 

จากรูปจะเห็นได้ว่า ไม่ว่าค่า x จะมีค่าเท่าไรเมื่อนำไปคำนวณในสมการค่า multiple linear regression ที่ออกมายังไงก็ไม่เกินขอบเขต 0 และ 1 

3. การตีความโดยใช้ probability

เนื่องจากค่าที่ได้จากสมการ logistic regression เป็นค่า probability ดังนั้นเราจะมาดูว่าเราจะนำค่า probability มาอธิบาย y = 0 และ y = 1 ได้อย่างไร โดยเริ่มจาก

  1. กำหนดผลลัพธ์ของ Yp หรือ y ก่อน 

ส่วนใหญ่แล้วเราจะกำหนดให้ y = 0 คือ negative class หรือก็คือ class ที่เราไม่ได้สนใจ และกำหนดให้ y = 1 คือ positive class คือ class ที่เราสนสนใจ ยกตัวอย่างเช่น Y= 1 คือ โอกาสที่จะเป็นมะเร็ง และ y = 0 คือ โอกาสที่จะไม่เป็นมะเร็ง เมื่อเราใส่ตัวแปร x ลงไป สมมติตัวแปร x คือ ขนาดของเนื้องอก 

   2. นำข้อมูลใน training set ไปคำนวณผ่านสมการ logistic function จะได้ค่าmultiple linear regressionความหมายของ hypothesis (multiple linear regression) คือ

หรือพูดเป็นภาษาบ้านๆคือ โอกาสที่จะเป็นมะเร็งเมื่อขนาดของเนื้องอกมีขนาด X(i) นั่งเอง ต่อไปเป็นตัวอย่างเพื่อให้เห็นภาพมากขึ้นลองดูตัวอย่างด้านล่าง 

ความน่าจะเป็นที่จะเกิดเหตุณการนั้นอยู่ระหว่าง 0 และ 1 ถ้า ดังนั้นโอกาสที่เนื้องอกจะเป็นเนื้องอกดีและเนื้องอกที่เป็นมะเร็ง โอกาสที่จะเกิดรวมกันต้องไม่เกิน 1 จากตัวอย่าง มีโอกาส 70% ที่เนื้องอกจะเป็นมะเร็ง นั่นหมายความว่า มีโอกาส 30% ที่เนื้องอกนั้นจะไม่เป็นมะเร็ง

แต่เราต้องการที่จะแบ่งกลุ่มผลลัพธ์ คือ Y = 0 หรือ y = 1  อย่างชัดเจน เช่นบอกว่า ผ่านหรือไม่ผ่าน เราสามารถแบ่งได้ตามสมการข้างล่างเลย 

4. Decision boundary

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

logistic regression
  1. สมมติเรามีข้อมูล training set ที่ข้างในมี features 2 ตัว คือ x_1 และ x_2 
  2. กำหนดค่า θ ตามภาพ (ตอนนี้เราจะกำหนดขึ้นมาก่อน เดี๋ยวหลังจากนี้เราจะใช้ gradient descent หาค่า θ ที่ดีที่สุดอีกที)
  3. hypothesis ของเรารอบนี้คือ สมการที่เป็น logistic function (g(z)) ได้สมการดังรูป
    • จากความหมายของ hypothesis ที่เราได้อธิบายไปก่อนหน้านั้น ถ้า θ^T X มากกว่าหรือเท่ากับ 0 ดังนั้น y = 1 
    • ดังนั้น เราจะสามารถหา decision boundary ได้โดยการแก้สมการเพื่อหาจุดตัดแกนทั้งสอง features สุดท้ายเราก็จะได้เส้น decision boundary
     ต่อมาเราจะมาลองยกตัวอย่าง โดยลองแทนค่า x_1 , x_2 แล้วดูว่ามันจะ predict y=0 หรือ y=1 และจากนั้นก็จะดูว่ามันให้ค่า probability เท่าไร
logistic regression

และในความเป็นจริง เส้น decision boundary ไม่ได้เป็นแค่เส้นตรง อาจจะเป็นเส้นโค้ง พาราโบลาก็ได้ ทั้งนี้ขึ้นอยู่กับ features ของเรา ยิ่งเรามี features ที่เป็น polynomial มาก เส้น decision boundary ก็จะยิ่งโค้งมาก ลองดูตัวอย่างด้านล่าง

จะเห็นได้ว่า เส้น decision boundary ขึ้นอยู่กับ 2 ตัวแปร คือ features และ θ ซึ่ง features เราไม่สามารถกำหนดได้ ขึ้นอยู่กับกับข้อมูลของเรา แต่ θ คือตัวที่กำหนดว่า slope และ จุด intercept ของเส้น decision boundary ดังนั้นการที่เราจะแบ่งข้อมูลออกมาได้แม่นยำที่สุดก็ขึ้นอยู่กับค่า θ ซึ่งเราสามารถหา ค่า θ ที่แม่นยำที่สุดได้ด้วย Gradient descent แต่เราจะทำ Gradient descent ได้ เมื่อเรามีสมการ Cost function

5. Cost function

ก่อนที่เราจะไปดูวิธีการหาค่า θ เราจะมาดูสมการ cost function โดยสมการ cost function คือ ผลรวมค่า error หากค่า cost function มีค่า = 0 (error = 0) นั่นหมายความว่า ค่า Y ที่ได้จากการประมาณการ = ค่า Yจริง แสดงว่าการประมาณการของเราแม่นยำ 100% 

แต่ในความเป็นจริงนั้นอาจจะเป็นไปได้ยาก ดังนั้นยิ่งค่า cost function มีค่าต่ำมาก ๆ แสดงว่า model ที่เราเลือกใช้ก็มีความแม่นยำกับข้อมูลมาก เราเรียกจุดที่มีค่า cost function มีค่าต่ำที่สุดนี้ว่าจุด optimal minimum นี่เป็น concept cost function ของ linear regression

จากรูป สมการ linear cost function เมื่อแทนสมการ logistic function ลงไปในสมการ และคำนวณค่า cost function ออกมา เมื่อนำมาพล็อตกราฟจะทำให้กราฟที่ได้เป็น non convex ซึ่งกราฟลักษณะนี้ไม่เหมาะกับการหาจุด optimal minimum เนื่องจากว่า เราไม่รู้ว่าจุดที่เป็นแอ่งกระทะนั้นเป็นจุดที่ optimal ที่สุดหรือไม่

ดังนั้นเราต้องหาสมการ cost function ที่เป็น convex ซึ่งมันจะเป็นกราฟเราสามารถหาจุด optimal minimum

logistic regression

ดังนั้น cost function ที่เราได้ก็จะเป็นดังสมการด้านบน 

จากรูปด้านบนเป็นสมการ logistic cost function ที่คำนวณออกมาจามสูตรแล้ว เมื่อคำค่า cost function ไปพล็อตกราฟจะได้เส้นที่เป็น convex ซึ่งเราสามารถหาจุด optimal minimum จากสมการนี้ได้ (เราจะไม่กล่าวถึงที่มาของสมการในบทนี้เนื่องจากมันลึกและซับซ้อน ต้องใช้เวลามาก)
ซึ่งสมการที่ได้มานั้น เราจะลองยกตัวอย่าง สมมติคำนวณ logistic regression ออกมาแล้วได้ว่า Y=1 สมการ cost function ที่ใช้ก็คือ -log(h_θ (x)) เมื่อพล็อตกราฟก็จะได้รูปเหมือนด้านบนขวามือ ซึ่งจากกราฟจะเห็นได้ว่า

  • ถ้า h_θ (x) = 1 >>> cost function = 0
  • ถ้า h_θ (x) มีค่าเข้าใกล้ 0 >>> cost function มีค่าเข้าใกล้ infinity

เมื่อเราเข้าใจ concept และ ความหมายของตัวสมการ cost function แล้ว ต่อไปก็จะถึงขั้นตอนสุดท้ายแล้วนั่นก็คือการหาค่า θ ด้วย Gradient descent

เราก็ได้เดินมาครึ่งทางแล้ว เพื่อไม่ให้บทความของเรายาวจนเกินไป ในส่วนของหัวข้อที่ 6 จนถึง 10 เราจะพูดกันในบทความถัดไปคือ Logistic regression 2