寒假機器學習筆記(一)

2021-10-02 09:43:41 字數 2951 閱讀 1405

機器學習是一門能夠讓程式設計計算機從資料中學習的電腦科學。

具體來說就是乙個電腦程式在完成任務t之後,獲得經驗e,其表現效果為p,如果p隨著e的增加而增加,就稱之為機器學習。

機器學習主要是為了解決一些傳統技術手段無法解決的問題。主要應用領域包括以下幾個方面:

1)對於那些現有解決方案需要大量手動調整或者是規則列表超長的問題。

2)對於那些傳統技術手段根本無法解決的複雜問題:通過最好的機器學習技術可以找到乙個解決方案。

3)對於環境波動:機器學習系統可以適應新的資料。

4)從複雜問題和海量資料中獲得洞見。

1)是否在人類的監督下訓練,包括監督式學習,無監督式學習,半監督式學習和強化學習。

監督式學習的一些演算法:k-近鄰演算法,線性回歸,邏輯回歸,支援向量機,決策樹和隨機森林,神經網路

無監督式學習:聚類演算法:k-平均演算法,分層聚類分析,最大期望演算法;視覺化和降維;關聯規則學習

半監督學習:可以處理部分標記的訓練資料,通常是大量未標記的資料和少量的標記資料。

強化學習:它的學習系統能夠觀察環境,做出選擇,執行操作,並獲得回報,或者是以負面回報的形式獲得懲罰,所以必須自行學習什麼是最好的策略,從而隨著時間推移獲得最大的回報。

3)是簡單地將新的資料點和已知的資料點進行匹配,還是對訓練資料進行模式檢測,然後建立乙個**模型,包括基於例項的學習和基於模型的學習。

基於例項的學習:系統先完全記住學習示例,然後通過某種相似度度量方式將其泛化到新的例項。

基於模型的學習:從一組示例集中實現泛化的另一種方法是構建這些示例的模型,然後使用該模型進行**。

這一部分將介紹乙個端到端的專案所經歷的主要步驟。

首先明確所建立的模型的要實現目標,最終要如何使用這個模型,這將決定怎麼設定問題,選擇什麼演算法,使用什麼測量方式來評估模型的效能,以及應該花多少精力來進行調整。

通過乙個指標值來評定所選方法的有效性,是否適合本問題。例如在回歸問題中,典型的效能衡量指標是均方根誤差和平均絕對誤差。

列舉和驗證到目前為止的做出的假設,方便在初期檢查出嚴重的問題。

為機器學習的**和資料集建立乙個工作區目錄。

在一般情況下,資料儲存在關係型資料庫中,並分布在多個表/文件/檔案中。訪問前需要獲得證書和訪問許可權,並熟悉資料庫模式。

通過head(),info(),describe()等方法可以顯示資料屬性的摘要,可以快速了解資料型別,也可以通過繪製每個資料屬性的直方圖,在整個資料集上呼叫hist()方法。

建立測試集步驟是機器學習中比較重要的步驟,為了以後能夠驗證所選演算法的好壞程度比較,在討論到交叉驗證步驟時也很有幫助。

一般測試集是所有資料集的20%,選出這一部分例項後將其放在一邊,輕易不要觸碰。

選取測試集的方法可以通過使用乙個唯一識別符號來決定是否進入測試集。這屬於一種純隨機的抽樣方法。適用於資料集足夠龐大的例子。如果資料集不夠大,那麼最好採用分層抽樣,確保資料的代表性。

本階段的目標是在快速瀏覽資料的基礎上對正在處理的資料有更深入的了解。

選取一些屬性進行視覺化,尋找其中包含的規律和特點。

通過corr() 方法可以計算出每對屬性之間的標準相關係數。尋找與目標屬性最相關的乙個屬性。

嘗試一些屬性的組合或者建立一些新的屬性,比較這些屬性與目標屬性的相關性,或許會得到一些更加有用的屬性值。

在為機器學習演算法準備資料時,最好編寫函式來執行,方便修改和調整,可以嘗試多種組合。

要處理資料集中的缺失值,要麼去掉這些區域,要麼放棄這些屬性,要麼將缺失值設定為某個值。

將文字和分類屬性轉化為數字,可以使用scikit-learn的轉換器labelencoder。一般為了解決轉換成整數後給分類帶來的誤差,會將整數分類值再轉化為獨熱向量,可以使用onehotencoder編碼器。或者使用labelbinarizer一次性完成兩個轉換。

雖然scikit-learn已經提供了許多有用的轉換器,但是仍然需要為一些諸如自定義清理操作或是組合特定屬性等任務編寫自己的轉換器。

如果輸入的數值屬性具有比較大的比例差異,往往會導致機器學習演算法的效能表現不佳。同比例縮放所有的屬性常用的兩種方法是:最小-最大縮放和標準化。

許多資料轉換的步驟需要正確的順序來執行。可以使用scikit-learn 提供的pipline 來支援這樣的轉換。具體實現參考官方文件。

經過前面幾個步驟,我們已經得到了機器學習演算法的資料了。可以選擇機器學習模型並展開訓練。

可以選擇一些演算法來進行訓練,從訓練集中選取一部分用來訓練,另一部分用來模型的驗證。

可以使用train_test_split函式將訓練集分為較小的訓練集和驗證集,然後根據這些較小的訓練集來訓練模型,並對其進行評估。也可以使用scikit-learn的交叉驗證功能。

最好將每乙個嘗試過的模型,超引數和訓練過的引數,以及交叉驗證的評分和實際**的結果儲存下來,方便輕鬆回到想要的模型當中。

現在已經有了乙個有效模型的候選列表,需要對它們進行微調。

可以使用gridsearchcv來進行探索,找到一組很好超引數值組合。所需做的就是告訴它要進行實驗的超引數是什麼,以及需要嘗試的值,它會使用交叉驗證來評估超引數值的所有可能的組合。

當探索的組合數比較少時,可以使用網格搜尋。但是當超引數的搜尋範圍較大時,通常會優先選擇使用randomizedsearchcv。這個類用起來和gridsearchcv差不多,只是它不會嘗試所有可能的組合,而是在每次迭代中為每個超引數選擇乙個隨機值,然後對一定數量的隨機組合進行評估。

這種微調方法是將表現最優的模型組合起來。組合方法通常比最佳的單一模型更好。

通過檢查最佳模型,總是可以得到一些好的洞見。有了這些資訊,可以嘗試刪除一些不大有用的特徵。然後,還應該檢視一下系統產生的具體錯誤,嘗試了解它們是怎麼產生的,以及該怎麼解決。

通過一段時間的訓練,終於有了乙個表現足夠優秀的系統。現在是用測試集評估最終模型的時候了。這個過程只需要從測試集中獲取**器和標籤,執行full_pipeline來轉換資料,然後在測試集上評估最終模型。

將資料來源接入系統,並編寫測試。還需要編寫監控**,以定期檢查系統的實時效能,同時在效能下降時觸發警報。同時要關注系統效能的退化。需要定期使用新資料訓練模型。

機器學習筆記(一) 了解機器學習

1 人工智慧是我們想要達成的目標,機器學習是想要達成目標的手段,深度學習就是機器學習的其中乙個方法。2 機器學習,根據你提供的資料尋找乙個function,如下圖,輸入一段語音知道是 how are you 輸入貓的知道是 貓 怎樣找出這個function呢?第一,要有一系列的function,即模...

機器學習筆記(一)

機器學習筆記 1,2課 一.線性回歸模型 1.數學模型 對於乙個具體的問題,x1,x2 是我們所選取的特徵,h x 是我們所建立的模型,其中有n 1個引數。我們希望所建立的數學模型可以很好的刻畫實際問題,而我們所擁有的就是訓練資料集。很自然的,我們希望數學模型可以較好的表述訓練資料集的情況。雖然對訓...

機器學習筆記(一)

統計學習三要素 模型 策略和演算法。模型分類有幾種,監督非監督,引數非引數等。監督學習又分為生成方法和判別方法。生成模型有 樸素貝葉斯和隱馬爾科夫。判別模型有 k近鄰,感知機,決策樹,邏輯回歸,em,svm,boost,crf.引數模型 引數個數固定,與訓練資料無關。非引數模型 引數個數依賴於訓練資...