網上有很多關于pos機產品你選對了嗎,機器學習模型五花八門不知道怎么選的知識,也有很多人為大家解答關于pos機產品你選對了嗎的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機產品你選對了嗎
作者 | LAVANYA
譯者 | 陸離
編輯 | 夕顏
出品 | AI科技大本營(ID: rgznai100)
【導讀】在本文中,我們將探討不同的機器學習模型,以及每個模型合理的使用場景。
一般來說,基于樹形結構的模型在Kaggle競賽中是表現最好的,而其它的模型可以用于融合模型。對于計算機視覺領域的挑戰,CNNs (Convolutional Neural Network, 卷積神經網絡)是最適合不過的。而對于NLP(Natural Language Processing,自然語言處理),LSTMs或GRUs是最好的選擇。下面是一個不完全模型細目清單,同時列出了每個模型的一些優缺點。
1. 回歸 — 預測連續值A. 線性回歸(Linear Regression)
I.Vanilla Linear Regression
優點
· 善于獲取數據集中的線性關系;
· 適用于在已有了一些預先定義好的變量并且需要一個簡單的預測模型的情況下使用;
· 訓練速度和預測速度較快;
· 在小數據集上表現很好;
· 結果可解釋,并且易于說明;
· 當新增數據時,易于更新模型;
· 不需要進行參數調整(下面的正則化線性模型需要調整正則化參數);
· 不需要特征縮放(下面的正則化線性模型需要特征縮放);
· 如果數據集具有冗余的特征,那么線性回歸可能是不穩定的;
缺點
· 不適用于非線性數據;
· 預測精確度較低;
· 可能會出現過度擬合(下面的正則化模型可以抵消這個影響);
· 分離信號和噪聲的效果不理想,在使用前需要去掉不相關的特征;
· 不了解數據集中的特征交互;
II. Lasso回歸, Ridge回歸, Elastic-Net回歸
優點
· 這些模型是正則化的線性回歸模型;
· 有助于防止過度擬合;
· 這些模型更善于正則化,因為它們更簡單;
· 適用于當我們只關心幾個特征的時候;
缺點
· 需要特征縮放;
· 需要調整正則化參數;
B. 回歸樹(Regression Trees)
I.決策樹(Decision Tree)
優點
· 訓練速度和預測速度較快;
· 善于獲取數據集中的非線性關系;
· 了解數據集中的特征交互;
· 善于處理數據集中出現的異常值;
· 善于在數據集中找到最重要的特征;
· 不需要特征縮放;
· 結果可解釋,并易于說明;
缺點
· 預測精確度較低;
· 需要一些參數的調整;
· 不適用于小型數據集;
· 分離信號和噪聲的效果不理想;
· 當新增數據時,不易更新模型;
· 在實踐中很少使用,而是更多地使用集合樹;
· 可能會出現過度擬合(見下面的融合模型);
II.融合模型(RandomForest,XGBoost, CatBoost, LightGBM)
優點
· 多重樹結構整理預測;
· 具有較高的預測精確度,在實踐中表現很好;
· 是Kaggle競賽中推薦的算法;
· 善于處理數據集中出現的異常值;
· 善于在數據集中獲取非線性關系;
· 善于在數據集中找到最重要的特征;
· 能夠分離信號和噪聲;
· 不需要特征縮放;
· 特別適用于高維度的數據;
缺點
· 訓練速度較慢;
· 具有較高的預測速度;
· 結果不易解釋或說明;
· 當新增數據時,不易更新模型;
· 需要調整參數,但調整較為復雜;
· 不適用于小型數據集;
C. 深度學習(Deep Learning)
優點
· 在實踐中表現出較高的預測精確度;
· 可以獲取數據中非常復雜的底層模式;
· 特別適用于大型數據集和高維度數據集;
· 當新增數據時,易于更新模型;
· 網絡的隱藏層明顯減少了對特征工程的需求;
· 是適用于計算機視覺、機器翻譯、情感分析和語音識別任務的最新技術;
缺點
· 具有非常低的訓練速度;
· 需要消耗巨大的計算資源;
· 需要特征縮放;
· 結果不易解釋或說明;
· 需要大量的訓練數據,因為它要學習大量的參數;
· 在非圖像、非文本、非語音的任務中優于Boosting算法;
· 非常靈活,帶有許多不同的體系結構構建塊,因此需要專業知識來設計體系結構;
D. 基于距離的K近鄰算法(K Nearest Neighbors – Distance Based)
優點
· 訓練速度較快;
· 不需要太多的參數調整;
· 結果可解釋,并易于說明;
· 適用于小型數據集(小于10萬個訓練集)
缺點
· 預測精確度較低;
· 不適用于小型數據集;
· 需要選擇合適的距離函數;
· 需要特征縮放;
· 預測速度隨數據集增大而加快;
· 分離信號和噪聲的效果不理想,在使用前需要去掉不相關的特征;
· 是內存密集型的算法,因為它可以保存所有的觀察結果;
· 不適用于處理高維度的數據;
2. 分類 — 預測一個或多個類別的概率A. 邏輯回歸算法(logistic Regression)
優點
· 善于對線性可分離數據進行分類;
· 具有較高的訓練速度和預測速度;
· 適用于小型數據集;
· 結果可解釋,并易于說明;
· 當新增數據時,易于更新模型;
· 在正則化時可以避免過度擬合;
· 可以同時進行2個類和多個類的分類任務;
· 不需要參數調整(除非在正則化的時候,我們需要調整正則化參數);
· 不需要特征縮放(正則化的時候除外);
· 如果數據集具有冗余特征,則線性回歸可能是不穩定的;
缺點
· 不適用于非線性可分離數據;
· 具有較低的預測精確度;
· 可能會出現過度擬合(見下面的正則化模型)
· 分離信號和噪聲的效果不理想,在使用前需要去掉不相關的特征;
· 不了解數據集中的特征交互;
B. 基于距離的支持向量機算法(Support Vector Machines – Distance based)
優點
· 具有較高的預測精確度;
· 即使在高維度數據集上也不會產生過度擬合,因此它適用于具有多個特征的情況;
· 適用于小型數據集(小于10萬個訓練集);
· 適用于解決文本分類的問題;
缺點
· 當新增數據時,不易更新模型;
· 屬于內存高度密集型算法;
· 不適用于大型數據集;
· 需要選擇正確的內核;
· 線性內核對線性數據建模,運行速度快;
· 非線性內核可以模擬非線性邊界,運行速度慢;
· 用Boosting代替!
C. 基于概率的樸素貝葉斯算法(Naive Bayes — Probability based)
優點
· 在文本分類問題上表現極佳;
· 具有較高的訓練速度和預測速度;
· 在小型數據集上表現良好;
· 善于分離信號和噪聲;
· 在實踐中表現出良好的性能;
· 操作簡單,易于實現;
· 適用于小型數據集(小于10萬個訓練集);
· 關于特征的和潛在分布的獨立性避免了過度擬合;
· 如果這種獨立性的條件成立,那么樸素貝葉斯可以在更小的數據集上運行,并且可以以更快的速度進行訓練;
· 不需要特征縮放;
· 不是內存密集型算法;
· 結果可解釋,并易于說明;
· 根據數據集的大小易于擴展;
缺點
· 具有較低的預測精確度;
D. 基于距離的K近鄰算法( K Nearest Neighbors — Distance Based)
優點
· 具有較高的訓練速度;
· 無需太多參數調整;
· 結果可解釋,并易于說明;
· 適用于小型數據集(小于10萬個訓練集);
缺點
· 預測精確度較低;
· 在小型數據集上表現不好;
· 需要選擇一個合適的距離函數;
· 需要功能縮放;
· 預測速度隨著數據集增大而加快;
· 分離信號和噪聲的效果不理想,在使用前需要去掉不相關的特征;
· 是內存密集型算法,因為它可以保存所有的觀察結果;
· 不善于處理高維度的數據;
E. 分類樹(Classification Tree)
I. 決策樹(Decision Tree)
優點
· 具有較高的訓練速度和預測速度;
· 善于獲取數據集中的非線性關系;
· 了解數據集中的特征交互;
· 善于處理數據集中出現的異常值;
· 善于在數據集中找到最重要的特征;
· 可以同時進行2個類和多個類的分類任務;
· 不需要特征縮放;
· 結果可解釋,并易于說明;
缺點
· 預測速度較慢;
· 需要進行參數的調整;
· 在小型數據集上表現不好;
· 分離信號和噪聲的效果不理想;
· 在實踐中很少使用,而是更多地使用集合樹;
· 當新增數據時,不易更新模型;
可能會出現過度擬合(見下面的融合模型)
II.融合(RandomForest, XGBoost, CatBoost, LightGBM)
優點
· 多重樹結構整理預測;
· 具有較高的預測精確度,在實踐中表現很好;
· 是Kaggle競賽中推薦的算法;
· 善于獲取數據集中的非線性關系;
· 善于處理數據集中出現的異常值;
· 善于在數據集中找到最重要的特征;
· 能夠分離信號和噪聲;
· 無需特征縮放;
· 特別適用于高維度的數據;
缺點
· 訓練速度較慢;
· 預測速度較快;
· 結果不易解釋或說明;
· 當新增數據時,不易更新模型;
· 需要調整參數,但調整較為復雜;
· 在小型數據集上表現不好;
F. 深度學習(Deep Learning)
優點
· 預測精確度較高,在實踐中表現良好;
· 可以獲取數據中非常復雜的底層模式;
· 適用于大型數據集和高維度數據集;
· 當新增數據時,易于更新模型;
· 網絡的隱藏層明顯減少了對特征工程的需求;
· 是適用于計算機視覺、機器翻譯、情感分析和語音識別任務的最新技術;
缺點
· 訓練速度較慢;
· 結果不易解釋或說明;
· 需要消耗巨大的計算資源;
· 需要特征縮放;
· 需要大量的訓練數據,因為它要學習大量的參數;
· 在非圖像、非文本、非語音的任務中優于Boosting算法;
· 非常靈活,帶有許多不同的體系結構構建塊,因此需要專業知識來設計體系結構;
3. 聚類 — 將數據分類以便最大化相似性A. DBSCAN聚類算法(Density-Based Spatial Clustering of Applications with Noise)
優點
· 可擴展到大型數據集上;
· 善于噪聲檢測;
· 無需預先知道聚類的數量;
· 可以發現任意形狀的聚類,不會假設聚類的形狀是球狀的;
缺點
· 如果整個數據集都是高密度區域,那么該算法不總是有效的;
· 需要調整密度參數epsilon和min_samples為正確的值,以便獲得好的效果;
B. Kmeans算法優點
· 特別適于獲取底層數據集的結構;
· 算法簡單,易于解釋;
· 適于預先知道聚類的數量;
缺點
· 如果聚類不是球狀的,并且大小相似,那么該算法不總是有效的;
· 需要預先知道聚類的數量,并需要調整k聚類的選擇以便獲得好的結果;
· 屬于內存密集型的算法;
· 無法擴展到大型數據集上;
4. Misc — 本文中未包含的模型降維算法(Dimensionality Reduction Algorithms);
聚類算法(Clustering algorithms);
· 高斯混合模型(Gaussian Mixture Model);
· 分層聚類(Hierarchical clustering);
計算機視覺(CV);
· 卷積神經網絡(Convolutional Neural Networks);
· 圖像分類(Image classification);
· 對象檢測(Object Detection)
· 圖像分割(Image segmentation)
自然語言處理(Natural Language Processing,NLP)
· 循環神經網絡(Recurrent Neural Network,RNNs,包括LSTM 和 GRUs)
強化學習(Reinforcement Learning)
融合模型融合模型是一種非常強大的技術,有助于減少過度擬合,并通過組合來自不同模型的輸出以做出更穩定的預測。融合模型是贏得Kaggle競賽的一個重要工具,在選擇模型進行融合時,我們希望選擇不同類型的模型,以確保它們具有不同的優勢和劣勢,從而在數據集中獲取不同的模式。這種更明顯的多樣性特點使得偏差降低。我們還希望確保它們的性能是可以對比的,這樣就能確保預測的穩定性。
我們在這里可以看到,這些模型的融合實際上比任何單一的模型生成的損失都要低得多。部分的原因是,盡管所有的這些模型都非常擅長預測,但它們都能得到不同的正確預測結果,通過把它們組合在一起,我們能夠根據它們所有不同的優勢組合成一個超級模型。
# in order to make the final predictions more robust to overfittingdef blended_predictions(X): return ((0.1 * ridge_model_full_data.predict(X)) + \\\\ (0.2 * svr_model_full_data.predict(X)) + \\\\ (0.1 * gbr_model_full_data.predict(X)) + \\\\ (0.1 * xgb_model_full_data.predict(X)) + \\\\ (0.1 * lgb_model_full_data.predict(X)) + \\\\ (0.05 * rf_model_full_data.predict(X)) + \\\\ (0.35 * stack_gen_model.predict(np.array(X))))
融合模型分為四種類型(包括混合型):
Bagging:使用隨機選擇的不同數據子集訓練多個基礎模型,并進行替換。讓基礎模型對最終的預測進行投票。常用于隨機森林算法(RandomForests);
Boosting:迭代地訓練模型,并且在每次迭代之后更新獲得每個訓練示例的重要程度。常用于梯度增強算法(GradientBoosting);
Blending:訓練許多不同類型的基礎模型,并在一個holdout set上進行預測。從它們的預測結果中再訓練一個新的模型,并在測試集上進行預測(用一個holdout set堆疊);
Stacking:訓練多種不同類型的基礎模型,并對數據集的k-folds進行預測。從它們的預測結果中再訓練一個新的模型,并在測試集上進行預測;
模型對比權重和偏差讓我們可以用一行代碼來跟蹤和比較模型的性能表現。選擇要測試的模型后,對其進行訓練并添加wandb.log({‘score’: cv_score})來記錄模型的運行狀態。完成訓練之后,你就可以在一個簡單的控制臺中對比模型的性能了!
# WandBimport wandbimport tensorflow.kerasfrom wandb.keras import WandbCallbackfrom sklearn.model_selection import cross_val_score# Import models (Step 1: add your models here)from sklearn import svmfrom sklearn.linear_model import Ridge, RidgeCVfrom xgboost import XGBRegressor# Model 1# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous=\'allow\', project="pick-a-model")# Initialize model (Step 2: add your classifier here)clf = svm.SVR(C= 20, epsilon= 0.008, gamma=0.0003)# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)# Log scoresfor cv_score in cv_scores: wandb.log({\'score\': cv_score})# Model 2# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous=\'allow\', project="pick-a-model")# Initialize model (Step 2: add your classifier here)clf = XGBRegressor(learning_rate=0.01, n_estimators=6000, max_depth=4, min_child_weight=0, gamma=0.6, subsample=0.7, colsample_bytree=0.7, objective=\'reg:linear\', nthread=-1, scale_pos_weight=1, seed=27, reg_alpha=0.00006, random_state=42)# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)# Log scoresfor cv_score in cv_scores: wandb.log({\'score\': cv_score})# Model 3# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous=\'allow\', project="pick-a-model")# Initialize model (Step 2: add your classifier here)ridge_alphas = [1e-15, 1e-10, 1e-8, 9e-4, 7e-4, 5e-4, 3e-4, 1e-4, 1e-3, 5e-2, 1e-2, 0.1, 0.3, 1, 3, 5, 10, 15, 18, 20, 30, 50, 75, 100]clf = Ridge(alphas=ridge_alphas)# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)# Log scoresfor cv_score in cv_scores: wandb.log({\'score\': cv_score})
就這樣,在有了所有的工具和算法之后,就可以為你的問題選擇正確的模型了!
模型的選擇可能是非常復雜的,但我希望本指南能給你帶來一些啟發,讓你找到模型選擇的好方法。
原文鏈接:
https://lavanya.ai/2019/09/18/part-ii-whirlwind-tour-of-machine-learning-models/
所有CSDN 用戶都可參與投票和抽獎活動
加入福利群,每周還有精選學習資料、技術圖書等福利發送
以上就是關于pos機產品你選對了嗎,機器學習模型五花八門不知道怎么選的知識,后面我們會繼續為大家整理關于pos機產品你選對了嗎的知識,希望能夠幫助到大家!
