機器學習百日馬拉松
對初學者來說,要進入 AI 與資料科學的領域並不容易,除了程式基礎,還需要有數學與統計的相關知識,一般人往往在這兩個關卡中敗下陣來,透過親身實作,自主學習才能真正掌握 AI 與資料科學的學習精髓。
內容簡介
作者介紹
適合人群
你將會學到什麼
購買須知
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組合的差異 2. 特徵選擇主要包含的三大類方法 3. 特徵選擇中,計算時間較長但是能排除共線性且比較穩定的方式 相對於特徵組合在增加特徵,特徵選擇/篩選是在減少特徵 特徵選擇主要包含 : 過濾法 (Filter)、包裝法 (Wrapper)、嵌入法 (Embedded) 特徵選擇中,計算時間較長,但是能排除共線性且比較穩定的方式是梯度提升樹嵌入法 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵評估
今天的內容會帶大家了解 1. 樹狀模型的特徵重要性,可以分為哪三種 2. sklearn 樹狀模型的特徵重要性與 Xgboost 的有何不同 3. 特徵工程中,特徵重要性本身的重要性是什麼 樹狀模型的特徵重要性,可以分為分支次數、特徵覆蓋度、損失函數降低量三種 sklearn 樹狀模型與 Xgboost 的特徵重要性 最大差異就是在 sklearn 只有精準度最低的「分支次數」 特徵重要性本身的重要性,是在於本身是增刪特徵的重要判定準則 在領域知識不足時,成為改善模型的最大幫手 有了大概的理解之後,我們開始今天的學習吧!!!
-
分類型特徵優化 - 葉編碼
今天的內容會帶大家了解 1. 多個分類預測結果,該如何合併成更準確的預測 2. 葉編碼的目的是什麼?如何達成該項目的? 3. 葉編碼編完後,通常該搭配什麼使用? 多個分類預測結果,需要先將機率倒推回對應數值, 相加後再由sigmoid 函數算回機率,類似邏輯斯回歸的算法 葉編碼的目的是重新標記資料,以擬合後的樹狀模型分歧條件,將資料離散化, 這樣比人為寫作的判斷條件更精準,更符合資料的分布情形 葉編碼編完後,因為特徵數量較多, 通常搭配邏輯斯回歸或者分解機做預測,其他模型較不適合 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
4. 機器學習基礎模型建立
學習透過Scikit-learn等套件,建立機器學習模型並進行訓練!
-
機器如何學習?
今天的內容會帶大家了解 1. 了解機器學習的原理 2. 機器學習的模型是如何訓練出來的 3. 過擬合 (Overfitting) 是甚麼,該如何解決 機器學習原理:一個機器學習模型中會有許多參數 (parameters),例如線性回歸中的 weights 跟 bias 就是線性回歸模型的參數 而當我們輸入一個 x 進到模型中,不同參數的模型就會產生不同的 ŷ 過擬合 (Over-fitting) : 模型的訓練目標是將損失函數的損失降至最低 也代表模型可能學習到資料中的噪音,導致在實際應用時預測失準 解決過擬合:增加資料量、降低模型複雜度、使用正規化 (Regularization)、欠擬合 增加模型複雜度、減輕或不使用正規化 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練/測試集切分的概念
今天的內容會帶大家了解 1. 機器學習中資料的切分 2. 為何要進行訓練/測試集切分 3. 不同的切分方法以及意義 為什麼需要切分:機器學習模型需要資料才能訓練 若將手上所有資料都送進模型訓練,這樣就沒有額外資料來評估模型訓練情形! 機器學習模型可能會有過擬合 (Over-fitting) 的情形發生 需透過驗證/測試集評估模型是否過擬合 使用 Python Scikit-learn 進行資料切分 在使用 K-fold Cross-validation 讓結果更加穩定~ 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression vs. classification
今天的內容會帶大家了解 1. 了解機器學習中迴歸與分類的差異 2. 迴歸問題與分類問題的定義 3. 什麼是多分類問題?多標籤問題? 回歸 vs. 分類:回歸代表預測的目標值為實數 (-∞ 至 ∞) 分類代表預測的目標值為類別 (0 或 1) 多分類 (Multi-class):當每個樣本都只能歸在一個類別 多標籤 (Multi-label):一個樣本如果可以同時有多個類別 有了大概的理解之後,我們開始今天的學習吧!!!
-
評估指標選定/evaluation metrics
今天的內容會帶大家了解 1. 機器學習中評估指標的意義及如何選取 2. 迴歸、分類問題應選用的評估指標 3. 不同評估指標的意義及何時該使用 評估指標:設定各項指標來評估模型預測的準確性 最常見的為準確率 (Accuracy) = 正確分類樣本數/總樣本數 不同評估指標有不同的評估準則與面向,衡量的重點有所不同 評估指標(回歸):MAE、MSE、R-square 評估指標(分類):AUC、F1-score 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - 線性迴歸/羅吉斯回歸
今天的內容會帶大家了解 1. 線性回歸與羅吉斯回歸的基本定義 2. 線性回歸與羅吉斯回歸的差異 3. 回歸模型使用上的限制 線性回歸模型(Linear Regression): 簡單常見的線性模型,可使用於回歸問題 訓練速度非常快,但須注意資料共線性、資料標準化等限制 通常可作為 baseline 模型作為參考點 羅吉斯回歸( Logistics Regression): 雖然有回歸兩個字,但 Logsitics 是分類模型 將線性回歸的結果,加上 Sigmoid 函數,將預測機率值限制在 0 ~ 1 之間 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Scikit-learn 中的 linear regression 2. Scikit-learn 中的 Logistic Regression 3. Scikit-learn 中的 Logistic Regression 參數 使用 Sklearn 套件中的線性、Logistic 回歸: 1. 第一行引入所需的套件 2. 第二行建立線性回歸、模型,並將 X, y 資料送進模型中訓練 3. Reg 就是訓練好的模型,可以用 .predict 來預測新資料 Scikit-learn 中的 Logistic Regression 參數: Penalty、C、Solver、Multi-class 有了大概的理解之後,我們開始今天的學習吧!!!
-
regression model 介紹 - LASSO 回歸/ Ridge 回歸
LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項
-
regression model 程式碼撰寫
今天的內容會帶大家了解 1. Lasso, Ridge 回歸的程式碼應用 2. 完成今日課程後你應該可以了解? 3. 使用 Scikit-learn 撰寫 Lasso, Ridge 回歸的程式碼 Sklearn 使用 Lasso Regression: 如同前幾天課程使用 Regression 模型一樣,只要 import 相關模型,加入訓練資料即可 其中可以調整 alpha 值決定正則化的強度 Sklearn 使用 Ridge Regression: 同 Lasso Regression 的使用方法,同樣可以調整 alpha 值決定正則化的強度 印出模型參數也可以看到數值都明顯小於單純的線性回歸 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹 (Decision Tree) 模型介紹
今天的內容會帶大家了解 1. 決策樹的原理、定義與其使用限制 2. 使用 Gini-index、Entropy 來衡量資料相似程度 3. 決策樹是如何對一筆資料做決策 決策樹 (Decision Tree):透過一系列的是非問題,幫助我們將資料進行切分 可視覺化每個決策的過程,是個具有非常高解釋性的模型 訊息增益 (Information Gain):決策樹模型會用 features 切分資料, 該選用哪個 feature 來切分則是由訊息增益的大小決定的。 希望切分後的資料相似程度很高,通常使用吉尼係數來衡量相似程度 我們可以從構建樹的過程中,透過 feature 被用來切分的次數,來得知哪些 features 是相對有用的 所有 feature importance 的總和為 1,實務上可以使用 feature importance 來了解模型如何進行分類 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 決策樹程式碼撰寫
今天的內容會帶大家了解 1. 決策樹的程式碼應用 2. 使用 Scikit-learn 撰寫決策樹的程式碼 3. 使用內建的特徵重要性進行特徵選取 使用 Sklearn 建立決策樹模型:根據回歸/分類問題分別建立不同的 Classifier 決策樹的超參數:Criterion、Max_depth、Min_samples_split、Min_samples_leaf 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林 (Random Forest) 介紹
今天的內容會帶大家了解 1. 隨機森林的基本原理與架構 2. 決策樹與隨機森林的差異 3. 隨機森林如何彌補了決策樹的缺點 決策樹的缺點:若不對決策樹進行限制 (樹深度、葉子上至少要有多少樣本等),決策樹非常容易 Over-fitting 為了解決決策樹的缺點,後續發展出了隨機森林的概念,以決策樹為基底延伸出的模型 隨機森林 (Random Forest):將多個模型的結果組合在一起,透過投票或是加權的方式得到最終結果 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 隨機森林程式碼撰寫
今天的內容會帶大家了解 1. 隨機森林的程式碼應用 2. 用 Scikit-learn 撰寫隨機森林的程式碼 3. 使用內建的特徵重要性進行特徵選取使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼 使用 Sklearn 中的隨機森林:如同決策樹的使用方式,根據不同問題 import 不同的模型 可以看到是從 sklearn.ensemble 這裏 import 的,代表隨機森林是個集成模型 透過多棵複雜的決策樹來投票得到結果,緩解原本決策樹容易過擬和的問題 實務上的結果通常都會比決策樹來得好 隨機森林的模型超參數:同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹
今天的內容會帶大家了解 1. 梯度提升機的基本原理與架構 2. 梯度提升機與決策樹/隨機森林的差異 3. 梯度提升機的梯度從何而來,又是怎麼計算的 梯度提升機 (Gradient Boosting Machine):隨機森林使用的集成方法稱為 Bagging,用抽樣的資料與 features 生成每一棵樹,最後再取平均 則是另一種集成方法,希望能夠由後面生成的樹,來修正前面樹學不好的地方 怎麼修正前面學錯的地方呢?計算 Gradient! 每次生成樹都是要修正前面樹預測的錯誤,並乘上 learning rate 讓後面的樹能有更多學習的空間 Bagging 與 Boosting 的差別:Bagging 是透過抽樣 (sampling) 的方式來生成每一棵樹,樹與樹之間是獨立生成的 Boosting 是透過序列 (additive) 的方式來生成每一顆樹,每棵樹都會與前面的樹關聯,因為後面的樹要能夠修正 有了大概的理解之後,我們開始今天的學習吧!!!
-
tree based model - 梯度提升機程式碼撰寫
今天的內容會帶大家了解 1. 提升機的程式碼應用 2. 使用 Sklearn 來建立梯度提升機的模型 3. 模型中各項參數的意義 使用 Sklearn 中的梯度提升機:看到如同隨機森林,我們一樣從 sklearn.ensemble 這裏 import 進來 代表梯度提升機同樣是個集成模型,透過多棵決策樹依序生成來得到結果 緩解原本決策樹容易過擬和的問題,實務上的結果通常也會比決策樹來得好 同樣是樹的模型,所以像是 max_depth, min_samples_split 都與決策樹相同 可決定要生成數的數量,越多越不容易過擬和,但是運算時間會變長 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
5. 機器學習調整參數
了解模型內的參數意義,學習如何根據模型訓練情形來調整參數
-
超參數調整與優化
今天的內容會帶大家了解 1. 何謂超參數,該如何調整 2. 正確調整超參數的步驟 3. 常用的調整超參數方法 機器學習模型中的超參數:之前接觸到的所有模型都有超參數需要設置 LASSO,Ridge: α 的大小 決策樹:樹的深度、節點最小樣本數 隨機森林:樹的數量 這些超參數都會影響模型訓練的結果,建議先使用預設值,再慢慢進行調整 超參數會影響結果,但提升的效果有限,資料清理與特徵工程才能最有效的提升準確率 調整參數只是一個加分的工具~~ 超參數調整方法:窮舉法、窮舉法 有了大概的理解之後,我們開始今天的學習吧!!!
-
Kaggle 競賽平台介紹
今天的內容會帶大家了解 Kaggle 1. 全球資料科學競賽的網站,許多資料科學的競賽均會在此舉辦,吸引全球優秀的資料科學家參加 2. Kaggle 上的競賽者都非常厲害,對機器學習技術沒有一定的掌握是沒辦法拿到好名次的 3. 名列前茅的參賽者都會分享自己的作法與程式碼供參考,非常具有參考價值 排行榜:主辦單位通常會把測試資料分為 public set與 private set 參賽者上傳預測結果可以看到 public set 的成績,但比賽最終會使用 private set 的成績作為排名 Kernels 與 Discussion:Kernels 可以看見許多高手們分享的程式碼與結果,多半會以 jupyter notebook 呈現 Discussion 可以看到高手們互相討論可能的做法,或是資料中是否存在某些問題 機器學習的專案,常常需要參考別人的論文或 Github 然後重現結果,其中可能會因為環境、套件或是理解不對而產生不對的結果 學習如何復現別人的成果是機器學習中非常重要的技能 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 混合泛化(Blending)
今天的內容會帶大家了解 1. 資料工程中的集成之常見內容 2. 混合泛化為什麼能提升預測力,使用上要注意的問題 資料工程中的集成:包含了資料面的集成 - 裝袋法(Bagging) / 提升法(Boosting) 模型與特徵的集成 :混合泛化(Blending) / 堆疊泛化(Stacking) 混合泛化提升預測力的原因是基於模型差異度大,在預測細節上能互補 因此預測模型只要各自調參優化過且原理不同,通常都能使用混合泛化集成 有了大概的理解之後,我們開始今天的學習吧!!!
-
集成方法 : 堆疊泛化(Stacking)
今天的內容會帶大家了解 1. 為什麼堆疊泛化看起來這麼複雜? 2. 堆疊泛化有堆疊層數上的限制嗎? 3. 混合泛化相對堆疊泛化來說,有什麼優缺點? 堆疊泛化因為將模型預測當作特徵時,要避免要編碼的資料與訓練編碼器的資料重疊,因此設計上看起來相當複雜 堆疊泛化理論上在堆疊層數上沒有限制,但如果第一層的單模不夠複雜,堆疊二三層後,改善幅度就有限了 混合泛化相對堆疊泛化來說,優點在於使用容易,缺點在於無法更深入的利用資料更進一步混合模型 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 第一次期中考
-
6. 非監督式機器學習
利用分群與降維方法探索資料模式
-
非監督式機器學習簡介
今天的內容會帶大家了解 1. 瞭解非監督式學習相關技術概要 2. 瞭解非監督式學習的應用場景 非監督式學習:機器學習的一種方法,它允許我們在對結果無法預知時接近問題 非監督式學習演算法只基於輸入資料找出模式,當我們無法確定尋找內容,或無標記 (y) 資料時 通常會用這個演算法,幫助我們了解資料模式、資料特性,或作為提升監督式學習效能的預處理步驟 適合非監督式學習的情境:在不清楚資料特性、問題定義、沒有標記的情況下 可透過非監督式學習技術幫助我們更了解資料模式、資料特性 或作為提升監督式學習效能的預處理步驟。 非監督式學習的挑戰:由於不像監督式學習算法有目標值,我們不易判斷模型是否真的學到隱藏資料中的模式 需要透過像是「輪廓分析」等方法評估分群的品質。 非監督式學習的應用分類:1. 分群 2. 關聯規則 3. 異常檢測 4. 降維 有了大概的理解之後,我們開始今天的學習吧!!!
-
非監督式學習—分群算法 / K-Means 分群
今天的內容會帶大家了解 1. 聚類算法與監督式學習的差異 2. K-means 聚類算法簡介 3. K-means 聚類算法的參數設計 當問題不清楚或是資料未有標註的情況下,可以嘗試用分群算法幫助瞭解資料結構 而其中一個方法是運用 K-means 分群算法幫助理解資料特性 K-means 分群算法需要事先定義群數,而群數多少才是最佳解 可透過衡量不同群數時的輪廓係數,或以各群樣本特徵指標來觀察是否產生具代表意義的群 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — K-means 分群評估 : 使用輪廓分析
今天的內容會帶大家了解 1. 大致了解輪廓分析的設計想法與用途 2. 如何使用輪廓分析觀察 K-mean 效果 輪廓分數是一種 同群資料點越近 / 不同群資料點越遠 時會越大的分數 除了可以評估資料點分群是否得當,也可以用來評估分群效果 要以輪廓分析觀察 K - means,除了可以將每個資料點分組觀察以評估資料點分群是否得當 也可用平均值觀察評估不同 K 值的分群效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層式分群 Hierarchical Clustering
今天的內容會帶大家了解 1. 瞭解階層分群算法流程,及群數的定義 2. 瞭解階層分群與 k-means 差異,及其優劣比較 3. 階層分群的距離計算方式 階層式分群可在無需定義群數的情況下做資料的分群,而後可以用不同的距離定義方式決定資料群組 分群距離計算方式有 single-link, complete-link, average-link, ward's method 等多種方式 概念簡單且容易呈現,但因效能限制,不適合用在大量資料上 有了大概的理解之後,我們開始今天的學習吧!!!
-
分群算法 — 階層分群法 觀察 : 使用 2D 樣版資料集
今天的內容會帶大家了解 1. 2D樣版資料集的設計原則與用途 2. 大致知道有哪些套件有2D樣板資料集 了解2D樣版資料集的設計著重於圖形的人機差異,用途在於讓人眼以非量化的方式評估非監督模型的好壞 也因為非監督問題的類型不同,這類資料集也有分群與流形還原等不同對應類形 2D樣板資料集很多套件都有,也不限於只有 Python 上使用的套件 : 如 sklearn / mathworks / mlbench 都有對應的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 1 降維方法-主成份分析
今天的內容會帶大家了解 1. 降低維度的好處,及其應用領域 2. 主成分分析 (PCA) 概念簡介 降低維度可以幫助我們壓縮及丟棄無用資訊、抽象化及組合新特徵、呈現高維數據 常用的算法爲主成分分析,在維度太大發生 overfitting 的情況下 可以嘗試用 PCA 組成的特徵來做監督式學習,但不建議一開始就做 有了大概的理解之後,我們開始今天的學習吧!!!
-
PCA 觀察 : 使用手寫辨識資料集
今天的內容會帶大家了解 1. 手寫資料集的來源與用途 2. 知道為什麼使用手寫資料集來觀察主成分分析的降維效果 3. 降低維度的好處,及其應用領域 4. 主成分分析 (PCA) 概念簡介 手寫資料集是改寫自手寫辨識集NIST的,為了使其適合機器學習,除了將背景統一改為黑底白字的灰階圖案 也將大小統一變更為 28*28 為了兼顧內容的複雜性與可理解性,我們使用圖形當中最單純的 sklearn 版 MNIST 作為觀察 PCA 效果的範例 有了大概的理解之後,我們開始今天的學習吧!!!
-
dimension reduction 2 降維方法-T-SNE
今天的內容會帶大家了解 1. 瞭解 PCA 的限制 2. t-SNE 概念簡介,及其優劣 特徵間爲非線性關係時 (e.g. 文字、影像資料) PCA很容易 underfitting t-SNE 對於特徵非線性資料有更好的降維呈現能力 有了大概的理解之後,我們開始今天的學習吧!!!
-
t-sne 觀察 : 分群與流形還原
今天的內容會帶大家了解 1. 非監督問題類類型中,流形還原意義是什麼? 2. 除了 t-sne 外,還有哪些可以用在流形還原上的方法 流形還原就是在高維度到低維度的對應中,盡量保持資料點之間的遠近關係 沒有資料點的地方,就不列入考量範圍 除了 t-sne 外,較常見的流形還原還有 Isomap 與 LLE (Locally Linear Embedding) 等工具 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
7. 深度學習理論與實作
神經網路的運用
-
深度學習簡介
今天的內容會帶大家了解 1. 類神經網路與深度學習的比較以及差異性 2. 深度學習能解決哪些問題 3. 深度類神經網路常見名詞與架構 深度學習不僅僅在深度高於類神經,因著算法改良、硬體能力提升以及巨量資料等因素,已經成為目前最熱門的技術 不同的深度學習架構適用於不同種類的應用 如卷積神經網路(CNN)適用於影像處理、遞歸神經網路(RNN)適用於自然語言處理 至今這些架構仍在持續演進與改良。 深度神經網路巨觀結構來看,包含輸入層 / 隱藏層 / 輸出層等層次,局部則是由啟動函數轉換輸出 藉由預測與實際值差距的損失函數,用倒傳遞方式更新權重,以達成各種應用的學習目標 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 模型調整與學習曲線
今天的內容會帶大家了解 1. 經由平台的操作,了解深度學習效果的觀察指標 2. 體驗類神經模型形狀:加深與加寬的差異 3. 理解輸入特徵對類神經網路的影響 雖然圖像化更直覺,但是並非量化指標且可視化不容易,故深度學習的觀察指標仍以損失函數/誤差為主 對於不同資料類型,適合加深與加寬的問題都有,但加深適合的問題類型較多 輸入特徵的選擇影響結果甚鉅,因此深度學習也需要考慮特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度學習體驗 : 啟動函數與正規化
今天的內容會帶大家了解 1. 批次大小 (Batch size) 、學習速率 (Learnig Rate) 對學習結果的影響 2. 經由實驗,體驗不同啟動函數的差異性 3. 體驗正規化 (Regularization) 對學習結果的影響 批次大小越小 : 學習曲線越不穩定、但收斂越快 學習速率越大 : 學習曲線越不穩定、但收斂越快 但是與批次大小不同的是 - 學習速率大於一定以上時,有可能不穩定到無法收斂 當類神經網路層數不多時,啟動函數 Sigmoid / Tanh 的效果比 Relu 更好 L1 / L2 正規化在非深度學習上效果較明顯,而正規化參數較小才有效果 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
8. 初探深度學習使用Keras
學習機器學習(ML)與深度學習( DL) 的好幫手
-
Keras 安裝與介紹
今天的內容會帶大家了解 1. 初步了解深度學習套件 : Keras 2. 知道如何在自己的作業系統上安裝 Keras Keras 是將 TensorFlow 等後端程式封裝並優化,易學易用的深度學習基礎套件 安裝 Keras 大致上分為四個步驟 : 依序安裝 CUDA / cuDNN / TensorFlow / Keras 只要注意四個程式間的版本問題以及虛擬環境問題,基本上應該能順利安裝完成 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Dataset
今天的內容會帶大家了解 1. Keras 內建的 dataset 2. 使用 CIFAR10 做類別預測 適用於文本分析與情緒分類:IMDB 電影評論情緒分類 路透社新聞專題主題分類 適用於影像分類與識別學習:CIFAR10/CIFAR100 MNIST/ Fashion-MNIST 適用於 Data/Numerical 學習:Boston housing price regression dataset 針對小數據集的深度學習:數據預處理與數據提升 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Sequential API
今天的內容會帶大家了解 1. Keras Sequential API 2. Keras Sequential API 與其應用的場景 Sequential 序貫模型序貫模型為最簡單的線性、從頭到尾的結構順序,一路到底 Sequential 模型的基本元件一般需要:Model 宣告 model.add 添加層 model.compile 模型訓練 model.fit 模型訓練參數設置 + 訓練 模型評估、模型預測 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras Module API
今天的內容會帶大家了解 1. Keras Module API 2. Keras Module API 與其應用的場景 函數式API 的另一個用途是使用共享網絡層的模型 我們來看看共享層 來考慮推特推文數據集。我們想要建立一個模型來分辨兩條推文是否來自同一個人 實現這個目標的一種方法是建立一個模型,將兩條推文編碼成兩個向量,連接向量然後添加邏輯回歸層 這將輸出兩條推文來自同一作者的概率。模型將接收一對對正負表示的推特數據 由於這個問題是對稱的,編碼第一條推文的機制應該被完全重用來編碼第二條推文(權重及其他全部) 有了大概的理解之後,我們開始今天的學習吧!!!
-
深度神經網路的基礎知識
今天的內容會帶大家了解 1. 深度學習網路歷史發展 2. 為什麼需要深度學習網路 3. 深度學習網路架構 4. 深度學習網路優缺點 為什麼需要深度學習網路:在相同數目的神經元時,深度神經網路的表現總是比較好 深度學習網路概念:從資料中尋找一組最適合解決某種特定問題的函數 優點:發展為多種架構應用於各領域中,如CNN、RNN、GAN 進行較深層的運算取出更多有用的資訊提升準確度 缺點:隱藏層增加更容易使得神經網路陷入區域最佳解,無法收斂 通過越多隱藏層產生的梯度變化就會越來越小,直到看不太出來變化,導致產生梯度消失問題 較深層的神經網路可能使模型陷入過擬合情形,需適當的使用正規化或是dropout做處理 有了大概的理解之後,我們開始今天的學習吧!!!
-
損失函數
今天的內容會帶大家了解 1. 損失函數 2. 針對不同的問題使用合適的損失函數 機器學習中所有的算法都需要最大化或最小化一個函數,這個函數被稱為「目標函數」 其中,我們一般把最小化的一類函數,稱為「損失函數」,它能根據預測結果,衡量出模型預測能力的好壞 損失函數中的損失就是「實際值和預測值的落差」,損失函數是最小化 損失函數大致可分為:分類問題的損失函數、回歸問題的損失函數 有了大概的理解之後,我們開始今天的學習吧!!!
-
啟動函數
今天的內容會帶大家了解 1. 啟動函數 2. 針對不同的問題使用合適的啟動函數 啟動函數:定義了每個節點(神經元)的輸出和輸入關係的函數 為神經元提供規模化非線性化能力,讓神經網路具備強大的擬合能力 根據各個函數的優缺點來配置:如果使用 ReLU,要小心設置 learning rate,注意不要讓網路出現很多「dead」 神經元 如果不好解決,可以試試 Leaky ReLU、PReLU 或者Maxout 根據問題的性質:用於分類器時,Sigmoid 函數及其組合通常效果更好 有了大概的理解之後,我們開始今天的學習吧!!!
-
梯度下降Gradient Descent
今天的內容會帶大家了解 1. 梯度下降的定義與程式樣貌 2. 初步理解梯度下降的概念 3. 能從程式中微調相關的參數 Gradient descent 是一個一階最佳化算法,通常也稱為最速下降法 要使用梯度下降法找到一個函數的局部極小值 必須向函數上當前點對應梯度(或者是近似梯度)的反方向規定步長距離點進行疊代搜索 梯度下降法的缺點包括: 靠近極小值時速度減慢,直線搜索可能會產生一些問題 可能會「之字型」地下降 Avoid Local Minima: 在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 有了大概的理解之後,我們開始今天的學習吧!!!
-
Gradient Descent 數學原理
今天的內容會帶大家了解 Gradient Descent 的數學定義與程式樣貌 Item-1:在訓練神經網絡的時候,通常在訓練剛開始的時候使用較大的 learning rate 隨著訓練的進行,我們會慢慢的減小 learning rate 學習率較小時,收斂到極值的速度較慢 學習率較大時,容易在搜索過程中發生震盪 Item-2:隨著 iteration 改變 Learning 衰減越大,學習率衰減地越快。 衰減確實能夠對震盪起到減緩的作用 Item-3:如果上一次的 momentum 與這一次的負梯度方向是相同的 那這次下降的幅度就會加大,所以這樣做能夠達到加速收斂的過程 如果上一次的 momentum 與這一次的負梯度方向是相反的 那這次下降的幅度就會縮減,所以這樣做能夠達到減速收斂的過程 有了大概的理解之後,我們開始今天的學習吧!!!
-
BackPropagation
今天的內容會帶大家了解 1. 前行網路傳播(ForwardPropagation) vs. 反向式傳播(BackPropagation ) 2. 反向式傳播BackPropagation的運作 BP 神經網路是一種按照逆向傳播算法訓練的多層前饋神經網路 優點:具有任意複雜的模式分類能力和優良的多維函數映射能力 解決了簡單感知器不能解決的異或或者一些其他的問題 從結構上講,BP 神經網路具有輸入層、隱含層和輸出層 從本質上講,BP 算法就是以網路誤差平方目標函數、採用梯度下降法來計算目標函數的最小值 缺點:學習速度慢,即使是一個簡單的過程,也需要幾百次甚至上千次的學習才能收斂 容易陷入局部極小值 網路層數、神經元個數的選擇沒有相應的理論指導,網路推廣能力有限 應用:函數逼近、模式識別、分類、數據壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
優化器 optimizers
今天的內容會帶大家了解 1. 優化器的使用與程式樣貌 2. 優化器的用途 3.從程式中辨識 優化器 (optimizers) 的參數特徵 常用的優化器:1. SGD 這種方法是將數據分成一小批一小批的進行訓練,但是速度比較慢 2. AdaGrad 採用改變學習率的方式 3. RMSProp 這種方法是將 Momentum 與 AdaGrad 部分相結合 4. Adam 結合 AdaGrad 和 RMSProp 兩種優化算法的優點 對梯度的一階矩估計、二階矩估計進行綜合考慮計算出更新步長 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Validation and overfit
今天的內容會帶大家了解 1. 訓練過程中加入 Validation set 2. 檢視並了解 overfitting 現象 Overfitting:訓練一個模型時,使用過多參數,導致在訓練集上表現極佳 但面對驗證&測試集時,會有更高的錯誤率。 在 Keras 的 model.fit 中,加入 validation split 以檢視模型是否出現過擬合現象。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路前的注意事項
今天的內容會帶大家了解 開始訓練模型前,檢查各個重要環節 1. 裝置,如 GPU 2. 資料 3. 輸入是否正規化 4. 輸出是否正規化或獨熱編碼 5. 模型架構 6. 超參數 7. 學習使用 google colab 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Learning rate effect
今天的內容會帶大家了解 1. Learning Rate 對訓練的影響 2. 各優化器內,不同的參數對訓練的影響 學習率對訓練造成的影響: 1. 學習率過大:每次模型參數改變過大,無法有效收斂到更低的損失平面 2. 學習率過小:每次參數的改變量小,導致損失改變的幅度小、平原區域無法找到正確的方向 在 SGD 中的動量方法: 在損失方向上,加上一定比率的動量協助擺脫平原或是小山谷 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 優化器與學習率的組合與比較
今天的內容會帶大家了解 優化器 vs.學習率 請結合前面的知識與程式碼 比較不同的 optimizer 與 learning rate 組合對訓練的結果與影響 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Regularization
今天的內容會帶大家了解 1. regularization 的原理 2. 如何在 keras 中加入 regularization 背景:模型訓練過程中,若樣本數少、模型過於複雜或訓練次數過多 容易有 overfitting 或是模型測試效果不佳,表示模型本身對訓練集資料以外的資料沒有預測能力 而導致無法「泛化」,為了讓模型效能不會過於受到訓練資料影響 勢必要刻意將模型的出錯率增加,因而有 regularization 的概念。 目的:刻意增加 Loss 值讓模型的泛化程度增加 Regularizer 的效果:讓模型參數的數值較小 使得 Inputs 的改變不會讓 Outputs 有大幅的改變 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Dropout
今天的內容會帶大家了解 1. dropout 的背景與可能可行的原理 2. 如何在 keras 中加入 dropout Dropout:在訓練時隨機將某些參數暫時設為 0 (刻意讓訓練難度提升) 強迫模型的每個參數有更強的泛化能力 也讓網路能在更多參數組合的狀態下習得表徵 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - Batch normalization
今天的內容會帶大家了解 1. BatchNormalization 的原理 2. 如何在 keras 中加入 BatchNorm Batch normalization:除了在 Inputs 做正規化以外 批次正規層讓我們能夠將每一層的輸入/輸出做正規化 各層的正規化使得 Gradient 消失 (gradient vanish) 或爆炸 (explode) 的狀況得以減輕 但最近有 paper 對於這項論點有些不同意 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 正規化/機移除/批次標準化的 組合與比較
今天的內容會帶大家練習 正規化、機移除、批次標準化的 組合與比較 練習目標: 請同學將前三日的 Regularization 方式加以組合,並觀察對訓練造成的影響 Regularizers : 隱藏層內的 L1 / L2 正規化 Dropout : 隨機省略神經元輸出的正規化 Batch-normalization : 傳遞時神經元橫向平衡的正規化 注意事項 : 與 Day 80 類似,建議同學自由發揮,解答只是其中一種寫法,僅供參考 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop
今天的內容會帶大家了解 1. 如何在 Keras 中加入 callbacks 2. 知道 earlystop 的機制 Callbacks function:在訓練過程中,我們可以透過一些函式來監控/介入訓練 Earlystopping:如果一個模型會 overfitting,那 training 與 validation 的表現只會越差越遠 不如在開始變糟之前就先停下 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model
今天的內容會帶大家了解 1. 了解如何在訓練過程中,保留最佳的模型權重 2. 知道如何在 Keras 中,加入 ModelCheckPoint Model checkpoint:根據狀況隨時將模型存下來 如此可以保證: 1. 假如不幸訓練意外中斷,前面的功夫不會白費,我們可以從最近的一次繼續重新開始。 2. 我們可以透過監控 validation loss 來保證所存下來的模型是在 validation set 表現最好的一個。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate
今天的內容會帶大家了解 1. 什麼是 Reduce Learning Rate 2. 如何在 Keras 中,加入 ReduceLearningRate Reduce Learning Rate: 隨訓練更新次數,將 Learning rate 逐步減小 因為通常損失函數越接近谷底的位置,開口越小 需要較小的 Learning rate 才可以再次下降 Reduce learning rate on plateau:模型沒辦法進步的可能是因為學習率太大 導致每次改變量太大而無法落入較低的損失平面 透過適度的降低,就有機會得到更好的結果 因為我們可以透過這樣的監控機制,初始的 Learning rate 可以調得比較高 讓訓練過程與 callback 來做適當的 learning rate 調降。 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數
今天的內容會帶大家了解 1. 如何使用自定義的 callbacks 2. callbacks 的啟動時機 Callback 在訓練時的呼叫時機 on_train_begin:在訓練最開始時 on_train_end:在訓練結束時 on_batch_begin:在每個 batch 開始時 on_batch_end:在每個 batch 結束時 on_epoch_begin:在每個 epoch 開始時 on_epoch_end:在每個 epoch 結束時 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練神經網路的細節與技巧 - 撰寫自己的 Loss function
今天的內容會帶大家了解 學會如何使用自定義的損失函數 在 Keras 中,我們可以自行定義函式來進行損失的運算 一個損失函數必須:有 y_true 與 y_pred 兩個輸入 必須可以微分 必須使用 tensor operation 也就是在 tensor 的狀態下進行運算 ex: K.sum 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 用傳統電腦來做影像辨識的過程 2. 用顏色直方圖提取圖片的顏色特徵 傳統影像視覺描述特徵的方法是一個非常「手工」的過程 可以想像本日知識點提到的顏色直方圖在要辨認顏色的場景就會非常有用 但可能就不適合用來做邊緣檢測的任務,因為從顏色的分佈沒有考量到空間上的信息 不同的任務,我們就要想辦法針對性地設計特徵來進行後續影像辨識的任務 有了大概的理解之後,我們開始今天的學習吧!!!
-
[練習 Day] 使用傳統電腦視覺與機器學習進行影像辨識
今天的內容會帶大家了解 1. 體驗使用不同特徵來做機器學習分類問題的差別 2. hog 的調用方式 3. svm 在 opencv 的調用方式 靠人工設計的特徵在簡單的任務上也許是堪用 但複雜的情況,比如說分類的類別多起來,就能明顯感覺到這些特徵的不足之處 體會這一點能更幫助理解接下來的卷積神經網路的意義 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
9. 深度學習應用卷積神經網路
卷積神經網路(CNN)常用於影像辨識的各種應用,譬如醫療影像與晶片瑕疵檢測
-
卷積神經網路 (Convolution Neural Network, CNN) 簡介
今天的內容會帶大家了解 1. 什麼是卷積神經網路 (Convolution Neural Network) 2. 卷積 (Convolution) 的定義與原理 卷積神經網路目前在多數電腦視覺的任務中,都有優於人類的表現 卷積是透過濾波器尋找圖型中特徵的一種數學運算 卷積神經網路中的濾波器數值是從資料中自動學習出來的 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路架構細節
今天的內容會帶大家了解 1. 卷積層中的卷積過程是如何計算的 2. CNN 架構 3. CNN 為何適用於 Image 處理,及為何卷積核有效 卷積的運算: 輸入(圖片)通過和 kernel(filter)進行矩陣運算得到特徵(feature map) 當進行多個通道(channel)的卷積時,filter 的深度取決於上一層的 channel 數 特徵圖的深度則是取決於 filter 的個數 卷積網路的組成: 卷積層(Convolution Layer) 池化層(Pooling Layer) 平坦層(Flatten Layer) 全連接層(Fully connected Layer) 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 卷積(Convolution)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 卷積 (Convolution) 的 超參數(Hyper parameter )設定與應用 我們在使用 Convolution Layer 時可以使用 padding 和 stride 改變 feature map 的大小: 1. stride:減少計算量、減少參數 2. padding:使 feature map 不因 filter 的大小影響輸出結果,使輸出大小更容易達成期望 有了大概的理解之後,我們開始今天的學習吧!!!
-
卷積神經網路 - 池化(Pooling)層與參數調整
今天的內容會帶大家了解 1. CNN Flow 2. 池化層超參數的調適 CNN 適合用在影像上: 1. fully-connected networking (全連接層) 如果用在影像辨識上 會導致參數過多(因為像素很多),導致 over-fitting(過度擬合) 2. CNN 針對影像辨識的特性,特別設計過,來減少參數 3. Convolution(卷積) : 學出 filter 比對原始圖片,產生出 feature map (特徵圖, 也當成image) 4. Max Pooling (最大池化):將 feature map 縮小 5. Flatten (平坦層):將每個像素的 channels (有多少個filters) 展開成 fully connected feedforward network (全連接的前行網路) 6. AlphaGo 也用了 CNN,但是沒有用 Max Pooling (所以不同問題需要不同model) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Keras 中的 CNN layers
今天的內容會帶大家了解 1. Keras 中的 CNN layers 如何使用 2. Keras 中的 CNN layers 各項參數的意義 卷積層會對輸入影像進行卷積得到特徵圖 (feature maps) 通常多次的卷積會讓特徵圖影像尺寸縮小,但通道數增加 Keras 中有 Conv2D 與 SeparableConv2D 可以做選擇 主要參數為 filters (濾波器的數量) 有了大概的理解之後,我們開始今天的學習吧!!!
-
使用 CNN 完成 CIFAR-10 資料集
今天的內容會帶大家了解 1. 電腦視覺中非常著名的 Cifar-10 資料集 2. 如何使用 Keras 來完成 Cifar-10 的 CNN 分類模型 Cifar-10 資料集是深度學習領域中很常用來做 benchmark 的資料集 CNN 相比 DNN,更適合用來處理影像的資料集 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理大量數據
今天的內容會帶大家了解 1. 遇到資料量龐大的數據該如何處理 2. 如何撰寫 Python 的生成器 (generator) 程式碼 當資料量太大無法一次讀進記憶體時,可使用 Generator 進行批次讀取 使用 yield 來撰寫 Python generator 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 處理小量數據
今天的內容會帶大家了解 1. 遇到資料量較少的數據該如何處理 2. 資料增強的意義與使用時的注意事項 資料增強可以些微改善資料量不足的情況,可使用 Keras 內建的資料增強函數 或是使用開源的 imgaug 來完成更多特殊的資料增強方法 有了大概的理解之後,我們開始今天的學習吧!!!
-
訓練卷積神經網路的細節與技巧 - 轉移學習 (Transfer learning)
今天的內容會帶大家了解 1. 遷移學習 (Transfer learning) 的意義 2. 在 Keras 中如何使用遷移學習來訓練模型 遷移學習是透過預先在大型資料集訓練好的權重 再根據自己的資料集進行微調 (finetune) 的一種學習方法 Keras 中的模型,只要指定權重 weights=”imagenet” 即可使用遷移學習 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
Kaggle 期末考
-
10. Bonus 進階補充
電腦視覺實務延伸
-
史丹佛線上 ConvNetJS 簡介
今天的內容會帶大家了解 1. 透過互動式網頁了解卷積網路 2. 卷積網路超參數對於訓練與預測率的影響 3. 特徵圖 (feature map) 視覺化的效果 L2_weight decay:在設置上,Weight Decay 是一個 L2 penalty,是對參數取值平方和的懲罰 取值可以量子化,即存在大量可壓縮空間,因為 Relu 的存在使得其有界。 weight decay :最終目的是防止過擬合,所以 weight decay 的作用是調節模型複雜度對損失函數的影響 若 weight decay 很大,則複雜的模型損失函數的值也就大。 Momentum :梯度下降法中一種常用的加速技術 有了大概的理解之後,我們開始今天的學習吧!!!
-
CNN 卷積網路回顧
今天的內容會帶大家了解 1. 卷積網路的演進 2. 卷積網路的有趣應用 利用電腦視覺管理:CNN 圖像處理上有不同的模型 主要的元素:ROI, CNN feature map, anchor boxes, mask 卷積網路的優點: 局部感知與權重共享,藉由卷積核抽取影像的局部特徵,並且讓影像各區域共享這個卷積核 兩大部分: 影像特徵提取:CNN_Layer1+Pooling_1+CNN_Layer2+Pooling_2 的處理 Fully Connected Layer:包含Flatten Layer, Hidden Layer, Output Layer 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺常⽤公開資料集
今天的內容會帶大家了解 電腦視覺常⽤公開資料集 1. Kaggle 2. ImageNet dataset 3. COCO dataset 有了大概的理解之後,我們開始今天的學習吧!!!
-
電腦視覺應用介紹
今天的內容會帶大家了解 電腦視覺應用 1. 影像分類 2. 影像分割 3. 物件偵測 4. 人臉偵測 5. 實例分割 6. 人臉偵測 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
1. 機器學習概論
從概念上理解機器學習的目的與限制,並導覽機器學習流程
-
資料介紹與評估資料
首先會和大家介紹整個機器學習的概念以及出入資料科學的探索流程 包括發現問題、做出一個原型解決問題以及如何優化他等等 再來就是當你拿到新的一大筆資料時應該要具備四個思維: 1. 為什麼這個問題很重要? 2. 資料從哪裡來? 3. 資料的型態是? 4. 我們能夠回答什麼問題? 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習概論
我們會學習到機器學習、深度學習與人工智慧之差別以及 機器學習與 AI 的基本概念以及它在不同領域的應用 機器學習三大類別: 1. 監督式學習(較常見) ex: 圖像分類、詐騙偵測 2. 非監督式學習 ex: 維度縮減、分群、壓縮等 3. 強化學習 ex:下圍棋、打電玩 有了大概的理解之後,我們開始今天的學習吧!!!
-
機器學習 - 流程與步驟
今天的內容會帶大家了解一整個機器學習專案的細節 包含開發流程的步驟、每個步驟的進行模式,帶你熟悉整個 ML 的流程 專案開發流程: 1. 資料收集、前處理 ex: 缺失值填補、離群值處理、標準化 2. 定義目標與評估準則 ex: 訓練集、驗證集、測試集 3. 建立模型與調整參數 ex: 回歸模型、數模型、神經網路 4. 導入 ex: 預測、整合前後端 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA/讀取資料與分析流程
今天的內容會帶大家了解 讀取資料、萃取想要了解的信息 EDA、數據分析流程 數據分析流程: 1. 資料收集 2. 數據清理、特徵萃取 3. 資料視覺化 4. 建立模型、驗證模型 5. 決策應用 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
2. 資料清理數據前處理
以滾動方式進行資料清理與探索性分析
-
如何新建一個 dataframe? 如何讀取其他資料? (非 csv 的資料)
今天的內容會帶大家了解 快速驗證 Dataframe 操作、讀取其他資料格式 新建一個 Dataframe 可以將分析資料過程中產生的數據儲存成結構化資料 且有時候資料過大,操作上很費時,就能透過它來測試程式碼是否跟預期結果相符 然而常常我們會有不同的資料(圖片或文字等等) 所以我們也會學習讀取像是 txt、jpg、png、json、mat、spy、pal等等 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:欄位的資料類型介紹及處理
今天的內容會帶大家了解 Dataframe 欄位的資料類型及處理 一般資料的欄位變數可以分為:離散變數、連續變數 Pandas Dataframe 的欄位資料類型可以分為:float64 浮點數、int64 整數、object字串及類型 通常拿到資料的第一步,就是看我們有什麼欄位、欄位代表什麼意義、儲存的資料類型 而資料原本是字串或是類別的話,如果要進一步做分析就必須轉為數值的資料 通常是透過 Label encoding、One Hot encoding 來做轉換 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵類型
今天的內容會帶大家了解 特徵工程之中的三種特徵類型,大致可分為:數值特徵、類別特徵、時間型特徵,作法上也不同 當然還有像二元特徵、排序行特徵等等,但上面三種是較為常見的類型 1. 數值型特徵:最容易轉成特徵,但需要注意很多細節 ex: 年齡 2. 類別型特徵:通常一種類別對應一種分數,問題在如何對應 ex: 性別、行政區 3. 時間型特徵:特殊之處在於有週期性 ex: 月、星期 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA資料分佈
今天的內容會帶大家了解 如何透過基本的統計數值、畫圖來了解資料 EDA 統計量化: 1. 平均值 Mean、中位數 Median、眾數 Mode 2. 最小值Min、最大值Max、範圍Range、四分位差Quartiles、變異數 Variance、標準差 Standard deviation 透過上面的統計特徵,可以讓我們初步了解資料的樣子,並解觀察是否有異樣 EDA 視覺化: 1. Matplotlib 套件 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA:Outlier 及處理
今天的內容會帶大家了解離群值 離群值 1. 離群值出現的原因:隨意填補的值、錯誤紀錄等等 2. 檢查流程與方法:檢查數值範圍、繪製圖示等等 3. 處理方法:填補、新增欄位、刪除欄位 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除離群值
今天的內容會帶大家了解 如何去除離群值 Outlier 數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響,否則會影響標準化無法處理去 除林群值得方法有兩個: 1. 捨棄離群值 2. 調整離群值 處理離群值之後 好處是剩餘資料中模型較為單純且準確 壞處是有可能刪除掉重要資訊 因此刪除前最好能先了解該數值會離群的可能原因 有了大概的理解之後,我們開始今天的學習吧!!!
-
常用的數值取代:中位數與分位數連續數值標準化
今天的內容會帶大家了解 處理離群值、進行連續型數值標準化 透過填補統計值來處理離群值,而常見的統計值如下 1. 中位數 Median 2. 分位數 Quantiles 3. 平均數 Mean 4. 眾數 Mode 常用標準化方法 1. Z 轉換 2. 空間壓縮 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 補缺失值與標準化
今天的內容會帶大家了解 處理缺失值、資料標準化意義、標準化使用時機、最大化最小化時機 填補缺值方法 1. 填補平均值、中位數、眾數 2. 填補指定值(須對欄位領域知識有了解) 3. 填補預測值(須提防 overfitting) 最大準則為不要破壞資料分布~ 標準化可以平衡數值特徵間的影響力 最大化、最小化對極端數值較為敏感 所以如果資料不會有極端值,或已經去極端值,就適合用最大最小化,否則請用標準化 有了大概的理解之後,我們開始今天的學習吧!!!
-
DataFrame operationData frame merge/常用的 DataFrame 操作
今天的內容會帶大家了解 常見的資料操作方法、資料表串接 資料操作方法、資料表串接: 1. 轉換與合併 Dataframe(melt函數、concat函數、merge函數) 2. Subset 3. Group operations 許多基本操作 (如 >, ==, <, ~) 都是可以在 Pandas 作為篩選條件使用 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 EDA: correlation/相關係數簡介
今天的內容會帶大家了解 相關係數、利用相關係數理解對欄位與預測目標之間的關係 相關係數: 常用來了解欄位&預測目標之間關係的指標,-1< 相關係數 <1 透過兩者之間的線性關係強度和方向,能夠讓人直觀的了解關係 是一個相當不錯且簡單的方法~ 相關係數大小: 1. 0~0.19 : 非常弱相關 2. 0.2 ~0.39 : 弱相關 3. 0.4~0.59 : 中度相關 4. 0.6~0.79 : 強相關 5. 0.8~1.0 : 非常強相關 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA from Correlation
本章簡介: 今天的內容會帶大家 實作相關係數 Coding 練習 練習目標: 1. 用相關係數來迅速找到和預測目標最有線性關係的變數 2. 搭配散佈圖同時了解預測目標與變數的關係 深入了解資料,從 correlation 的結果下手 希望透過這次的練習,可以讓你對相關係數的相關操作更加熟悉!!! 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation (KDE)
今天的內容會帶大家了解 Matplotlib 其他主題、KDE 繪製 Matplotlib 其他主題 1. plt.style.use (‘default’) 不需設定就會使用預設 2. plt.style.use ('ggplot') 3. plt.style.use (‘seaborn’) 或採用 seaborn 套件繪圖 KDE (Kernel Density Estimation) 1. 採用無母數方法畫出一個觀察變數的機率密度函數 2. Density plot 的特性(歸一、對稱) 3. 常用的 Kernel function ex: Gaussian、Cosine 4. KDE 優缺點 有了大概的理解之後,我們開始今天的學習吧!!!
-
EDA: 把連續型變數離散化
今天的內容會帶大家了解 了解離散化連續數值的意義以及方法 連續行變數離散化 1. Goal(變穩定、簡單) 2. 關鍵點(組數、組寬) 3. 主要方法(等寬劃分、等頻劃分、聚類劃分) 離散化的目的是讓事情變簡單、減少 outlier 對分析以及訓練模型的影響 主要的方法是等寬劃分 (對應 pandas 中的 cut) 以及等頻劃分 (對應 pandas 中的 qcut) 有了大概的理解之後,我們開始今天的學習吧!!!
-
程式實作 把連續型變數離散化
今天的內容會帶大家實作 把連續型的變數離散化後,搭配 pandas 的 groupby 繪製、預測目標的圖 來判斷兩者之間是否有某種關係/趨勢 有了大概的理解之後,我們開始今天的學習吧!!!
-
Subplots
今天的內容會帶大家了解 Subplots 多圖呈現 簡單來說就是把數據分組一次呈現或者是把同一組資料一次呈現 1. 使用時機(相似資料呈現、同組資料呈現) 2. 不能過度使用(造成資訊過多、混淆) 3. 坐標系(列、欄、位置) 有了大概的理解之後,我們開始今天的學習吧!!!
-
Heatmap & Grid-plot
今天的內容會帶大家了解 Heatmap & Grid-plot Grid-plot 1. Subplot 延伸版本 2. 呈現變數間的相關程度 3. 結合scatter plot 與 historgram 的優點 Heatmap 1. 常用於表達訊息強弱 2. 適用於混淆矩陣 有了大概的理解之後,我們開始今天的學習吧!!!
-
模型初體驗 Logistic Regression
在我們開始使用任何複雜的模型之前 有一個最簡單的模型當作 baseline 是一個好習慣 今天的內容會帶大家了解 Logistic Regression ~ Python 有很豐富的資源 我們只要把相關的的套件 import 進來,看官方文檔或者 google 怎麼使用就好 不需要自己寫模型具體計算過程的程式碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
-
3. 資料科學特徵工程技術
使用統計或領域知識,以各種組合調整方式,生成新特徵以提升模型預測力。
-
特徵工程簡介
今天的內容會帶大家了解 特徵工程的概念、從程式中辨識特徵工程的區塊與意義、特徵工程的重要元素 其實特徵工程的概念就是把事實轉變成分數,比如說事情的重要性、緊急性等等 而在程式語法中,特徵工程位於擬合模型之前、資料彙整之後 由於資料包含類別型特徵、數值型特徵等等 所以最小的特徵工程至少要包含一種類別編碼(範例使用標籤編碼) 以及一種特徵縮放方法(範例使用最小最大化) 有了大概的理解之後,我們開始今天的學習吧!!!
-
數值型特徵 - 去除偏態
今天的內容會帶大家了解 資料去偏態時機、去偏態方法、注意細節 去除偏態的目標在於讓數值更接近常態分布(左右對稱、集中點在中央),讓平均值更具有代表性 數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差 去偏態方法 1. 對數去偏 2. 方根去偏 3. 分布去偏 當離群資料比例太高,或者平均值沒有代表性時,可以考慮去除偏態 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 基礎處理
今天的內容會帶大家了解 類別行特徵兩大基礎編碼方式:標籤編碼、讀熱編碼 標籤編碼 1. 依序將新出現的類別依序編上新代碼,已出現的類別編上已使用的代碼 2. 確實能轉成分數,缺點是分數的大小順序只與轉換對照有關,與標籤的意義無直接相關。 有了大概的理解之後,我們開始今天的學習吧!!! 介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼
-
類別型特徵 - 均值編碼
今天的內容會帶大家了解 1. 當類別特徵與目標明顯相關時,該用什麼編碼方式 2. 均值編碼可能有什麼問題 3. 應該使用何種方式修正均值編碼的問題 均值編碼 (Mean Encoding) : 使用目標值的平均值,取代原本的類別型特徵 平滑化 ( Smoothing ):修正均值編碼容易 Overfitting 的問題,但效果有限, 因此仍須經過檢驗後再決定是否該使用均值編碼 有了大概的理解之後,我們開始今天的學習吧!!!
-
類別型特徵 - 其他進階處理
今天的內容會帶大家了解 1. 計數編碼,在什麼條件下可以考慮使用? 2. 雜湊編碼在什麼情況下可以考慮使用? 計數編碼是計算類別在資料中的出現次數,當⽬標平均值與類別筆數呈正/負相關時,可以考慮使用 當相異類別數量相當大時,其他編碼方式效果更差,可以考慮雜湊編碼以節省時間 note: 雜湊編碼效果也不佳,這類問題更好的解法是嵌入式編碼(Embedding) 但是需要深度學習並有其前提,因此這裡暫時不排入課程 有了大概的理解之後,我們開始今天的學習吧!!!
-
時間型特徵
今天的內容會帶大家了解 1. 時間型特徵最常用的編碼方式 2. 如何將時間最重要的特性 「循環」 改成特徵 3. 時間常見的週期循環特徵有哪些,有什麼要注意的地方? 時間型特徵最常用的是特徵分解 : 拆解成年/月/日/時/分/秒的分類值 週期循環特徵是將時間"循環"特性改成特徵方式,設計關鍵在於首尾相接,因此我們需要使用 sin /cos 等週期函數轉換 常見的週期循環特徵有 : 年週期(季節) / 周周期(例假日) / 日週期(日夜與生活作息), 要注意的是最高與最低點的設置 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 數值與數值組合
今天的內容會帶大家了解 1. 數值與數值的特徵組合,除了基礎的加減乘除等四則運算,最關鍵的部分是什麼? 2. 機器學習的關鍵又是什麼? 數值與數值的特徵組合,最關鍵的部分是領域知識 機器學習的關鍵是特徵工程,當然其餘部分仍然很重要,但是各部分都熟悉之後 最有效提升模型預測力的部分就是特徵工程 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵組合 - 類別與數值組合
今天的內容會帶大家了解 1. 類別型特徵也能和數值特徵組成新特徵嗎? 2. 群聚編碼有哪些操作運算可以使用? 3. 群聚編碼與之前的均值編碼最主要有什麼不同? 群聚編碼:類似均值編碼的概念,可以取類別平均值 (Mean) 取代險種作為編碼 比較像性質描寫,因此還可以取其他統計值 有了大概的理解之後,我們開始今天的學習吧!!!
-
特徵選擇
今天的內容會帶大家了解 1. 特徵選擇/篩選與特徵組
-