Basic Data Science : Vector

Vector คือ mathematical object ที่สามารถนำมาแสดงให้เห็นภาพได้ด้วยลูกศร ดังภาพ



ในการคำนวณ vector จะถูกเขียนแทนด้วยตำแหน่งของปลายลูกศร เช่น (x,y) , (4,5), (0,1) ,...

a=(x,y) หรือ
OA=(x,y),  [O คือ origin หรือตำแหน่ง (0,0)]


สิ่งที่ต้องคำนึงถึงในการคำนวณเกี่ยวกับ vector มีสองค่าคือ ขนาด (magnitude) และทิศทาง (direction) ของ vector

Magnitude ของ vector
คือขนาดหรือความยาวของ vector บางครั้งอาจใช้คำว่า norm ก็ได้ ใช้สัญญลักษณ์  ∣∣OA∣∣หรือ∣∣x∣∣ และใช้วิธีการคำนวณตามแบบของ Pythagoras [1]


∣∣OA∣∣=x2+y22

ในกรณีที่ vector มีมิติที่มากขึ้น  OA=(x1,x2,x3,...,xn) จะใช้ Euclidean norm หรือ Euclidean distance [2]

∣∣OA∣∣=x12+x22+x32+...+xn22


การใช้ Python คำนวณหาค่า magnitude ของ vector

import numpy as np

def magnitude(vector):
     return np.linalg.norm(vector)

x = [4,5] # 2 dimension vector
norm_x = magnitude(x)
print(norm_x)

y = [4,5,6,7,8] # 5 dimension vector
norm_y = magnitude(y)
print(norm_y)


Direction of vector

direction of vector คือ vector ที่เกิดจากการหาร vector เดิมด้วยขนาดของตัวเอง นั่นคือ
ถ้า u=(x1,x2) แล้ว direction ของ u คือ

w=(x1∣∣u∣∣,x2∣∣u∣∣)

ภาษา Python ในการหา direction of vector

import numpy as np

def direction(vector):
     return vector / magnitude(vector)

x = [4,5] # 2 dimension vector
dir_x = direction(x)
print(dir_x)

y = [4,5,6,7,8] # 5 dimension vector
dir_y = direction(y)
print(dir_y)


Dot product
คือ operation ระหว่าง vector 2 vector ที่ได้ผลลัพธ์ออกมาเป็นตัวเลข (scalar) บางครั้งเรียกว่า scalar product

ในทาง geometry นิยาม dot product ของ 2 vector ไว้คือ

xy=∣∣x∣∣×∣∣y∣∣×cos(θ)


เมื่อ θ คือมุมระหว่าง vector ทั้งสอง





def geo_dot(vect1,vect2,theta):
     mag_vect1 =  magnitude(vect1)
     mag_vect2 =  magnitude(vect2)
     geo_dot = mag_vect1 * mag_vect2 * np.cos(np.radians(theta))
     return geo_dot


x = [3,5]
y = [8,2]
theta = 45 # degrees
print(geo_dot(x,y,theta)) # 34.00000000000001



ในกรณีที่ไม่ทราบมุมระหว่าง vector ก็สามารถหาค่า dot product ได้จาก

xy=i=1n(xi×yi)



def alg_dot(vect1,vect2):
     sum = 0
     for i in range(len(vect1)) :
          sum  += vect1[i] * vect2[i]

     return sum


x = [3,5]
y = [8,2]
print(alg_dot(x,y)) # 34

เทียบผลลัพธ์กับ numpy.dot()


x = [3,5]
y = [8,2]
print(alg_dot(x,y)) # 34
print(np.dot(x,y)) # 34








เอกสารอ้างอิง
[1] https://smarter-machine.blogspot.com/2018/03/trigonometry-trigonometry-identities.html
[2] https://en.wikipedia.org/wiki/Euclidean_distance

ความคิดเห็น