字體:小 中 大 | |
|
|
2020/03/07 11:42:20瀏覽828|回應0|推薦7 | |
Python機器學習筆記(三):如何進行機器學習 Python因AI人工智慧成為近期很夯的程式語言,我這個電腦門外漢也天真的以為,學了Python一招半式,就能一窺AI的神秘面紗,但等到我接觸Python後,才明白Python與所謂的AI還相差著十萬八千里。 拜語法簡潔之賜,Python成為數據科學界最受歡迎的程式語言之一,不少開源社群為Python開發出大量好用的附加函式庫,就機器學器領域而言,scikit-learn,是目前最流行和最方便的開源機器學習庫之一。 但方便好用的附加函式庫,讓人誤以為用Python語法寫上幾行scikit-learn函式命令句,再設定幾個參數值,然後抓個數據集丟進電腦跑,我們就算在進行機器學習了。然而機器學習的各個演算法,其背後的數學模型各有不同假設及限制,雖然我們不一定要完全搞懂這些有如天書的數學模型,但若不明瞭演算法的基本運算原理,我們能真正明瞭電腦「學習」後所得出的結果嗎? 一個機器學習的完整模型學習過程,可概分為三個流程階段: 一、預處理(preprocessing):整理數據成為理想的形 式 數據是機器學習的核心,沒有數據就無從學習起。但並不是一拿到數據,就可丟進模型裏跑,通常數據都需經預處理這個關鍵步驟,才能得到較佳的效能。 數據需先預處理的原因: 1.數據本身品質問題 (1)資料遺漏是最常見的問題,以何種方式補齊缺漏部份,又不會對整個數據集產生偏誤,是首先要克服的難題,有時需借助統計技巧。 (2)原始資料內容有誤,例如一個台北歷年溫度的數據集裏,有筆200度紀錄!!對這些明顯有誤的資料,當然不是用人的眼力一筆一筆挑出來,需運用統計學的神助將這些偏誤資料找出來,再以合宜方式補正資料內容。 2.配合演算法需求對數據進行調整 (1)將非數值型態轉為數值。道理很簡單,既然演算法背後是數學模型,當然只有數值資料才能處理。例如“性別“欄位內容若未經調整,就直接將原始的“男“、“女“這些文字內容丟進模型裏,程式一定當掉。 (2)有些演算法模型會對資料數值有特別限制,如要將數值轉換在【0,1】的範圍內,或是樣本要具「標準常態分配」或「穩定性」等特性,這些都需數據先經預處理過才行。 3.筆記(二)中提到的「維度降低」,也是數據的一種預處理。 二、訓練並選擇預測模型 1.不同演算法模型間效能比較 每個演算法都有其擅長的問題類型,並不存在一個演算法模型對所有領域問題都能有優異表現。所以同一個數據集,需執行多個不同演算法,再依照預測正確率等評比準則來比較他們的學習效能。 2.演算法模型內的超參數(hyperparameter)調整 演算法背後的數學模型,通常都會有一些假設設定,這些可調整的假設值,即是「超參數」。scikit-learn實作演算法模型時,會先替我們設定好這些超參數的預設值,此舉雖然方便好用,但我們不能天真地以為,scikit-learn的預設值即是最佳設定。可使用「超參數最佳化技術」(hyperparameter optimization techniques)來調校模型效能。當然要先知道模型的假設為何,才知道要如何調整。 三、模型評估和預測未見過的數據實例 這是最後見真章的階段,也是模型學習的最終目的。若結果效能不佳,就要再重新訓練模型了。 |
|
( 知識學習|其他 ) |