1. 程式人生 > >達觀資料王子豪:這5個例子,小學生都能秒懂分類演算法

達觀資料王子豪:這5個例子,小學生都能秒懂分類演算法

分類演算法作為資料探勘、機器學習中重要的研究領域,在新聞分類、黃反廣告識別、情感分析、觀點挖掘等應用實踐中都有著廣泛的應用。如何將樸素貝葉斯、決策樹、支援向量機這些常見的分類演算法通俗易懂地講給對人工智慧感興趣的人?達觀研究院的這篇分類演算法科普文章,以日常生活為例子,讓小學生都能秒懂分類演算法。

試想,8歲的小明是你剛上小學的兒子,長得可愛,古靈精怪,對世界充滿好奇。

這天飯後,剛寫完家庭作業的小明看到你在書桌前對著電腦眉頭緊鎖,便跑了過來問你:“爸爸(媽媽),你在做什麼呀?”。

身為演算法工程師的你正為公司的一個分類專案忙得焦頭爛額,聽到小明的問話,你隨口而出:“分類!”

“分類是什麼?”

聽到兒子的追問,你的視線終於離開螢幕,但想說的話還沒出口又咽了回去……

分類是什麼?

簡單來說,分類就是對事物進行區分的過程和方法。

在你眼裡乖巧的小明是一個好孩子,同時你也想確保他會在學校做一名“好學生”而不是“壞學生”。這裡的區分“好學生”和“壞學生”就是一個分類任務,關於這點,達觀研究院可以幫你回答小明的疑問。

K最鄰近

“別和其他壞學生在一起,否則你也會和他們一樣。”        —— 家長

這句話通常來自家長的勸誡,但它透露著不折不扣的近鄰思想。

在分類演算法中,K最近鄰是最普通也是最好理解的演算法。它的主要思想是通過離待預測樣本最近的K個樣本的類別來判斷當前樣本的類別。

 

 

家長們希望孩子成為好學生,可能為此不惜重金購買學區房或者上私立學校,一個原因之一是這些優秀的學校裡有更多的優秀學生。與其他優秀學生走的更近,從K最近鄰演算法的角度來看,就是讓目標樣本與其他正樣本距離更近、與其他負樣本距離更遠,從而使得其近鄰中的正樣本比例更高,更大概率被判斷成正樣本。

2  樸素貝葉斯

“根據以往抓獲的情況來看,十個壞學生有九個愛打架。”      —— 教導主任

說這句話的訓導主任很有可能就是通過樸素貝葉斯演算法來區分好、壞學生。

“十個壞學生有九個愛打架”就意味著“壞學生”打架的概率P(打架|壞學生)=0.9,假設根據訓導處歷史記錄壞學生佔學生總數P(壞學生)=0.1、打架發生的概率是P(打架)=0.09,那麼這時如果發生打架事件,就可以通過貝葉斯公式判斷出當事學生是“壞學生”的概率P(壞學生|打架)=P(打架|壞學生)×P(壞學生)÷P(打架)=1.0,即該學生100%是“壞學生”。

樸素貝葉斯演算法成立的一個前提是滿足特徵間條件獨立假設。假如教導主任還管學生早戀問題,那麼他通過“打架”和“早戀”兩種特徵來判斷學生的前提必須是——在已知學生“好壞”的情況下“打架”和“早戀”之間沒有關聯。這樣的假設可能和實際情況不符合,但讓訓導主任判斷起來更加簡單粗暴。

3  決策樹

“先看抽不抽菸,再看染不染頭髮,最後看講不講髒話。”  ——社群大媽

 

社群大媽經驗豐富,有一套自己的判斷邏輯。假設“抽菸”、“染髮”和“講髒話”是社群大媽認為的區分“好壞”學生的三項關鍵特徵,那麼這樣一個有先後次序的判斷邏輯就構成一個決策樹模型。在決策樹中,最能區分類別的特徵將作為最先判斷的條件,然後依次向下判斷各個次優特徵。決策樹的核心就在於如何選取每個節點的最優判斷條件,也即特徵選擇的過程。

而在每一個判斷節點,決策樹都會遵循一套IF-THEN的規則:

IF “抽菸” THEN -> “壞學生”

ELSE

        IF “染髮” THEN -> “壞學生”

        ELSE IF “講髒話” THEN -> “壞學生”

                       ELSE -> “好學生”

4  邏輯迴歸

“上課講話扣1分,不交作業扣2分,比賽得獎加5分。”   ——紀律委員

班上的紀律委員既勤懇又嚴格,總是在小本本上記錄同學們的每一項行為得分。在完成對每一項行為的評分後,紀律委員根據最終加總得到的總分來判斷每位同學的表現好壞。

上述的過程就非常類似於邏輯迴歸的演算法原理。我們稱邏輯迴歸為一種線性分類器,其特徵就在於自變數x和因變數y之間存在類似y=ax+b的一階的、線性的關係。假設“上課講話”、“不交作業”和“比賽得獎”的次數分別表示為x1、x2、和x3,且每個學生的基礎分為0,那麼最終得分y=-1*x1-2*x2+5*x3+0。其中-1、-2和5分別就對應於每種行為在“表現好”這一類別下的權重。

Sigmoid函式影象

對於最終得分y,邏輯迴歸還通過Sigmoid函式將其變換到0-1之間,其含義可以認為是當前樣本屬於正樣本的概率,即得分y越高,屬於“表現好”的概率就越大。也就是說,假如紀律委員記錄了某位同學分別“上課講話”、“不交作業”和“比賽得獎”各一次,那麼最終得分y=-2-1+5=2,而對2進行Sigmoid變換後約等於0.88,即可知該同學有88%的概率為“好學生”。

支援向量機

“我想個辦法把表現差的學生都調到最後一排。”  ——班主任

即使學生們再不情願,班主任也有一萬個理由對他們的座位作出安排。對於“壞學生”,一些班主任的採取的做法是儘量讓他們與“好學生”保持距離,即將“壞學生”們都調到教室的最後一排。這樣一來,就相當於在學生們之間畫了一條清晰的分割界線,一眼就能區分出來。

支援向量機的思想就是如此。支援向量機致力於在正負樣本的邊界上找到一條分割界線(超平面),使得它能完全區分兩類樣本的同時,保證劃分出的間隔儘量的大。如果一條分割界線無法完全區分(線性不可分),要麼加上鬆弛變數進行適當的容忍,要麼通過核函式對樣本進行空間上的對映後再進行劃分。對於班主任來講,調換學生們的座位就相當於使用了核函式,讓原本散落在教室裡的“好”、“壞”學生從線性不可分變得線性可分了。

6  結束語

分類和分類演算法的思想其實無處不在。而在實際工程中,分類演算法的應用需要關注的地方還有很多。達觀資料在中文文字分類方面擁有豐富的實踐經驗和心得。想了解這方面的內容,敬請期待下一篇文章《中文文字分類——你需要了解的10項關鍵內容》。

 

關於作者

王子豪:達觀資料高階NLP演算法工程師,負責達觀資料文字挖掘和NLP演算法的開發及應用,在文字分類、觀點挖掘和情感分析等領域有豐富實踐經驗。