網路城邦
上一篇 回創作列表 下一篇   字體:
Python機器學習筆記(三):如何進行機器學習
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)來調校模型效能。當然要先知道模型的假設為何,才知道要如何調整。


三、模型評估和預測未見過的數據實例

這是最後見真章的階段,也是模型學習的最終目的。若結果效能不佳,就要再重新訓練模型了。

( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=gwogo&aid=131953336