從零開始-Machine Learning學習筆記(1)-機器學習概述
機器學習,顧名思義就是機器像人一樣進行“學習”,是近兩年來最為人津津樂道的名詞之一,這一名稱的由來卻鮮為人所提起。在最近閱讀周志華先生的《機器學習》一書之中,在其第一章的小故事中得到這一名詞的由來。
1952年,阿瑟·薩繆爾在IBM公司研製了一個具有學習能力的西洋跳棋程式,可以對大量的棋局中分析出當前局面的“好棋”與“壞棋”,不斷提高弈棋水平。1956年,約翰·麥卡錫邀請薩繆爾在達特茅斯會議上介紹這一項工作。薩繆爾首次提出了“機器學習”這個詞,並解釋為“不顯式程式設計地賦予計算機能力的研究領域”。這對於電腦科學的發展產生了重要的影響。因為在此之前的研究認為計算機不可能完成事先沒有顯示程式設計好的任務!
目前已經存在很多種不同的學習演算法,大部分的演算法都可以被分類為兩種型別,即:監督學習與非監督學習。所謂監督學習,就是我們給計算機的訓練資料都是有標籤的,所謂有標籤的資料可以簡單的理解為一個訓練樣本中有多個特徵X,這些X會導致結果Y,於是我們每個訓練樣本可以表示為(x1, x2, x3, … , y1, y2,… )。這些資料給計算機,計算機就有一個目標,那就是將自己的模型逐漸的向訓練資料靠攏,使得最終我們可以使用這個模型去預測某個非訓練樣本(x1, x2, …)對應的(y1, y2, …);而非監督學習則是給計算機的資料是沒有標籤的,計算機不知道什麼樣的結果是正確的,自己對資料進行一個劃分,找到這些資料的共同特徵。對資料進行聚類就是一個典型的無監督的學習演算法。
監督學習演算法主要有k-近鄰演算法,決策樹,樸素貝葉斯,邏輯迴歸與線性迴歸,SVM(支援向量機)和樹迴歸等;而無監督學習的典型演算法主要有k-均值聚類演算法,Apriori演算法和FP-growth演算法等。有意思的是這些演算法並不是最新研究出來的結果,而是很早之前就存在的,受限制於當時計算機的處理速度。近些年來,隨著計算機效能的提升,這些演算法得到更好的應用,使得人工智慧成為熱議的焦點,也推動了社會的發展。但是歸根結底是因為硬體技術的革命而非機器學習本身的突破,所以機器學習要得到長遠的發展,還需自身得到一些創新與突破。這也是同行諸位的共同任務!We can make this world a better place!