Hulu機器學習問題與解答系列 | 第七彈:非監督學習演算法與評估

非監督學習演算法與評估

[場景描述]

人具有很強的歸納思考能力,善於從一大堆碎片似的事實或者數據中尋找普遍規律,並得到具有邏輯性的結論。以用戶觀看視頻的行為為例,可以存在多種直觀的歸納方式,比如從觀看內容的角度看,有喜歡看動畫片的,有喜歡看偶像劇的,有喜歡看科幻片的等等;從使用設備的角度看,有喜歡在台式電腦上觀看的,有喜歡手機或者平板攜帶型設備上觀看的,還有喜歡在電視等大屏幕上觀看的;從使用習慣上看,有喜歡傍晚觀看的,有喜歡中午時段觀看的,有每天都觀看的用戶,也有隻在周末觀看的用戶,等等。對所有用戶進行有效的分組對於理解用戶並推薦給用戶合適的內容是重要的。通常這類問題沒有觀測數據的標籤或者分組信息,需要通過演算法模型來尋求數據內在的結構和模式 。

[問題描述]

以聚類演算法為例,假設沒有外部標籤數據,如何區分兩個無監督學習(聚類)演算法性的優劣呢?

[背景知識]

非監督學習,常見聚類演算法

[解答與分析]

場景描述中的例子就是一個典型的聚類問題,從中可以看出,數據的聚類依賴於需求的定義,同時也依賴於分類數據的特徵度量以及數據相似性的方法。相比於監督式學習,非監督學習通常沒有正確答案,演算法模型的設計直接影響最終的輸出和性能,需要通過多次迭代的方法尋找模型的最優的參數。因此了解常見數據簇的特點和常見聚類演算法的特點,對尋求評估不同聚類演算法性能的方法有很大的幫助。

常見數據簇的特點:

  • 以中心定義的數據簇:這類數據集合傾向於球形分布,通常中心被定義為質心,即此數據簇中所有點的平均值。集合中的數據到中心的距離相比到其它簇中心的距離更近;
  • 以密度定義的數據簇:這類數據集合呈現和周圍數據簇明顯不同的密度,或稠密或稀疏。當數據簇不規則或互相盤繞,並且有雜訊和離群點時,常常使用基於密度的簇定義;
  • 以連通定義的數據簇:這類數據集合中的數據點和數據點之間有連接關係,整個數據簇表現為圖結構,該定義對不規則形狀或者纏繞的的數據簇有效;
  • 以概念定義的數據簇:這類數據集合中的所有數據點具有某種共同性質。

常見的聚類演算法的特點:

  • 劃分聚類:將數據對象劃分成互不重疊的數據簇,其中每個數據點恰在一個數據簇中;
  • 層次聚類:數據簇可以具有子簇,具有多個(嵌套)子簇的數據簇可以表示為樹狀結構;
  • 模糊聚類:每個數據點均以0~1的隸屬權值屬於某個數據簇;
  • 完全/不完全聚類:是否對所有數據點都指派一個數據簇。

由於數據以及需求的多樣性,沒有一種演算法能夠適應所有的數據類型、簇和應用,似乎每種情況都可能需要一種不同的評估度量。例如,K均值聚類通常需要用SSE (Sum of Square Error) 來評估,但是基於密度的數據簇可以不必是球形,SSE則完全失效。在許多情況下,判斷聚類演算法結果的好壞最終強烈依賴主觀解釋。儘管如此,聚類演算法的評估還是必須的,它是聚類分析中重要部分之一 。

對聚類演算法優劣的評估通常可以總結為對以下五個方面的分析:

  1. 辨識數據中是否存在非隨機簇結構的能力;
  2. 辨識數據中正確數據簇的能力;
  3. 評估數據被正確聚類的能力;
  4. 辨識兩個數據簇之間優劣的能力;
  5. 評估與客觀數據集之間的差異;

假設存在外部標註數據的支持,那麼第5點將轉化為監督學習的問題,直接度量聚類演算法發現的聚類結構與標註數據的結構匹配程度即可。假設不存在外部標註數據,基於以上所列1~4點,可以如下圖1~5所示,測試聚類演算法對不同類型數據簇的聚類能力:

圖1. 觀察誤差是否隨聚類類別數量的增加而單調變化

圖2. 觀察誤差對聚類結果的影響

圖3. 觀察近鄰數據簇的聚類準確性

圖4. 觀察聚類演算法在處理較大的數據密度差異時的性能

圖5. 觀察處理不同大小數據種類時的聚類準確度

[擴展問題]

在以上的回答中介紹了五種評估兩個聚類演算法性能優劣的,那麼具體而言有哪些常見的指標可以用來計算和辨識聚類演算法優劣呢?給出幾種可能的數據簇形態,定義評估指標可以展現面試者實際解決和分析問題的能力。事實上測量指標可以有很多種,以下列出了三個在數據緊湊性或數據簇可分離程度上的度量,更多指標則請參考文獻[1],具體描述如下:

  • 均方根標準偏差 (RMSSTD),衡量聚類同質性:

  • R方 (R-Square),衡量聚類差異度:

  • 改進的Hubert Γ統計,通過數據對的不一致性來評估聚類的差異:

這其中:


下一題預告

【強化學習】

[場景描述]

遊戲是強化學習最有代表性也是最合適的應用領域之一,其幾乎涵蓋了強化學習所有的要素,例如環境:遊戲本身的狀態,動作:用戶操作,機器人:程序,回饋:得分、輸贏等。通過輸入原始像素來玩視頻遊戲,是人工智慧成熟的標誌之一。雅達利(Atari)是20世紀七八十年代紅極一時的電腦遊戲,類似於國內的紅白機遊戲,但是畫面元素要更簡單一些。它的模擬器相對成熟簡單,使用雅達利遊戲來測試強化學習,是非常合適的。應用場景可以描述為:在離散的時間軸上,每個時刻你可以得到當前的遊戲畫面,選擇向遊戲機發出一個指令(上下左右,開火等),然後得到一個回饋(reward)。由於基於原始像素的強化學習對應的狀態空間巨大,沒有辦法直接使用傳統的方法。於是,2013年DeepMind提出了深度強化學習模型,開始了深度學習和強化學習的結合[2]。

傳統的強化學習主要使用Q-learning,而深度強化學習也使用Q-learning為基本框架,把Q-learning的對應步驟改為深度形式,並引入了一些技巧,例如經驗重放(experience replay)來加快收斂以及提高泛化能力。

[問題描述]

什麼是深度強化學習,它和傳統的強化學習有什麼不同,如何用它來玩視頻遊戲?

[參考文獻]

[1] Liu Y C, Li Z M, Xiong H, et al. Understanding of internal clustering validation measures. In: Proceedings of IEEE ICDM10, Sydney, 2010. 911-916.

[2] Antonoglou, I., Graves, A., Kavukcuoglu, K., Mnih, V., Riedmiller, M.A., Silver, D., & Wierstra, D. (2013). Playing Atari with Deep Reinforcement Learning. CoRR, abs/1312.5602.


歡迎留言提問或探討

關注「Hulu」微信公眾號,點擊菜單欄「機器學習」獲得更多系列文章


推薦閱讀:

外資投行面試通關秘籍(附真題)
面試官問會不會做假賬怎麼回答?
面試有什麼需要注意的一些小細節?
【面試寶典】面試中你能遇到的問題答案全在這兒了
有哪些話是面試的時候千萬不能說的?

TAG:機器學習 | 人工智慧 | 面試問題 |