You are on page 1of 8

ML Homework 1: เฉลยการบ้าน

k-NN Algorithm

1. กําหนดให้ขอ้ มูลฝึ กสอน 𝓣 = {([𝟏 𝟐], 𝟑), ([𝟐 𝟒], 𝟔), ([𝟑 𝟔], 𝟗), ([𝟒 𝟖], 𝟏𝟐) }
ให้คาํ นวณค่า 𝒚3(𝐱★) เมื;อ 𝐱★ = [2.8 6] โดยใช้ k−NN Regressor ที; k = 1 และ k = 2

จากโจทย์ ได้ขอ้ มูลดังนีG


• ข้อมูลฝึ กสอนมี training data points หรื อ ตัวอย่าง (examples) ทัGงหมด 4 ชุด (m = 4)

𝓣 = {𝒙𝒊, 𝒚𝒊}𝒎 𝒊"𝟏 = {([𝟏 𝟐], 𝟑), ([𝟐 𝟒], 𝟔), ([𝟑 𝟔], 𝟗), ([𝟒 𝟖], 𝟏𝟐) }
เช่น ตัวอย่างข้อมูลชุดที; 1 (𝐱𝟏 , 𝑦𝟏 ) = ([𝟏 𝟐], 𝟑)
ประกอบด้วย input 𝐱𝟏 = [𝟏 𝟐], และ output 𝑦𝟏 = 𝟑
• ตัวอย่างแต่ละชุดมีตวั แปร (variables) หรื อ features ทัGงหมด 2 ตัว (n = 2)
• ข้อมูลทดสอบ (Test input) = 𝐱★ = [2.8 6]
• โจทย์คาํ นวณค่า 𝒚3(𝐱★) เมื;อ 𝐱★ = [2.8 6] โดยใช้ k−NN Regressor ที; k = 1 และ k = 2
• ใช้ Regressor ในการคํานวณหา 𝒚3(𝐱★) ดังนัGน จึงเป็ นปั ญหา k-NN แบบ regression
วิธีทาํ
a. คํานวณหา Euclidean Distance ‖𝐱i − 𝐱 ★‖% ระหว่างข้อมูลทดสอบ (𝐱 ★) และ examples ทุกตัวใน
ข้อมูลฝึ กสอน (i = 1, …, 4)

i = 1, ‖𝐱 𝟏 − 𝐱 ★‖% = @(1 − 2.8)% + (2 − 6)% = √19.24 (หรื อ = 4.39)


i = 2, ‖𝐱 𝟐 − 𝐱 ★‖% = @(2 − 2.8)% + (4 − 6)% = √4.64 (หรื อ = 2.15)
i = 3, ‖𝐱 𝟑 − 𝐱 ★‖% = @(3 − 2.8)% + (6 − 6)% = √0.04 (หรื อ = 0.20)
i =4, ‖𝐱 𝟒 − 𝐱 ★‖% = @(4 − 2.8)% + (8 − 6)% = √5.44 (หรื อ = 2.33)

** สามารถใช้ค่าภาย √ ในการเปรี ยบเทียบได้เลย ไม่จาํ เป็ นต้องคํานวณหารากที;สองก็ได้


Training data Compute Distance Order by distance

i 𝑥) 𝑥% y i ‖𝐱i − 𝐱 ★‖% y i ‖𝐱i − 𝐱 ★‖% y


1 1 2 3 1 √19.24 3 3 √0.04 9
2 2 4 6 2 √4.64 6 2 √4.64 6
3 3 6 9 3 √0.04 9 4 √5.44 12
4 4 8 12 4 12 1 3
√5.44 √19.24

b. วิธีคาํ นวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [2.8 6] โดยที; k = 1

หากทําตาม Algorithm ต้องหา set 𝓝 จากตาราง “order by distance” เมื;อ k = 1 โดยให้เลือก i (เลข
ลําดับของ example ที;มี distance น้อยที;สุด) มา 1 ตัว (k = 1) จะได้

𝓝 = {𝟑}

ดังนัGน 3 ([𝟐. 𝟖 𝟔]) = 𝒚𝟑 = 𝟗


3(𝐱★) = 𝒚
𝒚

c. คํานวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [2.8 6] โดยที; k = 2

หากทําตาม Algorithm ต้องหา set 𝓝 จากตาราง “order by distance” เมื;อ k = 2 โดยให้เลือก i (เลข
ลําดับของ example ที;มี distance น้อยที;สุด) มา 2 ตัว (k = 2) จะได้
𝓝 = {𝟑, 𝟐}

𝒚 "𝒚 𝟗"𝟔
ดังนัGน 𝒚
"(𝐱★) = 𝒚
"([𝟐. 𝟖 𝟔]) = 𝟑 𝟐 =
𝟐 𝟐
= 𝟕. 𝟓
2. กําหนดให้ขอ้ มูลฝึ กสอน
𝓣 = {([0 100], Red), ([0.4 300],0), ([0.6 400],1), ([1.4 800],1), ([2.0 1100], 1) }

2.1 ให้ทาํ การ normalize ข้อมูลอินพุต (feature/variable) 𝐱2


2.2 ให้คาํ นวณค่า 𝒚
3(𝐱★) เมื;อ 𝐱★ = [0.35 350] โดยใข้ k−NN Classifier ที; k = 1 และ k = 3

เนื$องจาก output 𝑦𝟏 ของตัวอย่ างที$ 1 ใน Training data เป็ นข้ อมูลทีไ$ ม่ ถูกต้ อง ดังนั<นการบ้ านในข้ อนีจ< งึ มี
แนวทางในการทํา 2 รู ปแบบดังนี<
1. คงค่ า output 𝑦𝟏 ไว้ โดยไม่ ต้องทําการแก้ ไขใดๆ
2. ทําการ cleansing ข้ อมูลโดยแก้ ไข output 𝑦𝟏 ให้ ถูกต้ อง

วิธีที$ 1 คงค่ า output 𝒚𝟏 ไว้ โดยไม่ ต้องทําการแก้ ไขใดๆ

จากโจทย์ ได้ขอ้ มูลดังนีG


• ข้อมูลฝึ กสอนมี training data points หรื อ ตัวอย่าง (examples) ทัGงหมด 5 ชุด (m = 5)
𝓣 = {𝒙𝒊, 𝒚𝒊}𝒎 𝒊"𝟏
= {([0 100], Red), ([0.4 300],0), ([0.6 400],1), ([1.4 800],1), ([2.0 1100], 1) }
ตัวอย่างข้อมูล (𝐱𝟏 , 𝑦𝟏 ) = ([0 100], Red)
โดยที; input 𝐱 𝟏 = [0 100], และ output 𝑦𝟏 = Red

• ตัวอย่างแต่ละชุดมีตวั แปร (variables) หรื อ features ทัGงหมด 2 ตัว (n = 2)


• ข้อมูลทดสอบ (Test input) = 𝐱★ = [0.35 350]
• คํานวณค่า 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350 โดยใช้ k−NN Classifier ที; k = 1 และ k=3

2.1 ให้ทาํ การ normalize ข้อมูลอินพุต (feature/variable) 𝐱2

จากสู ตรการคํานวณ normalization

,-.
𝑥ij − minℓ(𝑥ℓj)
𝑥*+ = , for all j = 1, … n, and i = 1, … m
m𝑎𝑥ℓ(𝑥ℓj) − minℓ(𝑥ℓj)

โจทย์ให้คาํ นวณ normalization เฉพาะ 𝐱2 (feature ที; 2 ของข้อมูลตัวอย่าง)


จากข้อมูล training data จะได้ค่าที;ใช้ในการคํานวณดังนีG
minℓ(𝑥ℓ% ) = 100 , maxℓ(𝑥ℓ% ) = 1100 และ
minℓ(𝑥ℓ% ) − maxℓ(𝑥ℓ% ) = 1100 – 100 = 1000

คํานวณ normalization ,-.


𝑥*+ สําหรับ j = 2 \𝑓𝑒𝑎𝑡𝑢𝑒 ที; 2a , and i = 1, … 5 (𝑒𝑥𝑎𝑚𝑝𝑙𝑒 ที; 1 − 5) ดังนีG

,-.
𝑥)% =
)001)00
=0 ,-.
300 − 100 ,-.
𝑥2% =
3001)00
= 0.3
)000 𝑥%% = = 0.2 )000
1000
,-.
𝑥3% =
4001)00
= 0.7 ,-.
1100 − 100
)000 𝑥5% = = 1.0
1000

i 𝑥! 𝑥" 𝑥"#$% y
,-.
1 0 100 𝑥)% = 0.0 Red
,-.
2 0.4 300 𝑥%% = 0.2 0
,-.
3 0.6 400 𝑥2% = 0.3 1
,-.
4 1.4 800 𝑥3% = 0.7 1
,-.
5 2.0 1100 𝑥5% = 1.0 1

2.2 ให้คาํ นวณค่า 𝒚


3(𝐱★) เมื;อ 𝐱★ = [0.35 350] โดยใข้ k−NN Classifier ที; k = 1 และ k = 3

a. คํานวณหา Euclidean Distance ‖𝐱i − 𝐱 ★‖% ระหว่างข้อมูลทดสอบ (𝐱 ★) และ examples ทุกตัวใน


ข้อมูลฝึ กสอน (i = 1, …, 5) โดยที; 𝐱 ★ = [0.35 350]
ทัGงนีG ต้องทําการ normalize ข้อมูล testing input 𝐱 ★ ด้วย โดยคํานวณเฉพาะ feature ที; 2 =>
,-. 250 1)00
𝑥★2 = )000
= 0.25

ดังนัGนจะได้ 𝑥 ,-.

=[0.35 0.25]

i = 1, ‖𝐱 𝟏 − 𝐱 ★‖% = @(0 − 0.35)% + (0 − 0.25)% = √0.19(หรื อ = 0.43)


i = 2, ‖𝐱 𝟐 − 𝐱 ★‖% = @(0.4 − 0.35)% + (0.2 − 0.25)% = @0.005 (หรื อ = 0.07)
i = 3, ‖𝐱 𝟑 − 𝐱 ★‖% = @(0.6 − 0.35)% + (0.3 − 0.25)% = √0.07 (หรื อ = 0.25)
i =4, ‖𝐱 𝟒 − 𝐱 ★‖% = @(1.4 − 0.35)% + (0.7 − 0.25)% = √1.30 (หรื อ = 1.14)
i =4, ‖𝐱 𝟒 − 𝐱 ★‖% = @(2.0 − 0.35)% + (1.0 − 0.24)% = √3.28 (หรื อ = 1.81)

** สามารถใช้ค่าภาย √ ในการเปรี ยบเทียบได้เลย ไม่จาํ เป็ นต้องคํานวณหารากที;สองก็ได้


Training data Compute Distance Order by distance

i 𝑥) 𝑥%,-. y i ‖𝐱i − 𝐱 ★‖% y i ‖𝐱i − 𝐱 ★‖% y


1 0 0 Red 1 √0.19 Red 2 √0.005 0
2 0.4 0.2 0 2 √0.005 0 3 √0.07 1
3 0.6 0.3 1 3 √0.07 1 1 √0.19 Red
4 1.4 0.7 1 4 1 4 1
√1.30 √1.30
5 2.0 1.0 1
5 √3.28 1 5 √3.28 1

b. คํานวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350] (𝑥 ,-.



=[0.35 0.25] )โดยที; k = 1

หา set 𝓝 จากตาราง order by distance เมื;อ k = 1 โดยให้เลือก i (เลขลําดับของ example ที;มี


distance น้อยที;สุด) มา 1 ตัว (k = 1) จะได้

𝓝 = {𝟐}

ดังนัGน 3 ([𝟎. 𝟑𝟓 𝟑𝟓𝟎]) = 𝒚𝟐 = 𝟎


3(𝐱★) = 𝒚
𝒚

c. คํานวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350] (𝑥 ,-.



=[0.35 0.25] )โดยที; k = 3

หา set 𝓝 จากตาราง order by distance เมื;อ k = 3 โดยให้เลือก i (เลขลําดับของ example ที;มี


distance น้อยที;สุด) มา 3 ตัว (k = 3) จะได้
𝓝 = {𝟐, 𝟑, 𝟏}

ดังนัGน 𝒚
"(𝐱★) = 𝒚
"([𝟎. 𝟑𝟓 𝟑𝟓𝟎])
= Majourity vote {𝒚𝟐 , 𝒚𝟑 , 𝒚𝟏 }
= Majourity vote {0, 1, Red}

เนื$องจากคําตอบทั0ง 3 มีจาํ นวนเท่ากันดังนั0น สามารถเลือกคําตอบไหนก็ได้


= 0 หรื อ 1 หรื อ Red
วิธีที$ 2 ทําการ cleansing ข้ อมูลโดยแก้ ไข output 𝒚𝟏 ให้ ถูกต้ อง

แนวทางการทํา data cleansing


• ข้อมูล example (𝐱 𝟏 , 𝑦𝟏 ) มีค่า output 𝑦𝟏 เป็ น Red ในขณะที; output ของ example อื;นๆ มีค่าเป็ น 0
หรื อ 1 ดังนัGน example 1 ควรมีการทํา data cleansing โดยหากดูจาก scatter plot จะได้ดงั นีG

(𝐱𝟐 , 𝑦𝟐 )

(𝐱𝟏 , 𝑦𝟏 = red = 0)

จากกราฟ จะเห็นว่า ตัวอย่าง (𝒙𝟏 , 𝑦𝟏 ) มีแนวโน้มที;จะอยูก่ ลุ่มเดียว กับตัวอย่าง (𝒙𝟐 , 𝑦𝟐 )


ดังนัGน output 𝑦𝟏 จึงควรมีค่าเท่ากับ 0 ดังนัGน เมื;อทําการแก้ไข output y1 จะได้ training dataset ใหม่
ดังนีG

𝓣 = {𝒙𝒊, 𝒚𝒊}𝒎 𝒊"𝟏


= {([0 100],0), ([0.4 300],0), ([0.6 400],1), ([1.4 800],1), ([2.0 1100], 1) }
ตัวอย่างข้อมูล (𝐱𝟏 , 𝑦𝟏 ) = ([0 100], 0)
ดังนั<น 𝐱 𝟏 = [𝟎 100], 𝑦𝟏 = 0

• ข้อมูลทดสอบ (Test input) = 𝐱★ = [0.35 350]


• คํานวณค่า 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350 โดยใช้ k−NN Classifier ที; k = 1 และ k=3

2.1 ให้ทาํ การ normalize ข้อมูลอินพุต (feature/variable) 𝐱2

จากสู ตรการคํานวณ normalization

,-.
𝑥ij − minℓ(𝑥ℓj)
𝑥*+ = , for all j = 1, … n, and i = 1, … m
m𝑎𝑥ℓ(𝑥ℓj) − minℓ(𝑥ℓj)

โจทย์ให้คาํ นวณ normalization เฉพาะ 𝐱2 (feature ที; 2 ของข้อมูลตัวอย่าง)


จากข้อมูล training data จะได้ค่าที;ใช้ในการคํานวณดังนีG
minℓ(𝑥ℓ% ) = 100 , maxℓ(𝑥ℓ% ) = 1100 และ
minℓ(𝑥ℓ% ) − maxℓ(𝑥ℓ% ) = 1100 – 100 = 1000

คํานวณ normalization ,-.


𝑥*+ สําหรับ j = 2 \𝑓𝑒𝑎𝑡𝑢𝑒 ที; 2a , and i = 1, … 5 (𝑒𝑥𝑎𝑚𝑝𝑙𝑒 ที; 1 − 5)

,-.
𝑥)% =
)001)00
=0 ,-.
300 − 100 ,-.
𝑥2% =
3001)00
= 0.3
)000 𝑥%% = = 0.2 )000
1000
,-.
𝑥3% =
4001)00
= 0.7 ,-.
1100 − 100
)000 𝑥5% = = 1.0
1000

i 𝑥! 𝑥" 𝑥"#$% y
,-.
1 0 100 𝑥)% = 0.0 0
,-.
2 0.4 300 𝑥%% = 0.2 0
,-.
3 0.6 400 𝑥2% = 0.3 1
,-.
4 1.4 800 𝑥3% = 0.7 1
,-.
5 2.0 1100 𝑥5% = 1.0 1

2.2 ให้คาํ นวณค่า 𝒚


3(𝐱★) เมื;อ 𝐱★ = [0.35 350] โดยใข้ k−NN Classifier ที; k = 1 และ k = 3

a. คํานวณหา Euclidean Distance ‖𝐱i − 𝐱 ★‖% ระหว่างข้อมูลทดสอบ (X) และ examples ทุกตัวใน
ข้อมูลฝึ กสอน (i = 1, …, 5) โดยที; 𝐱 ★ = [0.35 350]
ทัGงนีG ต้องทําการ normalize ข้อมูล testing input 𝐱 ★ ด้วย คํานวณเฉพาะ feature ที; 2 => 𝑥 ,-. =
★2
250 1)00
)000
= 0.25

ดังนัGนจะได้ 𝑥 ,-.

=[0.35 0.25]

i = 1, ‖𝐱 𝟏 − 𝐱 ★‖% = @(0 − 0.35)% + (0 − 0.25)% = √0.19(หรื อ = 0.43)


i = 2, ‖𝐱 𝟐 − 𝐱 ★‖% = @(0.4 − 0.35)% + (0.2 − 0.25)% = √0.005 (หรื อ = 0.07)
i = 3, ‖𝐱 𝟑 − 𝐱 ★‖% = @(0.6 − 0.35)% + (0.3 − 0.25)% = √0.07 (หรื อ = 0.25)
i =4, ‖𝐱 𝟒 − 𝐱 ★‖% = @(1.4 − 0.35)% + (0.7 − 0.25)% = √1.30 (หรื อ = 1.14)
i =4, ‖𝐱 𝟒 − 𝐱 ★‖% = @(2.0 − 0.35)% + (1.0 − 0.24)% = √3.28 (หรื อ = 1.81)
** สามารถใช้ค่าภาย √ ในการเปรี ยบเทียบได้เลย ไม่จาํ เป็ นต้องคํานวณหารากที;สองก็ได้

Training data Compute Distance Order by distance

i 𝑥) 𝑥%,-. y i ‖𝐱i − 𝐱 ★‖% y i ‖𝐱i − 𝐱 ★‖% y


1 0 0 0 1 √0.19 0 2 √0.005 0
2 0.4 0.2 0 2 √0.005 0 3 √0.07 1
3 0.6 0.3 1 3 √0.07 1 1 √0.19 0
4 1.4 0.7 1 4 1 4 1
√1.30 √1.30
5 2.0 1.0 1 5 1 5 1
√3.28 √3.28

b. คํานวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350] (𝑥 ,-.



=[0.35 0.25] )โดยที; k = 1

หา set 𝓝 จากตาราง order by distance เมื;อ k = 1 โดยให้เลือก i (เลขลําดับของ example ที;มี


distance น้อยที;สุด) มา 1 ตัว (k = 1) จะได้

𝓝 = {𝟐}

ดังนัGน 3 ([𝟎. 𝟑𝟓 𝟑𝟓𝟎]) = 𝒚𝟐 = 𝟎


3(𝐱★) = 𝒚
𝒚

c. คํานวณ 𝒚3(𝐱★) เมื;อ 𝐱★ = [0.35 350] (𝑥 ,-.



=[0.35 0.25] )โดยที; k = 3

หา set 𝓝 จากตาราง order by distance เมื;อ k = 3 โดยให้เลือก i (เลขลําดับของ example ที;มี


distance น้อยที;สุด) มา 3 ตัว (k = 3) จะได้
𝓝 = {𝟐, 𝟑, 𝟏}

ดังนัGน 𝒚
"(𝐱★) = 𝒚
"([𝟎. 𝟑𝟓 𝟑𝟓𝟎])
= Majourity vote {𝒚𝟐 , 𝒚𝟑 , 𝒚𝟏 }
= Majourity vote {0, 1, 0}

เนื$องจาก คําตอบ 0 มีจาํ นวน 2 ตัว และคําตอบ 1 มีแค่ 1 ตัว ดังนั0น เมื$อใช้ Majority vote
จะได้คาํ ตอบ
ดังนัGน 𝒚
"(𝐱★) = 𝒚
"([𝟎. 𝟑𝟓 𝟑𝟓𝟎]) = 𝟎

You might also like