|  |
| --- |
| ส่วนหนึ่งของเนื้อหา |
| การเรียนรู้ของเครื่องและการทำเหมืองข้อมูล |
|  |
| ปัญหา
* Classification
* Clustering
* Regression
* Anomaly detection
* AutoML
* Association rules
* Reinforcement learning
* Structured prediction
* Feature engineering
* Feature learning
* Online learning
* Semi-supervised learning
* Unsupervised learning
* Learning to rank
* Grammar induction

 |
| การเรียนรู้แบบมีผู้สอน
* การแบ่งประเภทข้อมูล
* โครงข่ายประสาทเทียม
* เพอร์เซปตรอน
* ต้นไม้ตัดสินใจ
* Ensembles
	+ Bagging
	+ Boosting
	+ Random forest
* *k*-NN
* Linear regression
* Naive Bayes
* regression
* Logistic regression
* Relevance vector machine (RVM)
* เครื่องเวกเตอร์ค้ำยัน (SVM)

 |
| การแบ่งกลุ่มข้อมูล
* BIRCH
* CURE
* Hierarchical
* *k*-means
* Expectation–maximization (EM)
* DBSCAN
* OPTICS
* Mean-shift

 |
| โครงข่ายประสาทเทียม
* การเรียนรู้เชิงลึก
* Autoencoder
* DeepDream
* Multilayer perceptron
* RNN
	+ LSTM
	+ GRU
* Restricted Boltzmann machine
* GAN
* SOM
* CNN
	+ U-Net

 |
| การลดมิติ
* Factor analysis
* CCA
* ICA
* LDA
* NMF
* PCA
* PGD
* t-SNE

 |
| Structured prediction
* Graphical models
	+ Bayes net
	+ Conditional random field
	+ แบบจำลองมาร์คอฟซ่อนเร้น

 |
| Anomaly detection
* *k*-NN
* Local outlier factor

 |
| Reinforcement learning
* Q-learning
* SARSA
* Temporal difference (TD)

 |
| ทฤษฎี
* Bias–variance dilemma
* Computational learning theory
* Empirical risk minimization
* Occam learning
* PAC learning
* Statistical learning
* VC theory

 |
| * ด
* ค
* ก
 |

ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด (อังกฤษ: K-Nearest Neighbour Algorithm) เป็นวิธีที่ใช้ในการจัดแบ่งคลาส โดยเทคนิคนี้จะตัดสินใจว่า คลาสใดที่จะแทนเงื่อนไขหรือกรณีใหม่ๆ ได้บ้าง โดยการตรวจสอบจำนวนบางจำนวน ("K" ในขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด) ของกรณีหรือเงื่อนไขที่เหมือนกันหรือใกล้เคียงกันมากที่สุด โดยจะหาผลรวม (Count Up) ของจำนวนเงื่อนไข หรือกรณีต่างๆ สำหรับแต่ละคลาส และกำหนดเงื่อนไขใหม่ๆ ให้คลาสที่เหมือนกันกับคลาสที่ใกล้เคียงกันมากที่สุด

ตัวอย่าง
--------

ตัวอย่างการจัดกลุ่มข้อมูลของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด
กำหนดให้จุดที่พิจารณาคือ วงกลมสีเขียว ควรจัดกลุ่มให้จุดที่สนใจไปอยู่ใน คลาสแรกของสี่เหลี่ยมสีน้ำเงิน หรือ *คลาสสองของสามเหลี่ยมสีแดง*

* ถ้า k=3 แล้ว วงกลมสีเขียวจะอยู่ใน*คลาสสอง* เพราะมี สี่เหลี่ยม 1 รูป และ *สามเหลี่ยม* 2 รูป อยู่ในวงกลมวงใน
* ถ้า k=5 แล้ว วงกลมสีเขียวจะอยู่ในคลาสแรก เพราะมี สี่เหลี่ยม 3 รูป และ *สามเหลี่ยม* 2 รูป อยู่ในวงกลมวงนอก

ขั้นตอนวิธี
-----------

การนำเทคนิคของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดไปใช้นั้น เป็นการหาระยะห่างระหว่างแต่ละตัวแปร(Attribute) ในข้อมูล จากนั้นก็คำนวณค่าออกมา ซึ่งวิธีนี้จะเหมาะสำหรับข้อมูลแบบตัวเลข แต่ตัวแปรที่เป็นค่าแบบไม่ต่อเนื่องนั้นก็สามารถทำได้ เพียงแต่ต้องการการจัดการแบบพิเศษเพิ่มขึ้น อย่างเช่น ถ้าเป็นเรื่องของสี เราจะใช้อะไรวัดความแตกต่างระหว่างสีน้ำเงินกับสีเขียว ต่อจากนั้นเราต้องมีวิธีในการรวมค่าระยะห่างของ Attribute ทุกค่าที่วัดมาได้ เมื่อสามารถคำนวณระยะห่างระหว่างเงื่อนไขหรือกรณีต่างๆ ได้ จากนั้นก็เลือกชุดของเงื่อนไขที่ใช้จัดคลาส มาเป็นฐานสำหรับการจัดคลาสในเงื่อนไขใหม่ๆ ได้แล้วเราจะตัดสินได้ว่าขอบเขตของจุดข้างเคียงที่ควรเป็นนั้น ควรมีขนาดใหญ่เท่าไร และอาจมีการตัดสินใจได้ด้วยว่าจะนับจำนวนจุดข้างเคียงตัวมันได้อย่างไร โดยขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดมีขั้นตอนโดยสรุป ดังนี้

1. กำหนดขนาดของ K (ควรกำหนดให้เป็นเลขคี่)
2. คำนวณระยะห่าง (Distance) ของข้อมูลที่ต้องการพิจารณากับกลุ่มข้อมูลตัวอย่าง
3. จัดเรียงลำดับของระยะห่าง และเลือกพิจารณาชุดข้อมูลที่ใกล้จุดที่ต้องการพิจารณาตามจำนวน K ที่กาหนดไว้
4. พิจารณาข้อมูลจำนวน k ชุด และสังเกตว่ากลุ่ม (class) ไหนที่ใกล้จุดที่พิจารณาเป็นจำนวนมากที่สุด
5. กำหนด class ให้กับจุดที่พิจารณา (class) ที่ใกล้จุดพิจารณามากที่สุด

การดำเนินการหลัก
----------------

* **ฟังก์ชันระยะทาง(Distance Function)** เป็นการคำนวณค่าระยะห่างระหว่างสองเรคคอร์ด เพื่อที่จะมาวัดความคล้ายคลึงกันของข้อมูล
* **ฟังก์ชันการแจกแจง(Combination Function)** เป็นการรวมกันของผลลัพธ์ที่ได้จากการคำนวณค่าระยะห่าง(Distance) โดยทำการเรียงลำดับค่าระยะห่าง(Distance) จากน้อยไปมาก หลังจากนั้นดูจากค่า "K" ว่ากำหนดเป็นเท่าไร แล้วนำลำดับที่เรียงได้มาเทียบกับคลาสข้อมูลที่เรียงแล้วนำมาตอบ

คุณสมบัติของฟังก์ชันระยะทาง(Distance Function)
----------------------------------------------

* ค่าระยะทาง(ความห่าง) ที่คำนวณได้ต้องไม่ติดลบ
* ถ้าตำแหน่งเดียวกัน ฟังก์ชันต้องเป็นศูนย์(ค่าเหมือนกัน)
* การคำนวณวัดระยะทางไปกลับต้องเท่ากัน

การคำนวณค่าฟังก์ชันระยะทาง
--------------------------

* ใส่ค่าสัมบูรณ์(Absolute)ให้กับค่าระยะห่าง : |A-B|
* ยกกำลังสองให้กับค่าระยะห่าง : (A-B)2
* ทำการปรับให้เป็นค่ามาตรฐาน: |(A-mean)/(SD)-(B-mean)/(SD)|เติ้ลโง่

การรวมค่าระยะทาง(Distance) ในเรคคอร์ด(Record)
---------------------------------------------

* การวัดระยะแบบแมนฮัตตัน(Manhattan distance)เป็นการนำค่าที่คำนวณได้ในหนึ่งเรคคอร์ด(Record)มารวมกัน
* ระยะทางแบบยุคลิด(Euclidean distance)เป็นการหารากที่สอง(Square Root)ในแต่ละตัวแปร(attribute)แล้วนำมารวมกัน แล้วนำค่าที่คำนวณได้ในหนึ่งเรคคอร์ด(Record)มารวมกัน

ตัวอย่าง
--------

การใช้ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด.

|  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- |
| Data | X1 | X2 | Y(Class) | Distance | Nearest Sign |
| D1 | 6 | 1 | + | 3.6 | + |
| D2 | 7 | 6 | + | 2.2 | + |
| D3 | 6 | 4 | - | 2 | - |
| D4 | 8 | 6 | - | 2 | - |
| D5 | 4 | 4 | - | 4 |  |
| D6 | 3 | 1 | + | 5.8 |  |
| D7 | 6 | 10 | - | 6.3 |  |
| D8 | 6 | 6 | + | 8 |  |
| D9 | 10 | 6 | - | 2.8 | - |
|  |  |  |  |  |  |
|  | 3 | 3 |  ? |  |  |
|  | K=5 |  |  |  |  |

จากตัวอย่างข้างต้น กำหนดให้ k= 5

ดังนั้น สังเกตได้ว่า ระยะทางที่ใกล้กับจุด (3,3) มากที่สุด คือ 5 มีลำดับ คือ D1(+), D2(+), D3(-), D4(-), D9(-)

จากระยะทางที่ใกล้ที่สุดทั้ง 5 ให้สังเกตว่ากลุ่ม (class) ที่มีจำนวนมากที่สุด ปรากฏว่าคือ class (-) ดังนั้น จึงกำหนดกลุ่ม (class) ให้กับจุด (3,3) คือ class (-)

ตัวอย่างการประยุกต์ใช้งาน
-------------------------

 ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ได้มีการนำไปใช้ประโยชน์ในหลากหลายด้าน ได้แก่

- การวิเคราะห์รูปแบบการบุกรุกเครือข่ายคอมพิวเตอร์ โดยขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด กล่าวคือ มีการประยุกต์ใช้ในการตรวจสอบความปลอดภัยในเครือข่ายระบบคอมพิวเตอร์ ซึ่งจะใช้ตัวแปร K ในการวิเคราะห์ข้อมูล และจำแนกประเภทของข้อมูลที่มีขนาดใหญ่ๆ ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด สามารถใช้ในการวิเคราะห์ข้อมูลได้เป็นอย่างดี

- ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด เป็นเทคนิคหนึ่งของ Data Mining ที่ใช้ในการแก้ปัญหาแบบ classification ในการผลิต ผลิตภัณฑ์ด้าน Data Mining ในปัจจุบัน

- ประยุกต์ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดและการคำนวณอย่างอ่อน(Soft Computing) เพื่อใช้ประมาณค่าสูญหายของข้อมูล โดยจะใช้ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดในการหาสมาชิกที่มีความใกล้ชิดกับข้อมูลที่สูญหายมา k ตัว แล้วนำจำนวน k มาหารเพื่อประมาณค่า และได้ปรับปรุงตัวหารด้วยการนำ หลักการคำนวณอย่างอ่อน(Soft Computing) เข้ามาช่วยในการปรับค่า k เรียกวิธีการนี้ว่า ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดอย่างอ่อน(Soft K-Nearest Neighbour)

- ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ใช้ในการหามัธยฐานของตัวเลข n ตัวที่ต่างกัน โดยมีประสิทธิภาพการทำงานเป็น O(n)

สรุป
----

 ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด เป็นอัลกอลิทึมที่ใช้ในการจัดกลุ่มข้อมูล โดยการจัดข้อมูลที่อยู่ใกล้กันให้เป็นกลุ่มเดียวกันซึ่งเทคนิคนี้จะทำให้ตัดสินใจได้ว่า คลาสไหนที่จะแทนเงื่อนไขหรือกรณีใหม่ๆได้บ้าง โดยการตรวจสอบจำนวน K ซึ่งถ้าหากเงื่อนไขของการตัดสินใจมีความซับซ้อน วิธีนี้สามารถสร้างโมเดลที่มีประสิทธิภาพได้ แต่ขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดจะใช้ระยะเวลาในการคำนวณนาน ถ้าตัวแปร(Attribute) มีจำนวนมากจะเกิดปัญหาในการคำนวณค่า และค่อนข้างใช้ปริมาณงานในการคำนวณสูงมากบนคอมพิวเตอร์ เพราะเวลาที่ใช้สำหรับการคำนวณจะ เพิ่มขึ้นแบบแฟคทอเรียลตามจำนวนจุดทั้งหมด ดังนั้นเพื่อจะเพิ่มความรวดเร็วสำหรับเทคนิคขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดให้มากขึ้น ข้อมูลทั้งหมดที่ใช้บ่อยจะต้องถูกเก็บไว้ในหน่วยความจำ(Memory) โดยวิธีการเข้าถึงหน่วยความจำพื้นฐานอย่างมีเหตุผล(Memory-Based Reasoning) ซึ่งจะเป็นวิธีที่นำมาอ้างถึงเป็นประจำ ในการจัดเก็บกลุ่มคลาสของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดในหน่วยความจำ และ ถ้าหากข้อมูลที่ต้องการหาคำตอบมีตัวแปรอิสระเพียงไม่กี่ตัวแล้ว จะทำให้เราสามารถเข้าใจ โมเดลขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุด ได้ง่ายขึ้น ตัวแปรเหล่านี้ยังมีประโยชน์สำหรับนำมาสร้างโมเดลต่างๆ ที่เกี่ยวข้องกับชนิดของข้อมูลที่ไม่เป็นมาตรฐาน เช่น ข้อความ(Text) เพียงแต่อาจต้องมีมาตรฐานการวัดค่าสำหรับชนิดของข้อมูลดังกล่าวที่เหมาะสมด้วย นอกจากนี้ประสิทธิภาพของขั้นตอนวิธีการเพื่อนบ้านใกล้ที่สุดนี้ จะขึ้นอยู่กับจำนวนระยะห่าง การอธิบายระหว่างข้อมูลทั้งคู่ ที่สามารถแบ่งแยกอย่างมีประสิทธิภาพระหว่างข้อมูลปกติ และข้อมูลผิดปกติ การอธิบายจำนวนระยะห่างระหว่างขอมูลเป็นความท้าทายอย่างมากเมื่อข้อมูลมีความซับซ้อน อย่างเช่น ข้อมูลกราฟ และข้อมูลแบบลำดับ เป็นต้น

ปัญหาที่เกี่ยวข้อง
------------------

* ต้นไม้ K-D
* การทำเหมืองข้อมูล

viedo ที่เกี่ยวข้อง
-------------------

* K-nearest neighbor classification เก็บถาวร 2009-08-31 ที่ เวย์แบ็กแมชชีน
* Dualtree K-Nearest Neighbor[*ลิงก์เสีย*]
* Random 3D Nearest Neighbor Networks
* Random 2D Nearest Neighbor Networks
* Nearest Neighbor Graph Connections

ดูเพิ่ม
-------

* 
* 
* เก็บถาวร 2011-10-22 ที่ เวย์แบ็กแมชชีน
*

อ้างอิง
-------

* Gregory Shakhnarovich, Trevor Darrell, Piotr Indyk. "Nearest-Neighbor Methods in Learning and Vision: Theory and Practice (Neural Information Processing series)"

* Pattern Synthesis, Compact Data Representation and other Schemes. "Improvements to Nearest Neighbor Classifier"

* Gregory Shakhnarovich, Piotr Indyk , Trevor Darrell. "Nearest-Neighbor Methods In Learning And Vision: Theory And Practice)"

* Frances Browne. "The Nearest Neighbor: and Other Stories"

แหล่งข้อมูล
-----------

1. ↑   เก็บถาวร 2011-09-17 ที่ เวย์แบ็กแมชชีน (หนังสือ)
2. ↑   (หนังสือ)
3. ↑   (หนังสือ)
4. ↑    (หนังสือ)