เมทริกซ์

เมทริกซ์ สำหรับ Machine learning

สวัสดีค่ะเพื่อนๆ กลับมาพบกันอีกครั้งแล้วนะคะ หลังจากที่ห่างหายกันไปนาน ตอนนี้เราเองก็ได้มีการวางแผนว่าจะมีการเขียนบทความที่เป็นการประมาณการแบบ Multi-linear regression 

แต่ก่อนที่เราจะไปทำการประมาณการแบบ Multi – linear regression เราจำเป็นที่จะต้องมาทบทวนความรู้ของ Matrix หรือ เมทริกซ์ กันก่อนนะคะ เพราะว่า เมทริกซ์ ถือเป็นสิ่งสำคัญอีกอย่างหนึ่งที่ขาดไม่ได้เลย หากอยากจะทำ machine learning หรือ การคำนวณข้อมูลที่มีตัวแปรจำนวนมากๆ 

ซึ่งในบทนี้เราจะมาดูกันว่า 

  • เมทริกซ์ คืออะไร มีความสำคัญกับการประมาณการอย่างไร 
  • คุณสมบัติของเมทริกซ์ และการ apply กับ regression

เมทริกซ์ คืออะไร มีความสำคัญกับการประมาณการอย่างไร

ก่อนอื่นเรามาทบทวนปริมาณทางคณิตศาสตร์กันก่อนนะคะ ปริมาณในทางคณิศาสตร์นั้นแบ่งออกเป็น  2 แบบคือ 

  • ปริมาณ Scalar เป็นปริมาณที่บอกแค่ขนาด เช่น น้ำหนัก มวล ความสูง เช่น น้ำหนัก 2 กิโลกรัม ตัวเลขที่เขียนจะเป็นจำนวนจริง
  • ปริมาณ Vector เป็นปริมาณที่บอกทั้งขนาดและทิศทาง เช่น แรง การกระจัด ความเร่ง เช่น ก้อนหินกลิ้งไปทางขวา 2 เมตร ตัวเลขที่เขียนจะอยู่ในรูปของ list 

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

และ matrix นั้นมีความสำคัญมากในการแก้ไขสมการเชิงเส้นหลายตัวแปร เดี๋ยวลองมาดูตัวอย่างนะคะ

เช่น        X + Y + 2Z = 8……………สมการที่ 1 

            X + 2Y + Z  = 10 ………สมการที่ 2

            2X  + 3Y  – 3Z = 14….สมการที่ 3

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

ทั้งนี้ เมทริกซ์ ไม่ได้สำคัญแค่แก้สมการหาค่าตัวแปรในคณิตศาสตร์เท่านั้น ในคอมพิวเตอร์แล้ว การเก็บข้อมูลนั้นมีหลายรูปแบบ ทั้งแบบ Data frame , list , vector รวมไปถึงแบบ Matrix ด้วย

ดังนั้นหากเรามีการสอนคอมพิวเตอร์ให้มีการเก็บข้อมูลในรูปแบบ matrix จากนั้นก็สั่งให้มันคำนวณหาค่าตัวแปรทั้งหมดออกมาโดยใช้ code เพียงแค่ไม่กี่บรรทัดเท่านั้น

เพื่อนๆพอจะเห็นความสำคัญของ เมทริกซ์ มาพอคร่าวๆแล้ว เดี๋ยวพอเราเริ่มทำการประมาณการแบบ Multi-linear regression เราจะเห็นภาพมากขึ้นนะคะ

แต่ก่อนอื่น เราไปดูคุณสมบัติของ เมทริกซ์ ก่อนนะคะ

คุณสมบัติของเมทริกซ์ และ การ apply กับ regression

เมทริกซ์

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

จากรูป       Matrix A เราจะเรียกว่า เมทริกซ์ 2 x 2 คือ มี 2 แถว และ 2 คอลัมน์

              Matrix B เราจะเรียกว่า เมทริกซ์ 3 x 2 คือ มี 2 แถว และ 2 คอลัมน์

ต่อมาเราจะมาดู Matrix elements คือสมาชิกแต่ละตัวที่อยู่ในเมทริกซ์ ซึ่งเราจะกำหนดให้

  • i แทน ตำแหน่ง i ที่อยู่ในแถว
  • j แทน ตำแหน่ง j ที่อยู่ในคอลัมน์

และเขียนแทนด้วย หมายถึง   Matrix A ตำแหน่ง ij

ยกตัวอย่างเช่น

  • = 1  คือ สมาชิกที่อยู่ในแถว 1 และคอลัมน์ 1
  • = 2 คือ สมาชิกที่อยู่ในแถว 1 และคอลัมน์ 2
  • = 3 คือ สมาชิกที่อยู่ในแถว 2 และคอลัมน์ 1
  • = 4 คือ สมาชิกที่อยู่ในแถว 2 และคอลัมน์ 2

เพิ่มเติม

indexed คือชื่อที่เราเรียกเพื่อเอาไว้บอกตำแหน่ง โดยปกติแล้วจะแบ่งออกเป็น 2 แบบ คือ 1-indexed และ 0-indexed

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

  • หากเราใช้ 0-indexed และเราต้องการคอมพิวเตอร์แสดงค่า 25 เราต้องพิมพ์ว่า
  • หากเราใช้ 1-indexed และเราต้องการคอมพิวเตอร์แสดงค่า 25 เราต้องพิมพ์ว่า

ซึ่ง indexed ที่เราใช้ในภาษา Python ของเรานี้จะเป็น  0-indexed 

เมื่อเรารู้แล้วว่า เมทริกซ์มีลักษณะอย่างไร ต่อมาเราจะมาดูว่า เมื่อเรานำเมทริกซ์ มาบวก ลบ คูณ หารกับ vector และ scalar จะเป็นอย่างไร (แต่ในที่นี่เราจะสอนคร่าวๆเฉพาะที่สำคัญกับการทำ Machine Learning เท่านั้น) โดยเราจะแบ่งออกเป็น 3 คุณสมบัติหลัก ที่เกี่ยวข้องกับการประมาณการข้อมูล นั่นคือ

  1. Matrix และ Scalar
  2. Matrix และ Vector
  3. Matrix และ Matrix

1. Matrix และ Scalar

เราสามารถนำScalar(จำนวนจริง)มาคูณหรือหารเข้ากับ matrix ได้เลย โดยการนำ scalar คูณหรือหาร ตำแหน่งต่อตำแหน่งได้เลย เช่น

2. Matrix และ vector

ในที่นี้ เราจะไม่พูดถึงการกระทำระหว่าง Matrix และ vector ทั้งหมด มันจะเยอะจนเกินไป เราจะพูดถึงแค่ที่เกี่ยวกับการทำ regression  นั่นคือ การคูณระหว่าง matrix และ vector 

ซึ่งหลักการคูณ คือ นำแถวของตัวตั้ง (m) คูณกับ หลักของตัวคูณ (เนื่องจากเป็น vector ดังนั้นหลักของ vector เป็น 1 เสมอ) ผลลัพธ์จะได้ m-dimensional vector หรือ  m*1 matrix (8,18,28) นั่นเอง ตามภาพด้านล่าง

เมทริกซ์

ทีนี้ เราจะนำหลักการ matrix มา apply กับการประมาณการแบบ linear regression ยกตัวอย่างเช่น

หากเป็นการคำนวณมือแบบปกติ เราก็คงจะแทนค่าขนาด x = 2,3,4 ลงไปในสมการทีละค่า แล้วเราจะสอนคอมพิวเตอร์ให้หาคำตอบได้อย่างไร?

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

ขั้นตอนการคำนวณคือ 

  1. ขั้นแรกเราจะมีการนำ data และค่าในสมการ มาใส่ให้อยู่ในรูปของ matrix ก่อน 
  2. จากนั้นก็ใช้หลักในการ matrix คูณ vector ได้เลย 

วงกลมสีแดง เราใส่ เลข 1 ลงไปใน column แรก เนื่องจากว่าในสมการทางคณิตศาสตร์ เราต้องการการบวกค่า theta_0(slope) เข้าไปด้วย เพื่อให้ได้คำตอบที่ถูกต้องตามสมการ หากเราไม่ใส่ เมื่อคอมพิวเตอร์คำนวณออกมา จะทำให้คำตอบที่ได้ผิด ดังรูปด้านล่าง

เมื่อเราใส่ 1 เพิ่มตรง column ทำให้ ค่า x กลายเป็น matrix 3*2  และค่าที่อยู่ในสมการ Y นั้น vector อยู่แล้วจากนั้นก็ใช้หลักการคูณกันระหว่าง matrix และ vector (ซึ่งใช้หลักการเดียวกับการคูณ matrix กับ matrix จะต่างแค่ ตัวคูณเป็น matrix m*1 มิติ ) ได้เลย  

3.Matrix และ Matrix

เราจะแบ่งออกเป็น 2 แบบหลักๆ คือ

  • การบวกและการลบ
  • การคูณและการหาร 
  1. การที่ matrix สองอันจะบวกหรือลบกันได้ จะต้องผ่านเงื่อนไขนี้ก่อน นั่นคือ
    • ทั้งสอง matrix จะต้องมีมิติที่เท่ากัน
    • บวกหรือลบตัวเลขที่อยู่ในตำแหน่งเดียวกันเท่านั้น หากmatrix มีมิติไม่เท่ากัน บวกกันไม่ได้ (error) ดังรูปด้านล่าง

matrix สองอันจะคูณกันได้ก็ต่อเมื่อ 

  1. จำนวนคอลัมน์ตัวตั้ง = จำนวนแถวตัวคูณ 
  2. นำแถวของตัวตั้ง x คอลัมน์ของตัวคูณ ตำแหน่งต่อตำแหน่ง

ตัวอย่าง

คำตอบที่ได้มาจากการที่เราแยกการคำนวณออกเป็น 2 ส่วนตามคอลัมน์ของตัวคูณ

ทีนี้เราจะนำหลักการคูณกันของ matrix มา apply กันสมการ linear regression กรณีที่เรามีสมการมากกว่า 1 สมการ ยกตัวอย่างเช่น 

จากรูป สมมติว่าเราต้องการหาค่า Y ทั้งหมด เราสามารถ ใช้วิธี matrix * matrix ได้ โดยการจัดข้อมูลให้อยู่ในรูปของ matrix ดังรูปด้านล่าง

4. Matrix (คุณสมบัติอื่นๆ)

ต่อมาเราจะมาพูดถึงคุณสมบัติอื่นๆของ matrix กันนะคะ  ที่จำเป็นต่อการทำ machine learning โดยแบ่งออกเป็น 4 แบบ

  1. Not commutative
  2. Identity matrix
  3. Inverse matrix
  4. Transpose matrix

 

1. Not commutative

ปกติแล้วหากเราคูณจำนวนจริงแบบปกติ คุณสมบัติการสลับที่สามารถใช้ได้(คำตอบออกมาเท่ากัน) แต่ว่า matrix นั้นทำไม่ได้ ยกตัวอย่าง

เมทริกซ์

จากรูปบน จะเห็นได้ว่า เมื่อใช้คุณสมบัติสลับที่ ปรากฏว่าผลที่ได้ต่างกัน

2. Identity matrix

Identity matrix เขียนแทนได้ด้วยตัว I เป็น เมทริกซ์ที่สมาชิกในแนวทแยงมุมมีค่าเป็น 1 ทั้งหมด โดย Identity matrix จะมีมิติ n*n เสมอ เช่น

เมทริกซ์

ซึ่ง Identity matrix มีคุณสมบัติในการคูณและการหา inverse ของทุกๆ matrix (หมายถึงว่า เราสามารถนำ Identity matrix ไปคูณกับ matrixใดๆ จะได้ค่าเท่าเดิม) นั่นคือ

                                               I * A = A*I =A

3. Inverse matrix

ถ้า matrix A เป็น เมทริกซ์ที่มีมิติ m*m (มีแถวและคอลัมน์เท่ากัน) เราก็สามารถหา inverse ของ matrix A ได้ ซึ่งสามารถเขียนแทนด้วย  ซึ่งการหา inverse ของเมทริกซ์แต่ละมิติ จะมีสูตรที่ต่างกัน ในที่นี้เราจะยกตัวอย่างแค่ มิติ 2*2 เช่น

เมทริกซื

4. Transpose matrix

เป็นการสลับที่ของแถวและหลักใน matrix เช่น

เมทริกซ์

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

ในบทต่อไป เราจะมาพูดถึงทฤษฏีการประมาณการข้อมูลแบบ Multi-linear regression เป็นการประมาณการที่มีตัวแปร x มากกว่า 1 ตัว และเราจะมีการนำหลักการคำนวณแบบ matrix นี้ไป apply ด้วยค่ะ

สามารถเข้าไปอ่านบทความอื่นๆที่เกี่ยวกับ Machine learning ได้ที่นี่