Machine Learning : ตอนที่ 2

TechnologyLeave a Comment on Machine Learning : ตอนที่ 2

Machine Learning : ตอนที่ 2

“Linear Regression”

อัลกอริทึมแรกที่เราจะพูดถึงคือ Linear Regression ซึ่งเป็นหนึ่งในอัลกอริทึมของ “Supervised Learning” ที่ได้กล่าวถึงไปใน บทความ Machine Learning : ตอนที่ 1 ลองนึกภาพถ้าคุณมีบ้านที่ต้องการขายแต่ไม่รู้จะตั้งราคาที่เท่าไหร่ดีให้เหมาะสมกับท้องตลาด โดยราคาจะตั้งขึ้นจากขนาดพื้นที่ของบ้านตามข้อมูลกราฟ 2.1 ที่แสดงด้านล่าง

รูป 2.1 ข้อมูลราคาบ้านตามขนาดพื้นที่ของบ้าน

เมื่อคุณได้เห็นข้อมูลของราคาบ้านตามขนาดพื้นที่ของหลังอื่นก็คงพอจะนำมาเปรียบเทียบเพื่อกำหนดราคาขายบ้านของตัวเองได้ใช่มั้ยครับ เช่นในกรณีที่บ้านของคุณมีขนาด 200 ตรม. คุณก็อาจจะกำหนดราคาที่ 110 ล้านบาทเพื่อให้เหมาะสมกับท้องตลาด

ตัวละครใน Linear Regression

จากเรื่องการตั้งราคาบ้านเรามาคุยกันเรื่องตัวละครที่เราจะใช้เรียกในบทความนี้ ก่อนอื่นตาราง 2.1 คือข้อมูลที่เรามีที่แสดงราคาบ้านตามขนาดของพื้นที่บ้านที่ขายในท้องตลาด เราเรียกข้อมูลนี้ว่า “Training set” เป็นข้อมูลที่เราจะป้อนให้กับระบบเพื่อให้ระบบได้ทำการเรียนรู้

ตัวละครถัดมา mคือจำนวนของ ข้อมูลใน Training set เช่นข้อมูลราคาบ้านที่เราหามาได้มี 117 หลัง เพราะฉนั้น m จึงเท่ากับ 117 สองตัว

จากข้อมูลที่เรามีถ้าผมลองถามว่าอะไรที่ส่งผลต่อราคาบ้านในท้องตลาด อะไรที่เป็นตัวแปร”อินพุท” ที่ทำให้ราคาบ้านเปลี่ยน…. ใช่ครับ ขนาดของบ้านก็คือตัวแปรอินพุท และราคาตามข้อมูลคือตัวแปรเอาท์พุทครับและละครอีกสองตัวที่ผมจะใช้คือ “x“และ y” ซึ่ง x เราจะให้หมายถึงตัวแปรอินพุท(ขนาดพื้นที่ของบ้าน) และ y หมายถึงตัวแปร เอาท์พุท(ราคาบ้าน) ในกรณีที่ผมเรียก หนึ่งตัวอย่างของ Training set ผมจะใช้ (x,y) โดยเราจะเรียกว่า “Training sample” หรือให้เห็นภาพชัดขึ้นเช่น ขนาดของบ้าน 102 ตรม จะราคาเท่ากับ 72 ล้านบาท (102,72) คือ (x^{(2)},y^{(2)})จากตรงนี้ x และ y ไม่ได้ยกกำลัง สอง แต่เป็นตำแหน่งของข้อมูล Training sample ใน Training set ของเรา เพราะฉนั้น (x^{(i)},y^{(i)}) ก็คือตำแหน่งของข้อมูลครับ 

 รูป 2.2 ข้อมูลราคาบ้านตามขนาดพื้นที่ของบ้าน

จากที่เราได้ลองประเมิณราคาบ้านจากข้อมูล (Training set) ที่เราได้มาเรานำ Training set มาผ่าน “Learning Algorithm” ที่ทำให้ระบบได้เรียนข้อมูลที่เราป้อนให้  ซึ่งหลังจากนั้นเราก็จะสามารถประเมิณราคาบ้านโดยป้อนอินพุทใหม่ซึ่งในกรณีนี้คือขนาดพื้นที่บ้านของเราที่ต้องการจะตั้งราคาให้กับ“Hypothesis” หรือ การตั้งสมมุติฐาน และเมื่อผ่านการตั้งสมมุติฐานแล้ว เราก็จะได้เอาท์พุทซึ่งเป็นราคาบ้านเราที่ต้องการให้เหมาะสมกับตลาดที่ได้แสดงโมเดลไว้ที่รูป 2.3 เดี๋ยวเราจะมาลงรายละเอียดในเรื่อง Hypothesis กันต่อในบทความนี้ครับ

รูป 2.3 โมเดลแสดงกระบวนการในระบบ Supervised Learning

Hypothesis 

ในรูป 2.4 แสดงข้อมูลราคาบ้านตามพื้นที่ขนาดของบ้านก็คงพอทำให้เราเห็นกราฟ“เส้นตรง”ที่ลากผ่านกลุ่มกากบาทซึ่งเป้าหมายของเราคือการเลือกตำแหน่งที่เส้นจะลากไปหรือการหาค่าของ \theta_{0},\theta_{1}ที่เหมาะสมที่สุดเพื่อทำให้เส้นสีฟ้าของเราใกล้กับกากบาทให้มากที่สุดเพื่อให้การตั้งราคาของเราเหมาะสมที่สุดกับตลาด แล้วอะไรคือ \theta_{0},\theta_{1}??  

รูป 2.4 ข้อมูลราคาบ้านตามขนาดพื้นที่ของบ้าน

จากสมาการ h_{\theta}(x) = \theta_{0}+\theta_{1}x ซึ่งความชันของกราฟเส้นตรงนี้จะขึ้นอยู่กับค่า \theta_{1}และเส้นจะตัดแกน y ที่ \theta_{0}เช่นในกรณีนี้ \theta_{0} มีค่าเท่ากับศูนย์ คำถามคือ แล้วเราจะเลือกค่า \theta_{0} และ \theta_{1} ได้อย่างไร ก่อนอื่นเราจะมาทำความเข้าใจกันว่าถ้าค่า \theta_{0} และ \theta_{1} เปลี่ยนไปแล้วกราฟเส้นตรงของเราจะรูปร่างหน้าตาเป็นอย่างไร หลายท่านที่คุ้นเคยกับสมการเส้นตรงนี้อยู่แล้วก็สามารถข้ามได้เลยครับ 

เริ่มจากลองคิดดูว่าเมื่อ \theta_{0}= 2, \theta_{1}= 0 กราฟควรจะออกมาเป็นแบบไหนระหว่าง (A) และ (B)

ใช่ครับและคำตอบก็คือ (A) ข้อสังเกตุคือเมื่อ \theta_{1} ที่คูณกับ x= 0 และ h_{\theta}(x) ของเราก็จะมีค่าคงที่ ที่เท่ากับ \theta_{0} หรือให้อธิบายอีกอย่างคือเมื่อเราลองแทน \theta_{1} = 0 ลงใน h_{\theta}(x) = \theta_{0}+\theta_{1}x ดังนั้น h_{\theta}(x) = 2 ตลอดในทุกช่วงของ x

Cost Function 

ย้อนกลับไปที่เป้าหมายของเราคือหาค่า \theta_{0},\theta_{1}ที่เหมาะที่สุดเพื่อให้ได้เส้น Hypothesis ของเราออกมาสอดคล้องหรือ “Fit” กับ training set ของเรามากที่สุด โดยเราสามารถใช้สมการที่เรียกว่า “Cost Function” หรือ เรียกอีกอย่างว่า “Squared error function”(สมการ 2.1) โดยนำมาครอบบน h_{\theta}(x)^{(i)} ก็คือ Hypothesis (สมการ 2.2) เพื่อที่จะได้หาตำแหน่งของเส้นที่ใกล้ที่สุดกับกากบาทสีแดงที่เป็น Training set จากตัวอย่างในรูป 2.4 ถ้าพูดให้เข้าใจง่ายขึ้นก็คือ สมการนี้พยายามหาค่าของ \theta_{0},\theta_{1}ที่ทำห้ค่า error ต่ำที่สุด

    \[j(\theta_{0},\theta_{1}) = \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}-y^{(i)}))^{2}............................................(2.1)\]

และ

    \[h_{\theta}(x)^{(i)} = \theta_{0} + \theta_{1}x^{(i)}..............................................................(2.2)\]

แล้วเราจะทราบได้อย่างไรว่าค่า \theta_{0},\theta_{1}ที่เราใช้เหมาะสมที่สุดแล้ว ในตัวอย่างที่แสดงในรูป 2.6 คำตอบคือเราต้องหาค่าที่ j(\theta_{0},\theta_{1}) ต่ำที่สุด หรือเราจะเรียกว่า “minimize j(\theta_{0},\theta_{1})” เท่าที่เส้นฟังก์ชั่น h_{\theta}(x) จะใกล้กับ Training set ทุกตัว เราลองมาดูตัวอย่างเพื่อให้เห็นภาพชัดเจนยิ่งขึ้นครับ ที่กราฟฟังก์ชั่น h_{\theta}(x) (รูป2.6A) เราจะพบกากบาทสีแดง 3 จุดก็คือ Training set และเส้น Hypothesis  ที่ลากผ่านและไม่ผ่าน Training set ของเรา คำถามคือเส้นที่ฟังก์ชั่น h_{\theta}(x) เท่ากับเท่าไหร่ที่ Hypothesis หรือ h_{\theta}(x) มีค่าเหมาะสมกับ Training set เรามากที่สุดคือ จากตัวอย่างนี้เราจะมาเริ่มที่ระบบของเรามีค่า \theta_{0} = 0 ดังนั้นเราก็เพียงสนใจแต่การหาค่าที่ h_{\theta}(x) =  \theta_{x}   

เมื่อ \theta_{1} = 1 แทนลงในสมการที่ 2.1 จะได้ผลลัพท์ของเส้น Hypothesis ออกมาผ่านจุดกากบาท (Training set) โดยมีค่าความแตกต่างในแนวแกน y ระหว่างจุดบนเส้นที่ผ่านกากบาทเท่ากับศูนย์ 

(1)   \begin{equation*}  \begin{split} j(\theta_{1})  & = \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}-y^{(i)}))^{2} \\  & = \frac{1}{2m}(0^2+0^2+0^2) \\  & = 0^2 \end{split} \end{equation*}

ต่อไปลองเปลี่ยนค่า ,\theta_{1} เมื่อ \theta_{1} = 0.5 แทนลงในสมการที่ 2.1 จะได้ผลลัพท์ดังนี้

(2)   \begin{equation*}  \begin{split} j(\theta_{1})  & = \frac{1}{(2)(3)}[(0.5-1)^2+(1-2)^2+(1.5-3)^2] \\  & = \frac{1}{(2)(3)}(3.5) \\  & = \frac{3.5}{6} \simeq 5.83 \end{split} \end{equation*}

จากรูปที่ 2.6A แสดงผลลัพท์จากการหา h_{\theta}(x) ซึ่งแทนด้วย -1, -0.5, 0, 0.5, 1 และเมื่อเราplotค่าoutputลงในกราฟรูป2.6B เราสามารถเห็นภาพได้อย่างชัดเจนจากรูป 2.6B ว่าค่าที่ j(\theta_{1})ที่ต่ำที่สุด \theta_{1}จะเท่ากับ 1 โดยที่ค่า j(\theta_{1}) มีค่าเท่ากับศูนย์

แล้วในกรณีที่ต้องคำนวณสองตัวแปรหล่ะ จากรูปที่ 2.7 เมื่อเราสนใจแค่ตัวแปรเดียว เราจะสามารถสนใจแค่ค่า \theta_{0} หรือ \theta_{1} รูปเป็นเส้นโค้งก็สามารถเข้าใจได้ แต่เมื่อเราต้องคำนวนทั้งสองตัวแปร การหาค่า Minimize j(\theta_{1},\theta_{1}) นั้นจะมีความสัมพันธ์ของทั้ง \theta_{0} และ \theta_{1} และ ค่าผลลัพท์ของ j(\theta_{1},\theta_{1}) ด้วย เพื่อให้เห็นภาพชัดเจนรูป 2.7 ของเราแสดงภาพ Contour plot ของสมการ 2 ตัวแปรเพื่อ  ให้เห็นว่าจุดที่ต่ำที่สุด “Global optimal” ว่าอยู่ตำแหน่งใด

รูป 2.7 แสดงภาพ Contour Plot แสดง ความชันของสมการ 2 ตัวแปร

จาก Contour line (รูป 2.8B) ลองมองในมุมจากข้างบนลงบนแแอ่ง (Top view) จะเห็นเส้นวงกลมทับซ้อนกันในแกนของ j(\theta_{0}) และ j(\theta_{1}) ซึ่งทุกจุดบนเส้นหนึ่งเส้นมีค่าเท่ากัน ถ้าบางท่านที่สงสัยว่ากากบาทสามอันที่เรียงกันอันบนสุดอยู่ใกล้จุดกึ่งกลางมากที่สุดแต่ทำไมถึงมีค่าเท่ากัน ถ้าย้อนกลับไปที่รูป 2.7 กากบาทสามจุดนั้นมี”ความสูง”ที่เท่ากันเมื่อเทียบจากจุดที่ลึกที่สุดนั่นเองครับ

โดยที่แน่นอนว่าเป้าหมายของเราคือต้องหาจุดที่ต่ำที่สุดในระบบโดย j(\theta_{1},\theta_{1}) ที่เปลี่ยน ก็จะส่งผลถึงเส้นทิศทางของ Hypothesis ของเราครับ  

สรุปเนื้อหาในบทความนี้

จากเนื้อหาของบทนี้คงทำให้ผู้อ่านเห็นภาพของการหา Hyppthesis จากอัลกอลิทึม Linear Regression และลักษณะ Training set แบบไหนที่เราสามารถใช้ Linear Regression ได้ และในบทนี้ได้กล่าวถึงตัวแปรและสมการสำคัญอาทิเช่น Cost function และ Square error Function

ในบทความถัดไปเราจะมาหาวิธีหาค่า  Minimize Cost function j(\theta_{1},\theta_{1}) โดยวิธีที่เรียกว่า “Gradient Descent” ที่เราจะได้ใช้กันในบทความถัดไป Machine Learning : ตอนที่ 3

มันส์ต้องแชร์
ไม่ใช่หนุ่มอักษรแต่อยากลองถ่ายทอดสิ่งที่ชอบผ่านตัวอักษร

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Back To Top