《Hands-On Machine Learning with Scikit-Learn&TensorFlow》讀書筆記

一 機器學習概覽

  • 機器學習的廣義概念是:機器學習是讓計算機具備學習的能力,無需進行明確編程.
  • 機器學習的工程性概念是:計算機程序利用經驗E學習任務T,性能是P,若是針對任務T的性能P隨着經驗E不斷增加,則爲機器學習.
  • 使用機器學習挖掘大量數據,發現不顯著的規律,稱爲數據挖掘.
  • 根據訓練時監督的量和類型分爲:
  1. 監督學習:訓練數據包含了標籤,如分類,迴歸.
  2. 非監督學習:訓練數據沒有標籤.如聚類,降維,可視化.
  3. 半監督學習:大量不帶標籤數據加上小部分帶標籤數據.如深度信念網絡.
  4. 強化學習:系統執行動做,得到獎勵,而後學習策略.如AlphaGo.
  • 根據是否從導入的數據流進行持續學習分爲:
  1. 批量學習(離線學習):不能進行持續學習,若是想學習新數據就要從新訓練並更換系統.
  2. 在線學習:可使用小批量持續地訓練.缺點是壞數據會致使性能下滑.
  • 根據如何進行概括推廣分爲:
  1. 基於實例學習:先用記憶學習案例,而後用類似度測量推廣到新的例子.
  2. 基於模型學習:創建這些樣本的模型,而後使用模型進行預測.
  • 機器學習的主要挑戰:
  1. 數據量不足
  2. 沒有表明性的訓練數據
  3. 低質量數據
  4. 不相關的特徵
  5. 過擬合
  6. 欠擬合
  • 使用訓練集訓練模型參數,驗證集選取超參數,測試集預估偏差率.爲了不浪費訓練數據在驗證集上,通常使用交叉驗證.

二 一個完整的機器學習項目

  • 本章的目標是創建一個房價預測系統,這是一個迴歸問題.主要步驟爲:項目概述-獲取數據-發現並可視化數據,發現規律-爲機器學習算法準備數據-選擇模型,進行訓練-微調模型-給出解決方案-部署,監控,維護系統.
  • 均方根偏差(RMSE)是迴歸問題的典型指標..
  • 平均絕對偏差(MAE)也是一種選擇.
  • 在相似RMSE和MAE這樣的範數中,範數的指數越高,就越關注大的值而忽略小的值.
  • 利用pd.read_csv()讀取數據後,能夠用head(),info(),value_counts()和describe()方法大體瞭解數據.
  • 在對測試集採樣時,須要保證數據集中的每一個分層都要用足夠的實例位於測試集中.能夠將最重要的一類特徵進行離散處理,而後使用sklearn的StratifiedShuffleSplit類分層採樣.
  • 使用corr(),和pd.tools.plotting.scatter_matrix()方法能夠探索特徵之間的相關性.
  • 特徵之間相互組合產生的新特徵也很重要.
  • 大多數機器學習算法不能處理缺失的特徵.能夠:
  1. dropna()去除對應行
  2. drop()去掉對應屬性
  3. fillna()賦值
  4. 使用sklearn的Imputer類來處理
  • 對於文本和類別屬性,能夠用sklearn的OneHotEncoder來處理.
  • 特徵縮放是最重要的數據轉換之一.能夠用線性函數歸一化(Normalization,減去最小值,除以最大值與最小值的差值,sklearn中的MinMaxScaler)標準化(Standardization,減去平均值,除以方差,sklearn中的StandardScaler)來實現.
  • sklearn提供了Pipeline類來實現流水線.
  • sklearn的GridSearchCV能夠用於網格搜索最佳的超參數組合.適用於搜索空間不大的狀況.
  • sklearn的RandomizedSearchCV能夠用於隨機搜索最佳的超參數組合.適用於搜索空間很大的狀況.

三 分類

  • 二分類問題的準度通常採用準確率(Precision),召回率(Recall)F1值(2*P*R/(P+R)).ROC曲線也是一個經常使用的工具,它是真正例率對假正例率的曲線.ROC曲線下的面積稱爲AUC,AUC越接近1分類器的效果就越好.
  • SVM或線性分類器是嚴格的二分類器,能夠經過OvA(一對全部)OvO(一對一)策略讓它們執行多類分類.Sklearn會自動執行OvA或OvO(對SVM).
  • 多標籤分類是指分類器給一個樣例輸出多個類別.
  • 多輸出-多類分類是指分類器的輸出是多標籤的,而且每一個標籤有多個值.例如圖像去噪.

四 訓練模型

  • 介紹了批量梯度降低,隨機梯度降低和小批量梯度降低,再也不贅述.
  • 若是添加特徵的高階組合做爲新特徵,線性迴歸也能擬合非線性關係.
  • 一個模型的泛化偏差是由誤差(高誤差意味着欠擬合),方差(高方差意味着過擬合),不可約偏差組成的.
  • 訓練中的損失函數應該易於求導,測試過程當中的評價函數應該接近最後的客觀表現.
  • 正則化前對數據進行放縮是很是重要的.
  • 嶺(Ridge)迴歸是在線性迴歸的損失函數直接加上一個L2正則項
  • Lasso迴歸是在線性迴歸的損失函數直接加上一個L1正則項.它傾向於徹底消除最不重要的特徵的權重.
  • 彈性網絡(ElasticNet)介於Ridge迴歸和Lasso迴歸之間,它的正則項是二者正則項的簡單混合.
  • 早停(early stop)也是一種正則化方法.一旦驗證集偏差中止降低,就提前中止訓練.
  • Logistic迴歸是一種分類算法.它計算輸入特徵的加權和,而後將結果輸入logistic函數後輸出.並根據輸出值與閾值的比較決定分類結果.它的損失函數是對數損失,可使用梯度降低求解.
  • Softmax迴歸用參數向量計算每一個類的得分,而後將得分傳入softmax函數做爲機率傳出.使用的損失函數是交叉熵,用於衡量待測類別與目標類別的匹配程度.算法

五 支持向量機

  • SVM能作線性或非線性的分類,迴歸,適合複雜但中小規模數據集的分類問題.SVM的最大間隔分類是由線性平面邊緣的支持向量決定的.SVM對特徵縮放很敏感.編程

  • SVM的核技巧可使得不添加高次數的多項式特徵或類似特徵就產生一樣的效果.經常使用的核函數是linear,poly和RBF,以及一些針對特定數據結構的核函數.
相關文章
相關標籤/搜索