《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,以及一些針對特定數據結構的核函數.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM