來源:互聯網
上載者:User
關鍵字
機器學習
演算法快速選擇
機器學習演算法
k-Means演算法
機器學習演算法辣麼多,對於小白的我,剪不斷理還亂,特整理一些説明我快速理解的圖片
機器學習演算法細分 - 1.很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的 - 2.從兩個方面分類 - 2.1學習的方式 監督式學習 常見應用場景如分類問題和回歸問題 常見演算法有邏輯回歸(Logistic Regression)和反 向傳遞神經網路(Back Propagation Neural Network) 非監督式學習 應用場景包括關聯規則的學習以及聚類等 常見演算法包括Apriori演算法以及k-Means演算法 半監督式學習 應用場景包括分類和回歸 演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。 如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.)等 強化學習 應用場景包括動態系統以及機器人控制 常見演算法包括Q-Learning以及時間差學習(Temporal difference learning) - 2.2演算法的類似性 回歸演算法 回歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法 最小平方法(Ordinary Least Square)Scatterplot Smoothing) 邏輯回歸(Logistic Regression) 逐步式回歸(Stepwise Regression) 多元自我調整回歸樣條(Multivariate Adaptive Regression Splines) 本地散點平滑估計(Locally Estimated 基於實例的演算法 常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。 通過這種方式來尋找最佳的匹配 k-Nearest Neighbor(KNN) 學習向量量化(Learning Vector Quantization, LVQ) 自組織映射演算法(Self-Organizing Map , SOM) 正規化方法 其他演算法(通常是回歸演算法)的延伸,根據演算法的複雜度對演算法進行調整。 正規化方法通常對簡單模型予以獎勵而對複雜演算法予以懲罰 Ridge Regression Least Absolute Shrinkage and Selection Operator(LASSO) 彈性網路(Elastic Net) 決策樹學 習 決策樹模型常常用來解決分類和回歸問題 分類及迴歸樹(Classification And Regression Tree, CART) ID3 (Iterative Dichotomiser 3) C4.5 Chi-squared Automatic Inter action Detection(CHAID) Decision Stump 隨機森林(Random Forest) 多元自我調整回歸樣條(MARS) 梯度推進機(Gradient Boosting Machine, GBM) 貝葉斯方法 主要用 來解決分類和回歸問題 樸素貝葉斯演算法 平均單依賴估計(Averaged One-Dependence Estimators, AODE) Bayesian Belief Network(BBN) 基於核的演算法 基於核的演算法把輸入資料對應到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決 支援向量機(Support Vector Machine, SVM) 徑向基函數(Radial Basis Function , RBF) 線性判別分析(Linear Discriminate Analysis ,LDA) 聚類演算法 聚類演算法都試圖找到資料的內在結構,以便按照最大的共同點將資料進行歸類 k-Means 期望最大化演算法(Expectation Maximization, EM) 關聯規則學習 通過尋找最能夠解釋資料變數之間關係的規則,來找出大量多元資料集中有用的關聯規則 Apriori Eclat 人工神經網路 人工神經網路演算法類比生物神經網路,是一類模式匹配演算法。 通常用於解決分類和回歸問題。 人工神經網路是機器學習的一個龐大的分支,有幾百種不同的演算法 感知器神經網路(Perceptron Neural Network) 反向傳遞(Back Propagation) Hopfield網路 自組織映射(Self-Organizing Map, SOM) 學習向量量化(Learning Vector Quantization, LVQ) 深度學習 深度學習演算法是對人工神經網路的發展 很多深度學習的演算法是半監督式學習演算法 受限波爾茲曼機(Restricted Boltzmann Machine, RBN) Deep Belief Networks(DBN) 卷積網路(Convolutional Network) 堆疊式自動編碼器(Stacked Auto-encoders) 降低維度演算法 像聚類演算法一樣,降低維度演算法試圖分析資料的內在結構, 不過降低維度演算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料 主成份分析(Principle Component Analysis, PCA) 偏最小二乘回歸(Partial Least Square Regression, PLS) Sammon映射 多維尺度(Multi-Dimensional Scaling, MDS) 投影追蹤(Projection Pursuit) 集成演算法 集成演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練, 然後把結果整合起來進行整體預測 Boosting Bootstrapped Aggregation(Bagging) AdaBoost 堆疊泛化(Stacked Generalization, Blending) 梯度推進機(Gradient Boosting Machine, GBM) 隨機森林(Random Forest) -3.如何快速進行演算法選擇 - 3.1如果你真心在乎準確率, 最好的途徑就是測試一大堆各式各樣的演算法(同時確保在每個演算法上也測試不同的參數),最後選擇在交叉驗證中表現最好的 - 3.2訓練集有多大 小訓練集,高偏差/低方差的分類器(比如樸素貝葉斯)要比低偏差/ 高方差的分類器(比如k最近鄰)具有優勢,因為後者容易過擬合 隨著訓練集的增大,低偏差/高方差的分類器將開始具有優勢(它們擁有更低的漸近誤差),因為高偏差分類器對於提供準確模型不那麼給力 -3.3一些常用演算法的優缺點 樸素貝葉斯 巨尼瑪簡單,你只要做些算術就好了。 倘若條件獨立性假設確實滿足,樸素貝葉斯分類器將會比判別模型,譬如邏輯回歸收斂得更快,因此你只需要更少的訓練資料。 就算該假設不成立,樸素貝葉斯分類器在實踐中仍然有著不俗的表現。 如果你需要的是快速簡單並且表現出色,這將是個不錯的選擇。 其主要缺點是它學習不了特徵間的交互關係(比方說,它學習不了你雖然喜歡甄子丹和姜文的電影,卻討厭他們共同出演的電影《關雲長》的情況) 邏輯回歸 有很多正規化模型的方法,而且你不必像在用樸素貝葉斯那樣擔心你的特徵是否相關。 與決策樹與支援向量機相比,你還會得到一個不錯的概率解釋,你甚至可以輕松地利用新資料來更新模型(使用線上梯度下降演算法)。 如果你需要一個概率架構(比如簡單地調節分類閾值,指明不確定性,或者是要得得置信區間),或者你以後想將更多的訓練資料快速整合到模型中去,使用它吧 決策樹 易於解釋說明(對於某些人來說 —— 我不確定我是否在這其中)。 它可以毫無壓力地處理特徵間的交互關係並且是非參數化的,因此你不必擔心異常值或者資料是否線性可分(舉個例子,決策樹能輕鬆處理好類別A在某個特徵維度x的末端,類別B在中間,然後類別A又出現在特徵維度x前端的情況)。 它的一個缺點就是不支援線上學習,於是在新樣本到來後,決策樹需要全部重建。 另一個缺點是容易過擬合,但這也就是諸如隨機森林(或提升樹)之類的集成方法的切入點。 另外,隨機森林經常是很多分類問題的贏家(通常比支援向量機好上那麼一點,我認為),它快速並且可調,同時你無須擔心要像支援向量機那樣調一大堆參數,所以最近它貌似相當受歡迎 支援向量機 高準確率,為避免過擬合提供了很好的理論保證, 而且就算資料在原特徵空間線性不可分,只要給個合適的核函數,它就能運行得很好。 在動輒超高維的文本分類問題中特別受歡迎。 可惜記憶體消耗大,難以解釋,運行和調參也有些煩人,所以我認為隨機森林要開始取而代之了 -3.4儘管如此,回想一下,好的資料卻要優於好的演算法,設計優良特徵是大有裨益的。 假如你有一個超大資料集,那麼無論你使用哪種演算法可能對分類性能都沒太大影響(此時就根據速度和易用性來進行抉擇)。 資料分析生活常見問題歸類
分類
聚類
回歸
關聯
降維
實現方案
阿裡雲棲社區的一張快速尋找演算法圖
python scikit-learn的一張快速選擇演算法圖