มาดูทฤษฎีเวกเตอร์ ที่เขียนด้วยไพธอนกันเถอะ

Image placeholder
แวะมาทักทายกันได้


Linear Algebra เป็นศาสตร์หนึ่งในสาขาคณิตศาสตร์ ที่เกี่ยวกับสมการเชิงเส้น และคุณสมบัติการเปลี่ยนแปลงของสมการเชิงเส้น ไม่ว่าจะเป็น แผนภาพเชิงเส้น (Linear maps) เมทริกซ์ (Matrix) และ เวคเตอร์ที่จะพูดถึงในบทความนี้ (Vector Spaces) จะนำมาแปลงเป็น code โปรแกรมที่เขียนด้วย python

Linear Algebra ช่วยให้การวิเคราะห์และแก้ไขปัญหาทางคณิตศาสตร์ โดยมีประโยชน์กับสาขาวิศวกรรมและวิทยาศาสตร์ ทั้งยังนำไปสร้างโมเดลทางคณิตศาสตร์อย่างเช่น ถูกใช้อธิบายว่าโลกหมุนรอบตัวเองได้อย่างไร ทั้งยังนำไปหา รูปร่างรูปทรงต่างๆทางเรขาคณิต มุมของวัตถุ และ แรงกระทำของวัตถุต่างๆได้

Scalar

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

Vector

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

สมมติ เราบอกว่า มีคนวิ่ง 2 กิโลเมตร ไม่ได้บอกว่าวิ่งไปทางไหน ข้อมูลนี้เป็น Scalar แต่ถ้า เราบอกว่า มีคนวิ่ง 2 กิโลเมตร ไปทางทิศเหนือ แบบนี้ ข้อมูลนี้ สามารถเป็น Vector ได้

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


Height
Height
16880
14054
14450
15565
17572


จากนิยามที่บอกว่า ถ้าข้อมูลที่มีหน่วยวัด 2 ตัว จะสามารถเป็น Vector ได้ ลองแทนข้อมูลในตาราง ลงในภาพกราฟกันดู




Vector ในภาพนั้นเป็นข้อมูลส่วนสูงและน้ำหนักนักเรียน ถูกอธิบายด้วยคุณลักษณะ 2 อย่าง คือ น้ำหนักและส่วนสูงทำให้เกิด ทิศทางสมมติ มันเป็นข้อมูลที่แทนปริมาณที่มากกว่า 1 มิติ

คราวนี้มาลอง Plot ข้อมูลทั้งหมดจากตารางลงในกราฟ



เมื่อมีข้อมูลมากกว่า 1 แถว แล้วแทนค่าด้วย Vector ในทุกข้อมูลที่เราสังเกตจะเกิดเป็น Vector Space ขึ้นมา ทำให้เกิดภาพรวมทั้งหมด เพื่อแสดงความคล้ายกันของข้อมูล เพื่อดูทิศทาง แนวโน้ว การเปลี่ยน ว่าข้อมูลนั้นมีความสัมพันธ์ในรูปแบบใด


สำหรับ ในหนังสือ Data Science From Scratch จะไม่ได้พูดถึง ทฤษฏี Operation ต่างๆ ของ Vector แต่จะมาทำ Operator ต่างๆ ด้วยฟังก์ชันที่เขียนขึ้นด้วย Python

เมื่อ Vector คือ Object มีความสามารถที่จะเพิ่มปริมาณและจำนวน Scalar (number) ได้ แล้วมองเป็น point ที่อยู่บนตารางกราฟเพื่อแสดงตำแหน่งต่างๆ ยกตัวอย่าง สมมติว่ามีข้อมูลบุคคล เช่น ความสูง น้ำหนัก และ อายุ สามารถกำหนดให้อยู่ในรูปของ List คือ height_weight_age = [170_70_40] เป็นต้น

ตามกฎทางคณิตศาสตร์ของ เวคเตอร์เมื่อ เวคเตอร์ 2 ตัว บวกกัน จะมีทิศทางและปริมาณที่เพิ่มขึ้น ในทางคณิตศาสตร์ สมมติว่า x = [1,2] และ y = [2,1] ก็สามารถนำมารวมกันได้เลย เช่น x + y = [1+2, 2+1] ; z = [3,3] แต่ว่า การบวกเวคเตอร์บนคอมพิวเตอร์ไม่ได้ง่ายขนาดนั้น เราจะต้องเขียน ฟังก์ชันขึ้นมา

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


การบวกในเวคเตอร์

def vector_add(v, w):

    """adds corresponding elements"""

    return [v_i + w_i for v_i, w_i in zip(v, w)]

กำหนดค่าตัวแปร v = [10,20]

กำหนดค่าตัวแปร w = [1,2]

เรียกใช้ฟังก์ชัน vector_add(v, w) 

ผลลัพท์ # [11, 22]




การลบในเวคเตอร์

def vector_subtract(v, w):

    """subtracts corresponding elements"""

    return [v_i - w_i for v_i, w_i in zip(v, w)]

กำหนดค่าตัวแปร  v = [10,20]

กำหนดค่าตัวแปร  w = [1,2]

เรียกใช้ฟังก์ชัน  vector_subtract(v, w) 

ผลลัพท์ # [9, 18]




ในบางครั้ง เราจะต้องรวมค่าทุก vector ที่อยู่ในชุด vector ทั้งหมดแล้วสร้าง vector ขึ้นมาใหม่ โดย Sum ค่าที่อยู่ใน vector ตั้งแต่ element แรก ยกตัวอย่างเช่น


การหาผลรวมในเวคเตอร์


def vector_sum(vectors):

    """sums all corresponding elements"""

    result = vectors[0]

    for vector in vectors[1:]:

        result = vector_add(result, vector)

    return result

 

กำหนด ตัวแปร และ ค่าในแต่ละ element :  vectors = [1],[2],[3]

เรียกใช้งานฟังก์ชัน vector_sum(vectors)


ผลลัพท์ # [6]




การคูณกันใน Vector

def scalar_multiply(c, v):

    """c is a number, v is a vector"""

    return [c * v_i for v_i in v]

scalar = 5

vectors = [1,2,3]

เรียกใช้งานฟังก์ชัน  scalar_multiply(scalar, vectors)  

ผลลัพท์ # [5, 10, 15]





การหาค่าเฉลี่ยในแต่ละ Element ของ vector



def vector_mean(vectors):

    """compute the vector whose ith element is the mean of the ith elements of the input vectors"""

    n = len(vectors)

    return scalar_multiply(1/n, vector_sum(vectors))

 

vectors = [[1,2,3],[4,5,6],[7,8,9]]

vector_mean(vectors) 

ผลลัพท์ # [4.0, 5.0, 6.0]





การนำเวคเตอร์มาประยุกต์ใช้โดยใช้ python ร่วมกับ Jupyter Notebook เป็นเพียงส่วนหนึ่งของหนังสือ Data Science From Scratch ซึ่งผู้เขียนเห็นว่าเป็นประโยชน์ สามารถนำไปประยุกต์ใช้ได้ในการหาความสัมพันธ์ บน Vector Space หวังว่าบทความนี้จะเป็นประโยชน์ ฝากผู้อ่าน กด Ads เพื่อเป็นกำลังให้ผู้เขียนด้วยนะครับ

 

Trigonometry vector created by rawpixel.com
-
www.freepik.com


แวะมาทักทายกันได้
donate