
過去,計算機只能做一些機械性的任務,例如求出表格里的所有數據之和,或者統計文本里的總字數,現在,計算機似乎變得越來越聰明了,給它一張照片,它能告訴你照片里都有些什么東西;給它一段錄音,它能告訴你里面的人都說了些什么:給它一篇文章,它能幫你想一個合適的標題,計算機甚至能像真人一樣,跟你聊天對話,為你答疑解惑,這一切,都得益于近幾年來AI技術的飛速發展。AI,即Artificial Intelligence的簡稱,中文叫作“人工智能”,指的是人造機器能模擬人類的智能行為,其實,早在計算機誕生之初,人們就已經考慮過這個問題。20世紀50年代,科學家們提出過一種思路:提前給計算機輸入大量的數據,讓計算機去總結它們的特征,尋找其中的規律,從而形成對數據的分析和處理手段,自動完成一些似乎只有人才能做的工作,后來,人們把這種實現人工智能的思路叫作“機器學習”。
機器學習的方法有很多,有一種特別簡單的機器學習方法叫作“kNN算法”,經常用于自動對事物進行分類,這是兩位美國統計學家伊夫琳·菲克斯和小約瑟夫·勞森·霍奇斯于1951年提出的,它的核心思想就是,事先給計算機輸入大量已有事物和它們的類別,當需要對一個新事物進行分類時,看看跟它最“像”的那些已有事物大都屬于哪個類別,如果所涉及的事物都只含有兩個數量特征,kNN算法就會把這些事物抽象成一個個實數對,進而抽象成平面直角坐標系上的一個個點,kNN算法的流程如下:
1.收集樣本數據,包括所選樣本的特征和對應的類別:
2.選取一個合適的正整數k:
3.對于一個未分類的新事物,計算其與樣本數據中的所有樣本在平面直角坐標系中的直線距離,并選取距離最近的k個樣本:
4.統計這k個樣本對應的類別,將出現次數最多的類別分配給新事物,當成新事物的預測分類。
簡單地說,我們想要看看和新點最近的k個“鄰居”中最常見的類別,這也就是kNN這個名字的來歷:它是“k個最近的鄰居”(k-Nearest Neighbors)的首字母縮寫。
讓我們通過一個簡單的例子,進一步了解kNN算法的工作原理,假設我們想用kNN算法制作一個系統,可以根據足球球員的比賽數據自動判斷球員的場上位置,已知某賽季中9名球員的進球數、助攻數和場上位置如表1所示。