機器學習就是把無序的數據轉換成有用的信息。
1 相關術語
(1)模型:模型是機器學習的核心概念,可以認爲是某種機器學習算法在設定參數後的產物。
(2)數據集:數據集又分爲訓練集和測試集,在訓練模型階段使用,叫做訓練集;在測試模型階段使用,就叫測試集。
(3)數據:數據集就是數據的集合。在機器學習中,稱一條數據爲一個樣本(Sample),形式類似一維數組。樣本通常包含多個特徵(Feature),如果是用於分類的數據集,還會包含類別(Class Label)信息,如果是迴歸問題的數據集,則會包含一個連續型的數值。
(4)特徵:在機器學習中,特徵是某個對象的幾個記錄維度。例如一張個人信息表,特徵就是這張表裏的空格,如名字、性別、出生日期、籍貫等,一份個人信息表格可以看成一個樣本,名字、籍貫這些信息就稱作特徵。前面說數據形式類似一維數組,那麼特徵就是數組的值。
(5)向量:向量爲線性代數術語,機器學習模型算法的運算均基於線性代數法則,可以認爲向量就是該類算法所對應的“數據結構”。一條樣本數據就是以一個向量的形式輸入模型的。一條監督學習數據的向量形式如下:
[特徵X1值,特徵X2值,...,Y1值]
(6)矩陣:矩陣爲線性代數屬於,可以將矩陣看成由向量組成的數組,形式上也非常接近二維數組。數據集通常就是以矩陣的形式輸入模型的,常見的矩陣形式如下:
[特徵X1值,特徵X2值,...,Y1值],
[特徵X1值,特徵X2值,...,Y2值],
...
每一行就是一個樣本,每一列就是一個特徵維度。
2 如何選擇合適的算法
選擇實際可用的算法,必須考慮下面兩個問題:
(1)使用機器學習算法的目的,想要算法完成何種任務,比如是預測明天下雨的概率還是對投票者按照興趣分組;
① 如果想要預測目標變量的值,則可以選擇監督學習算法,否則可以選擇無監督學習算法。
② 確定目標變量類型,如果目標變量是離散型,如是/否、1/2/3、A/B/C或者紅/黃/黑等,則可以選擇分類器算法;如果目標變量是連續型的數值,如、或者等,則需要選擇迴歸算法。
③ 如果不想預測目標變量的值,則可以選擇無監督學習算法。進一步分析是否需要將數據劃分爲離散的組。如果這是唯一的需求,則使用聚類算法;如果還需要估計數據與每個分組的相似程度,則需要使用密度估計算法。
(2)需要分析或收集的數據是什麼。
應該瞭解數據的以下特性:
- 特徵值是離散型變量還是連續型變量
- 特徵值中是否存在缺失的值,何種原因造成缺失值
- 數據中是否存在異常值
- 某個特徵發生的頻率如何(是否罕見得如同海底撈針)
- …
充分了解上面提到的這些數據特性可以縮短選擇機器學習算法的時間。
實際上沒有絕對的最好的算法,對於每種算法都有改進其性能的其他技術。在處理輸入數據之後,兩個算法的相對性能也可能發生變化。一般說來發現最好算法的關鍵環節是反覆試錯的迭代過程。
3 開發ML應用程序的步驟
(1)收集數據。
(2)準備輸入數據。
(3)分析輸入數據。
(4)訓練算法。
(5)測試算法。
(6)使用算法。
4 Numpy簡單介紹
(1)構造一個的隨機數組(numpy array)
from numpy import *
random.rand(4,4)
(2)調用 mat()
函數可以把數組(array)轉化爲矩陣(matrix)
randMat = mat(random.rand(4, 4))
(3).I
可以實現矩陣求逆運算
invRandMat = randMat.I
(4)矩陣乘法
randMat * invRandMat
結果應該是單位矩陣,除了對角線元素是1,4×4矩陣的其他元素應該全是0。實際輸出結果略有不同,矩陣裏還留下了許多非常小的元素,這是計算機處理誤差產生的結果。輸入下述命令,得到誤差值:
myEye = randMat * invRandMat
myEye - eye(4)
eye(4)
可以創建4×4的單位矩陣。