歡迎來到vitu中級機器學習微課程!
解決實際資料集中常見的資料型別(缺失值,分類變數),
設計pipelines以提高機器學習**的質量,
使用先進的技術進行模型驗證(交叉驗證),
建立最先進的模型(xgboost),和
避免常見和重要的資料科學錯誤(洩漏leakage)。
在此過程中,您將通過每個新主題的實際資料的動手練習來鞏固您的知識。
缺失值處理
在本教程中,你將學習三種處理缺失值的方法。 然後,你將比較這些方法對現實世界資料集的有效性。
缺失值在實際資料中會以多種方式出現。 例如,
對於兩臥室房屋,第三間臥室的大小可以是缺失值。
調查受訪者可以選擇不分享他的收入,收入項就是缺失值。
如果你嘗試使用缺少值的資料構建模型,則大多數機器學習庫(包括scikit-learn)會出錯。 因此,你需要選擇以下策略之一。
三種策略
1)簡單策略:去掉有缺失值的列
除非列中的大多數數值丟失,這種方法會使得模型丟失重要的資訊,顯然不是太好
2) 好一點的策略: 補缺失值
對於缺失值我們採用這一列的平均值來補,它通常會比完全刪除列更準確
3) 更好的策略: 補缺失值並且加一標記缺失值位置的列
補缺失值是標準方法,通常效果很好。 但是,估算值可能系統地高於或低於其實際值(未在資料集中收集)。 或者,具有缺失值的行可能在某些其他方面是唯一的。 在這種情況下,你的模型會通過考慮最初缺少哪些值來做出更好的**。
案例在這個案例裡,我們將檢視澳大利亞墨爾本的房價資料。
我們再把csv檔案上傳到vitu的資料集空間裡
我們的模型將使用諸如房間數量和土地面積等資訊來**房價。
我們不會關注資料載入步驟。 相反,你可以想象您已經擁有x_train,x_valid,y_train和y_valid中的訓練和驗證資料。
我們定義乙個函式score_dataset()來比較處理缺失值的不同方法。 此函式返回隨機森林模型的平均絕對誤差(mae)。
方法1得分(去掉有缺失值的列)
由於我們正在使用訓練集和驗證集,因此我們謹慎地在兩個dataframe中刪除相同的列。
方法2得分(補缺失值)
接下來,我們使用******imputer以每列的平均值來補缺失值。
儘管很簡單,但填充平均值通常表現得非常好(但這會因資料集而異)。 雖然統計學家已經嘗試了更複雜的方法來確定估算值(例如回歸估算),但是一旦將結果插入複雜的機器學習模型,複雜的策略通常不會帶來額外的好處。
我們看到方法2的mae低於方法1,因此方法2在該資料集上表現更好。
方法3(帶擴充套件的補缺失值)得分
接下來,我們補缺失值,同時跟蹤補的值。
我們可以看到,方法3比方法2略差
那麼為什麼方法2比方法1好呢
訓練資料有10864行和12列,其中三列包含缺失資料。 對於每列,只有不到一半的條目丟失。 因此,刪除列會刪除大量有用的資訊,因此插補可以更好地執行。
結論通常,相對於我們簡單地刪除具有缺失值的列(在方法1中),輸入缺失值(在方法2和方法3中)產生了更好的結果。
機器學習模型 知乎 機器學習 模型選擇與評價
交叉驗證 首先選擇模型最簡單的方法就是,利用每一種機器學習演算法 邏輯回歸 svm 線性回歸等 計算訓練集的損失值,然後選擇其中損失值最小的模型,但是這樣是不合理的,因為當訓練集不夠 特徵過多時容易過擬合,那麼訓練集的損失值就會不斷變小,但是此時針對測試集可能損失值很高,所以訓練集上的損失值是無法衡...
機器學習模型 知乎 最簡單的機器學習模型
今天學習感知機,乙個最簡單的線性分類器 考慮平面上的一系列點,他們有兩種類別,分別用 1,1表示,如圖 能夠確定的是可以找到一條直線,可以將這些點完美分割開來 那麼問題在於,如何找出這條直線呢?手上現在有,每個點 的座標 以及每個點的類別標記 這裡吧平面直角座標系的兩個維度定義為 而不是 假設這條直...
機器學習模型 如何口述機器學習模型原理
重磅乾貨,第一時間送達 有時碰到跟別人聊起模型的熟悉時,不免要闡述下模型的原理,但一般口頭交流都比較難,因為腦海裡面都是一些公式,似乎從功利角度有必要把模型原理用文字表達一遍,所以自己整理了下機器學習的部分,有遺漏或者不對的地方也請多多指教 線性回歸 首先我們會定乙個函式假定y和x的關係,如y wx...