Nonlinear Regression แบบ "ทำมือ" ใน spreadsheet ตอน 2


ความแตกต่างระหว่างคำว่า linear และ nonlinear

รูปแบบอย่างง่ายที่สุด ในการวิเคราะห์ข้อมูลโดย nonlinear regression ก็คือ การเดาค่าพารามิเตอร์

ค่าพารามิเตอร์ก็คือค่าคงที่ซึ่งใช้บรรยายข้อมูลชุดนี้ โดยสมการที่เราเลือก

ค่าพารามิเตอร์ที่ดีที่สุด คือค่าที่ทำให้ผลรวมของ ความผิดพลาดในการทำนายยกกำลังสอง มีค่าน้อยที่สุด

Nonlinear regression ต่างจาก linear regression ตรงวิธีหาค่าพารามิเตอร์นี่เอง

ไม่ใช่ต่างกันเพราะหน้าตาของสมการนะครับ

สมการ Y = a + b X อาจทำ linear regression หรือ nonlinear regression ก็ได้ 

ถ้าทำ linear regression ก็ใช้วิธีเข้าสมการสองชั้น

ชั้นแรก partial derivative ของผลรวม error กำลังสอง เทียบกับ a มีค่าเป็นศูนย์

ชั้นที่สอง partial derivative ของผลรวม error กำลังสอง เทียบกับ b มีค่าเป็นศูนย์

ซึ่งทำให้สามารถพิสูจน์ และแก้สมการสองชั้น หาค่า a และ b ได้

หากแก้สมการหาค่าพารามิเตอร์ตรง ๆ ได้ ก็จะเป็น linear regression

โดยรูปแบบสมการ อาจเป็น polynomial ที่มีตัวยกกำลังคงที่ตายตัวที่ผู้ใช้กำหนดไว้ก่อน

แต่ nonlinear regression เราได้ค่าพารามิเตอร์โดยการ ค้นหา

ดังนั้น สมการเดียวกันที่ทำ linear regression ก็มาทำ nonlinear regression ได้

ในซอฟท์แวร์ มี algorithm มากมายใช้ในการช่วย ค้นหา ให้เจอเร็ว

คนที่เขียนให้ค้นไม่กี่ครั้ง แล้วเจอเร็วทุกครั้ง ก็จะเป็นยอดฝีมือ เขียนซอฟท์แวร์ขายกันเป็นล่ำเป็นสัน

แต่คนที่ค้นไม่เก่ง ก็ไม่ใช่คนโง่ หรือเป็นคนเลว เพราะสามารถไปถึงค่าที่ต้องการได้เหมือนกัน แต่ช้ากว่า(มาก)

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

วิธีค้นที่ว่า ก็มีหลากหลาย ซึ่งกล่าวแบบกลาง ๆ นั้น เราเรียก search algorithm หรือ optimization method ก็ได้ ซึ่งแตกแขนงทั้งแบบใช้ข้อมูลป้อนกลับในการคาดการทิศทางการค้นใหม่แบบทำนายพฤติกรรมล่วงหน้าได้ (ตระกูล deterministic เช่น gradient search, simplex search ซึ่งประพฤติตัวตามสูตรเสมอ) หรือแบบเดาสุ่ม (ตระกูล stochastic method)

แต่ตระกูล stochastic method มีทั้งวิธีแบบฉลาด และแบบโง่งม

แบบโง่งมคือ การเดาสุ่มอย่างมืดบอด ใช้กำลังเข้าหาญหัก (brute force) คือ เดาไปเรื่อย ๆ แล้วเก็บสถิติที่ดีที่สุดอย่างต่อเนื่อง

ก็ใช้ได้เหมือนกัน แต่ไม่เป็นที่ยอมรับ เพราะช้ามากไป

ส่วนวิธีที่ฉลาด มีมากมาย เยอะมาก ๆ

ใครสนใจภาพรวม อาจลองโหลดหนังสือฟรีอ่านก่อน ที่ http://www.it-weise.de/projects/book.pdf

เล่มนี้ คนเขียนเขามาโปรโมทหนังสือด้วยตัวเองในบล็อกเก่าที่ผมเคยเขียนถึง genetic algorithm 

หากเรามีคอมพิวเตอร์ที่เร็วกว่าปัจจุบันสัก ล้านล้านเท่า ใครพอเขียนโปรแกรมเป็น ก็เขียนซอฟท์แวร์ทำ nonlinear regression ได้ง่ายมาก คือ ใช้วิธี เดาลูกเดียว (แล้วหาช่วงความเชื่อมั่นโดยวิธี bootstrap resampling แล้วก็เดาลูกเดียวซ้ำอีกหลาย ๆ ที !) ก็จะได้ค่าพารามิเตอร์ที่ใช้ได้ดีเท่ากับที่ได้จากซอฟท์แวร์ฉลาด ๆ ที่มีขายในปัจจุบันเหมือนกัน

ตัวอย่างเช่น การศึกษาปรากฎการณ์แบ่งตัวของเซลล์ ต้องเข้าใจวงจรชีวเคมีภายใน ซึ่งอธิบายโดยสมการจลนศาสตร์ที่ไม่ทราบค่าตัวพารามิเตอร์ที่มีกว่าร้อยตัว ก็ใช้วิธีเดา ซึ่งก็คือ ทำ nonlinear regression กับสมการเชิงอนุพันธ์กันตรง ๆ แต่ต้องทำใน supercomputer เพราะเครื่องธรรมดา รับมือไม่ไหว

วิธี stochastic method มีจุดแข็งประการหนึ่ง ที่ไม่อาจมองข้าม

นั่นคือ เมื่อต้องรับมือกับพารามิเตอร์หลายตัวพร้อมกัน (=multidimension search) วิธีนี้ สามารถให้ผลที่พอใช้การได้ ค่อนข้างเร็วกว่าวิธีในตระกูล deterministic method

เราจะใช้วิธีในตระกูล stochastic method นี้เอง มาช่วยงาน โดยจะใ้ช้วิธีที่เร็วปานกลาง แต่ "ทำมือ" ได้ง่าย โดยเฉพาะใน spreadsheet

(ยังมีต่อ ในตอนต่อไป)

หมายเลขบันทึก: 155580เขียนเมื่อ 23 ธันวาคม 2007 21:52 น. ()แก้ไขเมื่อ 22 มิถุนายน 2012 14:25 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (2)

อาจารย์ครับ ช่วยกรุณายกตัวอย่างพารามิเตอร์ในการแบ่งเซลล์ และการนำ regression มาใช้พิสูจน์สมมุติฐาน ด้วยได้มั๊ยครับ เป็นกรณีสมมุติก็ได้ครับ

สวัสดีครับ P ครูน้อย

 

  • กรณีตัวอย่างที่ว่าคือ เมื่อเรามีกลุ่มของสมการเชิงอนุพันธ์ที่มีค่าคงที่ปรากฎอยู่ เช่น ในกรณีของ rate kinetics ค่าคงที่หรือ parameters ดังกล่าวเราไม่รู้ว่ามันมีค่าเท่าไหร่ เราต้องใช้วิธีเขียนโปรแกรมให้คอมพิวเตอร์ทดลองเดาและปรับค่าคงที่ดังกล่าว เพื่อให้ทำนายทุกระบบได้แม่นและตรง
  • ประเด็นนี้ไม่ใช่เรื่องสถิติครับ แต่เป็นเรื่องของ cellular kinetic pathways ทาง biochem ซึ่งโดยปรกติ คนจะจับตรงนี้ต้องมีฐานคณิตศาสตร์ที่สูงพอสมควรมาก่อน
พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท