速記AI課程-手把手的機器學習(一)

手把手的機器學習

雖說是經理人班,但其實臥虎藏龍,不少前輩同學技術底子深厚,自己動手寫程式不說,還有博士班時就用C++寫過類神經網路的;當然,也有非技術背景的經理人班,以及介於光譜間的半技術經理人,因此要讓這麼多元背景的同學一起實作Python,助教們不手忙腳亂是不太可能的。

可以感受到助教們課前一定花了不少時間準備程式碼跟資料,因為註解跟執行上都很少錯誤,很不容易。可惜不少同學們課前沒有先進行準備作業,才會卡在一開始的環境設定,頗浪費時間。

首先第一個案例是經典的波士頓房價預測。一開始先做EDA,如用print看看資料的長相、屬性、欄位等等資訊,或用pyplot先看看各種Feature跟房價的關係,先對資料有感。

EDA很重要

再來進行資料前處理,利用train_test_split把資料區分成訓練集(參考書)跟測試集(考題)。裡面有幾個重要的參數,test_size是測試集佔整體資料的比例(一般設為0.2至0.3),shuffle為拆分前是否先將資料打亂,random_state則決定資料隨機的方式(作為隨機數產生的Seed)。

接著則是訓練、測試與使用模型。因為是迴歸問題,所以直接引入LinearRegression、指定訓練與測試集即完成,非常方便。至於模型準不準確,則要透過metric裡面的各種指標來看。歐, R²(模型解釋力)有0.7,還不差呢!

當然,還有很多改進的空間。比如說,因為資料Scale不同,因此把資料取自然對數(log)、平方或是N次方(power),做為新的Feature,解釋力可以更高。不過,Feature越多,越要小心over-fitting的問題,為了避免Overfitting,我們不能僅透過總差異最小來判定模型的好壞,還要考量權重的大小。權重越大的變數,越有可能造成Overfitting,因此Weight Regularization就是在懲罰這些權重大的變數。常用的兩個方式為Ridge(嶺回歸,又稱L2)跟LASSO(L1),細節可參考下面文章。

在Python的scikit-learn套件中,已經有了這兩種正規化方式(lasso與ridge),直接引用並設定參數即可,真的很方便。

第二個案例也很經典,是鳶尾花(Iris)資料集的分類問題。過程如前案例,不過因為是分類問題,所以模型改用羅吉斯迴歸(Logistic Regression),而評斷模型的準確與否則用 準確度(Accuracy)與混淆矩陣(Confusion Matrix)內的各種指標。

常常混淆別人的混淆矩陣…

若把羅吉斯迴歸視覺化如下圖(假設兩個Feature),則可以看出紅點部分是分類為0的資料,藍色是1的資料。

羅吉斯迴歸的模型調教中,C是非常重要的一個參數。C可以視為線性迴歸內的 α,只是C越大對於各Feature的限制反而越小,由下圖可以看得非常清楚。

From Charles

另外,還有multi_class參數。可設為ovr( one-vs-rest)或multinomial,ovr的速度較快,因為它把多元分類先視為二元分類,而multinomial會考慮到整體的分布,雖然較慢但較為準確。

multinomial有比較準

solver要選sag才可以用multinomial

案例三則是虛擬的Imbalanced犯罪資料。其中介紹了Data Normalization( preprocessing.scale),讓各Feature的資料都靠近0,標準差在1之內。最後則是介紹其他分類方式,如SVM(連續型版稱SVR),某些情況下的分類效果更好。

商管 * 科技 | 顧問 + 稽核 | AI X Fraud | baubimedi@gmail.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store