999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

分類問題中的算法

2020-12-21 03:48:17李曉明
中國信息技術教育 2020年23期
關鍵詞:分類

李曉明

現在,人工智能很熱。人工智能應用中有些很基本的需求,分類即為其中最常見的一種。分類關心的是如何將一個對象歸到已知類別中。例如,人可以分為少年、青年、中年、老年四個類別,商品可以分為廉價和高檔兩個類別,學生在課堂上的表現可分為積極踴躍、沉穩細致、不以為然三個類別,網購者可分為隨性和理性兩種類別,等等。在日常生活中,這種分類主要憑感覺。而如果用計算機來做,則每一種類別都需要通過一些數據特征予以刻畫,每一個對象或者說個體都是通過一個“數據點”來表示,如后面要講的一個網購的例子,其數據特征就用了“每月網購次數”和“每次平均花費”。一個每月網購10次、每次平均花費120元的人則用數據點(10,120)來表示。

不難體會到,把一個個體歸到預設的類別中,有些比較容易,有些則很不容易。鑒于分類在現實中有廣泛的應用,人們發明了多種算法,應對各種不同的情形。本文介紹兩個最基本的算法——K近鄰(KNN)算法和支持向量機(SVM)算法。

這兩個算法的基本思路都很簡單直觀。KNN的實現容易理解,因而人工智能的教材里一般都會有它。SVM的常規實現需要較深的數學基礎,因而一般初等人工智能教材都沒有它。不過,由于SVM實在很重要,最近也看到有嘗試在中學人工智能教材中介紹它[1],只是在介紹了算法基本思想后用了一句“這個問題可以用優化方法求解,但具體過程已經超出了同學們現階段的知識儲備,等到同學們以后學習了相關的數學工具后,就可以求解了”就結束了。本文將從一個不同的視角描述一個實現SVM的算法,該算法從效率上講沒有常規的SVM算法高,但用到的數學知識在中學生可理解的范疇內,他們應該能夠編程實現,因而適合中學的教學。

一般而言,設計分類算法的目的是實現一個所謂“分類器”(程序)。分類器的實現通常都是基于一批已知類別的數據,形成某些規則,來做未知類別對象的類別判斷,圖1是一個概念圖。

實現一個分類器的基礎是一個預先給定的類別集合C={C1,C2,...,Cm}和一批已知類別的樣本數據集D={d1,d2,...,dn}。不同分類算法的區別一般體現在所形成的分類規則上。

類別集合C通常是人們根據需要或經驗事先確定的,有一定現實含義,如本文開始時提到的那些。樣本數據集D怎么做到類別已知的呢?通常是采用人工標注給定,也就是事先找來一批有代表性的數據,請有背景知識的人一一給打上類別標簽。這項工作一方面很重要,對后續自動分類的質量有基礎性影響,另一方面在互聯網經濟中的需求越來越普遍,因而形成了一種新職業——數據標注員。

在分類問題中,一個核心的概念是兩個數據點之間的距離。所謂判斷一個數據點該屬于哪個類,本質上就是看它離哪個類的已知數據點更近。而“距離”在不同的應用背景下可能有不同的定義。我們以二維數據空間為例,給出三種常見的距離定義,如圖2所示。

設(x1,y1)和(x2,y2)為兩個數據點p1和p2的坐標,歐式距離、曼哈頓距離和余弦相似度①分別為:

其中,前面兩個都有“數值越小越接近(相似)”的含義,而余弦相似度定義在區間[0,1],越大越相似。若余弦相似度為1,意味著兩個數據點同在一條通過原點的直線上。體會這幾個定義的含義,讀者對它們適用的不同場合能有些直覺認識。

一般而言,KNN和SVM處理的數據點都可以是高維的,用多于三個特征分量來表示一個對象的特征。本文為突出要點,只考慮二維的情形,于是有如圖3所示的視覺形象,便于解釋有關細節。

圖3(a)示意在二維數據空間中有兩種已經標注(分別用圓和三角表示)類型的樣本數據。它們大致分布在空間中兩個不同的區域,任何兩個數據點之間都可以談論某種距離。我們特別注意到,同類數據之間的距離不一定就比異類之間的小。圖3(b)示意出現了一個未知類別的數據(x),它應該屬于哪一類呢?

● KNN算法基本思路

針對樣本數據D,KNN算法采用了一種可以說是體現“近朱者赤,近墨者黑”和“少數服從多數”原則的直截了當的思路。它一一計算待分類數據x與樣本數據集D中所有數據的距離,然后取其中最小的K個(也就是“KNN”中的K,而NN表示“最近的鄰點”),看它們分別屬于哪一個類,判定x應該屬于K中出現較多的那個類。

采用什么距離定義和具體應用有關,為和后面的例子對應,下面的算法描述采用了余弦相似度作為距離。

● KNN分類算法(如表1)

● 算法運行例

假設我們考慮對網購者的分類,用“每月網購次數”和“每次平均花費”兩個量來刻畫每一個用戶,要看一個人是“隨性”(S)還是“理性”(R)②。有一個已經人工標好類型的樣本數據如圖4(a)所示,現在有一個用戶每月網購5次,平均花費40元,即她的數據是x=(5,40)。問她是屬于隨性網購者還是理性網購者?

采用KNN算法對這個用戶分類,采用余弦相似度作為距離度量,首先算得x=(4,50)與16個已知數據的距離,如圖4(b)第1列所示。為方便查看,我們把那些距離按照與1接近的程度的排序放在表中最右邊一列。(注意,對余弦距離而言,越接近1表示越“近”)

現在,如果取K=1,看到離x最近的(6,45)是“S”,于是x應該被分類為“S”。如果取K=3,離x最近的3個都是“S”,如果取K=5,離x最近的5個里有4個“S”1個“R”,等等。你覺得應該認為x是隨性網購者還是理性網購者呢?顯然,認為這個x是一個隨性網購者比較合理。

● 算法性質的分析

這是一個正確的算法嗎?如果考慮的是2-分類,即類別數為2,且K為奇數,KNN算法總會有一個輸出,建議x應該屬于哪一類。因此不存在停機或收斂之類的問題。問題可能在于它給出的建議到底有多靠譜。這樣,除了給出x當屬于哪個類別外,還可以給出一個概率,即在TOP-K中,占優類型的數據在整個K中的占比。例如,在上面的例子中,K=3,這個占比就是100%,K=5,這個占比就是80%。如果類別數大于2,則還需要有一個方法來做“平手消解”,當某兩類在TOP-K中有相同出現時決定取哪一個。

一個分類器的質量常常用“準確度”(accuracy)指標來評價。假設一共有p個測試數據x1,x2,…,xp,對它們分完類后人工一一做檢查。用r表示分類錯誤的個數,準確度就是p/(p+r)。

這個算法的效率如何呢?

KNN分類算法的計算復雜度與樣本集大小(n)有關,與樣本屬性的維數有關。在我們討論的二維情況下,從算法描述中可以看到,計算余弦距離時間復雜度是O(n)。算法第3行找出n個相似度中的TOP-K,一般算法是O(k*n),采用適當的數據結構可以做到O(k*logn)。

在學過了算法園地專欄前面十多個算法后,現在學KNN算法,讀者可能會產生一種十分不一樣的感覺。首先,這種算法看起來好簡單,直截了當好理解,其邏輯與前面討論過的那些相比要淺顯許多。其次,給出的分類結果到底有多靠譜,一般來說是沒法證明的。事實上,像分類這樣的問題,現實中經常就是沒有客觀標準。但為了能推進研究,人們通常會準備一些有代表性的測試數據集(benchmark)用于比較不同方法的效果。當然,最終效果如何,只能通過實際應用檢驗了。

● SVM概念與算法目標

下面討論SVM,它有一個聽起來很高深的名字“支持向量機”。我們不被它困擾,來看具體是什么意思。還是用圖3的數據,畫出SVM分類概念的示意圖,如圖5(a)所示。

可以看到,圖中除了數據點,還有將兩類數據點分開的直線。SVM就是要基于樣本數據點,算出一條那樣的直線(y=ax+b),從而可對擬分類數據依照它是在直線的左右來賦予類別,這個示例就是左邊為“圓”,右邊為“三角”。不過,讀者可能馬上注意到圖5(a)中有兩條直線,它們對于待分類數據點(x)分類的結論是不同的,于是就有了哪個更好的問題。SVM怎么考慮呢?SVM要求一條“最優的”直線。

什么叫“最優的”直線?SVM采用的觀點是離它最近的數據點盡量遠。形象地看,就是在兩類數據之間“最窄”處的中線。圖5(b)是一個示意,根據兩類數據點的情況,我們分別畫了一個外包凸多邊形(這種多邊形在計算幾何學中叫“凸包”),這樣它們之間的“通道”也看得很清楚了③。如果我們能確定兩個凸包上距離最近的兩個點(不一定都恰好在頂點上),做連接它們的線段,再做該線段的垂直平分線,就得到了SVM的結果,如圖5(c)所示。

下面給出的SVM算法就是求這樣一條直線的算法。讀者能感到與前面的KNN很不同,那里是基于樣本數據直接對數據點(x)做分類。不過,讀者也能意識到,一旦有了這樣一條直線,判斷一個數據(x)應該屬于哪一類就是一件平凡的事情,用不著專門說了。

● 一種SVM分類器算法

下面描述的算法相對比較宏觀(如表2),有利于讀者把握整體概念。其中的細節在后面做進一步闡述。另外,所提到的距離此時均為歐幾里德距離。

下面來討論其中的要點。首先,理解這個算法的細節(包括編程實現)所需的主要數學知識為平面向量的知識,這在高中新教材中已有覆蓋,見參考文獻[2]的第6章。具體包括平面上兩個點的距離公式、一個點到一條直線的距離公式(由此得到點到線段的距離公式)、根據一個點的坐標和斜率確定直線y=ax+b的方法等。下面以算法中的最后一步(5)為例,展示處理這類問題的樣式。已知由(x1,y1)和(x2,y2)確定的線段,要確定垂直平分線y=ax+b中的參數a和b。

算法的第2、3、4步只涉及距離的計算和排序,不用贅述。算法的第1步,從一個平面數據點集得到它的凸包。這是計算幾何學中的一種基本運算,人們研究出了許多簡單易懂的算法,陳道蓄教授在本專欄上一期,也就是2020年第21期上介紹了其中兩種[3],在此也不贅述,有興趣的讀者可自行查閱學習。

● 算法的性質分析

先看計算復雜性。若第1步采用[3]中介紹的第二個算法,復雜性是O(nlogn)。第2步和第3步計算距離,若不采用任何優化,為O(n2)。第4和第5步是常數時間。總的來說,復雜性為O(n2)。

為什么算法得到的直線y=ax+b就是最優的一條直線?由于它是在兩個最短距離的點(x1,y1)和(x2,y2)之間,這意味著兩類數據之間不可能有更寬的通道。而由于它是“垂直平分線”,這意味著它做到了讓“離它最近的數據點盡量遠”。

不過,細心的讀者可能問到一個更加微妙的問題。那就是,記即數據點(? ? ? )和(? ? ? )之間線段的長度,那么兩個數據點離上述直線的距離都是d/2。為什么樣本數據中不可能有其他的數據點,離直線的距離小于d/2呢?這與凸包的性質有關,與直線是“垂直平分線”有關,也與算法中第3步強調了要包括“點與邊的距離”有關。鼓勵有興趣的讀者思考體會一下這背后的“玄機”。當然,也歡迎有疑問的讀者與我們交流。

本文形成過程中與陳道蓄教授有過深入討論,他指出SVM算法中的第2步可以省去,進而第4步也可以省去了。想想的確如此。不過文中保留了原樣,留作讀者思考為什么那兩步可以省去。

釋:①即平面上兩個向量夾角的余弦值,其表達式的推導可見高中數學教材[2]。

②用什么特征來表示所關心的類型,與對應用背景的理解直接相關。這里采用兩個特征分量只是用來說明算法運行的過程,實際應用中為區分隨性和理性消費者會比這要求更多。

③這里,我們總假設兩個凸多邊形是不重疊的。

參考文獻:

[1]湯曉鷗,陳玉琨.人工智能基礎(高中版)[M].上海:華東師范大學出版社,2018,4:35.

[2]薛彬,張淑梅.數學(第二冊)[M].北京:人民教育出版社,2019,7:34.

[3]陳道蓄.平面上的凸包計算[J].中國信息技術教育,2020(21):25-29.

注:作者系北京大學計算機系原系主任。

猜你喜歡
分類
2021年本刊分類總目錄
分類算一算
垃圾分類的困惑你有嗎
大眾健康(2021年6期)2021-06-08 19:30:06
星星的分類
我給資源分分類
垃圾分類,你準備好了嗎
學生天地(2019年32期)2019-08-25 08:55:22
分類討論求坐標
數據分析中的分類討論
按需分類
教你一招:數的分類
主站蜘蛛池模板: 综合网天天| 久久综合五月婷婷| 激情六月丁香婷婷| 国产麻豆91网在线看| 无码专区国产精品第一页| 东京热一区二区三区无码视频| 无码高潮喷水专区久久| 女人18毛片水真多国产| 国产香蕉国产精品偷在线观看| 色婷婷国产精品视频| 成人亚洲天堂| 国产爽歪歪免费视频在线观看 | 日韩中文无码av超清| 2022精品国偷自产免费观看| 亚洲欧洲日产无码AV| 午夜性爽视频男人的天堂| 奇米影视狠狠精品7777| 美女国内精品自产拍在线播放| 青青操国产| 一级成人a做片免费| 播五月综合| 亚洲精品第1页| 久久亚洲天堂| 69视频国产| 亚洲人网站| 国产www网站| av一区二区三区在线观看| 亚洲无码视频一区二区三区| 伊在人亚洲香蕉精品播放| 国产黄色免费看| 亚洲精品无码久久毛片波多野吉| 又大又硬又爽免费视频| 日韩欧美国产综合| 国产a v无码专区亚洲av| 色有码无码视频| 亚洲全网成人资源在线观看| 午夜国产大片免费观看| 在线观看91香蕉国产免费| 喷潮白浆直流在线播放| 亚瑟天堂久久一区二区影院| 91九色国产在线| 岛国精品一区免费视频在线观看| 99热这里只有免费国产精品| 国产永久免费视频m3u8| 日本一区二区不卡视频| 国产精品尤物铁牛tv| 国产精品播放| 日韩色图区| 在线欧美日韩国产| 亚洲天堂久久| AV熟女乱| 无码精品一区二区久久久| 亚洲国产成人超福利久久精品| 欧美一区二区三区香蕉视| 尤物精品视频一区二区三区| 欧美精品另类| 欧美成人一区午夜福利在线| 最新亚洲人成无码网站欣赏网 | 精品一区二区三区波多野结衣| 女人18毛片久久| 久久人体视频| 亚洲一级毛片在线观播放| 亚洲黄色视频在线观看一区| 青青青国产视频手机| 欧美成人精品一区二区| 在线观看亚洲人成网站| 日本在线免费网站| 国产91无码福利在线| 亚洲一区二区三区国产精华液| 国产乱码精品一区二区三区中文| 欧美福利在线播放| 国产欧美日韩91| 欧美成人精品在线| 久久99国产综合精品1| 嫩草国产在线| 国产免费黄| 日本日韩欧美| 国产00高中生在线播放| 中文字幕精品一区二区三区视频 | 99久久亚洲综合精品TS| 国产精品99久久久久久董美香| 91九色最新地址|