網(wǎng)上有很多關(guān)于pos機(jī)產(chǎn)品你選對(duì)了嗎,機(jī)器學(xué)習(xí)模型五花八門不知道怎么選的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)產(chǎn)品你選對(duì)了嗎的問(wèn)題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
pos機(jī)產(chǎn)品你選對(duì)了嗎
作者 | LAVANYA
譯者 | 陸離
編輯 | 夕顏
出品 | AI科技大本營(yíng)(ID: rgznai100)
【導(dǎo)讀】在本文中,我們將探討不同的機(jī)器學(xué)習(xí)模型,以及每個(gè)模型合理的使用場(chǎng)景。
一般來(lái)說(shuō),基于樹(shù)形結(jié)構(gòu)的模型在Kaggle競(jìng)賽中是表現(xiàn)最好的,而其它的模型可以用于融合模型。對(duì)于計(jì)算機(jī)視覺(jué)領(lǐng)域的挑戰(zhàn),CNNs (Convolutional Neural Network, 卷積神經(jīng)網(wǎng)絡(luò))是最適合不過(guò)的。而對(duì)于NLP(Natural Language Processing,自然語(yǔ)言處理),LSTMs或GRUs是最好的選擇。下面是一個(gè)不完全模型細(xì)目清單,同時(shí)列出了每個(gè)模型的一些優(yōu)缺點(diǎn)。
1. 回歸 — 預(yù)測(cè)連續(xù)值A. 線性回歸(Linear Regression)
I.Vanilla Linear Regression
優(yōu)點(diǎn)
· 善于獲取數(shù)據(jù)集中的線性關(guān)系;
· 適用于在已有了一些預(yù)先定義好的變量并且需要一個(gè)簡(jiǎn)單的預(yù)測(cè)模型的情況下使用;
· 訓(xùn)練速度和預(yù)測(cè)速度較快;
· 在小數(shù)據(jù)集上表現(xiàn)很好;
· 結(jié)果可解釋,并且易于說(shuō)明;
· 當(dāng)新增數(shù)據(jù)時(shí),易于更新模型;
· 不需要進(jìn)行參數(shù)調(diào)整(下面的正則化線性模型需要調(diào)整正則化參數(shù));
· 不需要特征縮放(下面的正則化線性模型需要特征縮放);
· 如果數(shù)據(jù)集具有冗余的特征,那么線性回歸可能是不穩(wěn)定的;
缺點(diǎn)
· 不適用于非線性數(shù)據(jù);
· 預(yù)測(cè)精確度較低;
· 可能會(huì)出現(xiàn)過(guò)度擬合(下面的正則化模型可以抵消這個(gè)影響);
· 分離信號(hào)和噪聲的效果不理想,在使用前需要去掉不相關(guān)的特征;
· 不了解數(shù)據(jù)集中的特征交互;
II. Lasso回歸, Ridge回歸, Elastic-Net回歸
優(yōu)點(diǎn)
· 這些模型是正則化的線性回歸模型;
· 有助于防止過(guò)度擬合;
· 這些模型更善于正則化,因?yàn)樗鼈兏?jiǎn)單;
· 適用于當(dāng)我們只關(guān)心幾個(gè)特征的時(shí)候;
缺點(diǎn)
· 需要特征縮放;
· 需要調(diào)整正則化參數(shù);
B. 回歸樹(shù)(Regression Trees)
I.決策樹(shù)(Decision Tree)
優(yōu)點(diǎn)
· 訓(xùn)練速度和預(yù)測(cè)速度較快;
· 善于獲取數(shù)據(jù)集中的非線性關(guān)系;
· 了解數(shù)據(jù)集中的特征交互;
· 善于處理數(shù)據(jù)集中出現(xiàn)的異常值;
· 善于在數(shù)據(jù)集中找到最重要的特征;
· 不需要特征縮放;
· 結(jié)果可解釋,并易于說(shuō)明;
缺點(diǎn)
· 預(yù)測(cè)精確度較低;
· 需要一些參數(shù)的調(diào)整;
· 不適用于小型數(shù)據(jù)集;
· 分離信號(hào)和噪聲的效果不理想;
· 當(dāng)新增數(shù)據(jù)時(shí),不易更新模型;
· 在實(shí)踐中很少使用,而是更多地使用集合樹(shù);
· 可能會(huì)出現(xiàn)過(guò)度擬合(見(jiàn)下面的融合模型);
II.融合模型(RandomForest,XGBoost, CatBoost, LightGBM)
優(yōu)點(diǎn)
· 多重樹(shù)結(jié)構(gòu)整理預(yù)測(cè);
· 具有較高的預(yù)測(cè)精確度,在實(shí)踐中表現(xiàn)很好;
· 是Kaggle競(jìng)賽中推薦的算法;
· 善于處理數(shù)據(jù)集中出現(xiàn)的異常值;
· 善于在數(shù)據(jù)集中獲取非線性關(guān)系;
· 善于在數(shù)據(jù)集中找到最重要的特征;
· 能夠分離信號(hào)和噪聲;
· 不需要特征縮放;
· 特別適用于高維度的數(shù)據(jù);
缺點(diǎn)
· 訓(xùn)練速度較慢;
· 具有較高的預(yù)測(cè)速度;
· 結(jié)果不易解釋或說(shuō)明;
· 當(dāng)新增數(shù)據(jù)時(shí),不易更新模型;
· 需要調(diào)整參數(shù),但調(diào)整較為復(fù)雜;
· 不適用于小型數(shù)據(jù)集;
C. 深度學(xué)習(xí)(Deep Learning)
優(yōu)點(diǎn)
· 在實(shí)踐中表現(xiàn)出較高的預(yù)測(cè)精確度;
· 可以獲取數(shù)據(jù)中非常復(fù)雜的底層模式;
· 特別適用于大型數(shù)據(jù)集和高維度數(shù)據(jù)集;
· 當(dāng)新增數(shù)據(jù)時(shí),易于更新模型;
· 網(wǎng)絡(luò)的隱藏層明顯減少了對(duì)特征工程的需求;
· 是適用于計(jì)算機(jī)視覺(jué)、機(jī)器翻譯、情感分析和語(yǔ)音識(shí)別任務(wù)的最新技術(shù);
缺點(diǎn)
· 具有非常低的訓(xùn)練速度;
· 需要消耗巨大的計(jì)算資源;
· 需要特征縮放;
· 結(jié)果不易解釋或說(shuō)明;
· 需要大量的訓(xùn)練數(shù)據(jù),因?yàn)樗獙W(xué)習(xí)大量的參數(shù);
· 在非圖像、非文本、非語(yǔ)音的任務(wù)中優(yōu)于Boosting算法;
· 非常靈活,帶有許多不同的體系結(jié)構(gòu)構(gòu)建塊,因此需要專業(yè)知識(shí)來(lái)設(shè)計(jì)體系結(jié)構(gòu);
D. 基于距離的K近鄰算法(K Nearest Neighbors – Distance Based)
優(yōu)點(diǎn)
· 訓(xùn)練速度較快;
· 不需要太多的參數(shù)調(diào)整;
· 結(jié)果可解釋,并易于說(shuō)明;
· 適用于小型數(shù)據(jù)集(小于10萬(wàn)個(gè)訓(xùn)練集)
缺點(diǎn)
· 預(yù)測(cè)精確度較低;
· 不適用于小型數(shù)據(jù)集;
· 需要選擇合適的距離函數(shù);
· 需要特征縮放;
· 預(yù)測(cè)速度隨數(shù)據(jù)集增大而加快;
· 分離信號(hào)和噪聲的效果不理想,在使用前需要去掉不相關(guān)的特征;
· 是內(nèi)存密集型的算法,因?yàn)樗梢员4嫠械挠^察結(jié)果;
· 不適用于處理高維度的數(shù)據(jù);
2. 分類 — 預(yù)測(cè)一個(gè)或多個(gè)類別的概率A. 邏輯回歸算法(logistic Regression)
優(yōu)點(diǎn)
· 善于對(duì)線性可分離數(shù)據(jù)進(jìn)行分類;
· 具有較高的訓(xùn)練速度和預(yù)測(cè)速度;
· 適用于小型數(shù)據(jù)集;
· 結(jié)果可解釋,并易于說(shuō)明;
· 當(dāng)新增數(shù)據(jù)時(shí),易于更新模型;
· 在正則化時(shí)可以避免過(guò)度擬合;
· 可以同時(shí)進(jìn)行2個(gè)類和多個(gè)類的分類任務(wù);
· 不需要參數(shù)調(diào)整(除非在正則化的時(shí)候,我們需要調(diào)整正則化參數(shù));
· 不需要特征縮放(正則化的時(shí)候除外);
· 如果數(shù)據(jù)集具有冗余特征,則線性回歸可能是不穩(wěn)定的;
缺點(diǎn)
· 不適用于非線性可分離數(shù)據(jù);
· 具有較低的預(yù)測(cè)精確度;
· 可能會(huì)出現(xiàn)過(guò)度擬合(見(jiàn)下面的正則化模型)
· 分離信號(hào)和噪聲的效果不理想,在使用前需要去掉不相關(guān)的特征;
· 不了解數(shù)據(jù)集中的特征交互;
B. 基于距離的支持向量機(jī)算法(Support Vector Machines – Distance based)
優(yōu)點(diǎn)
· 具有較高的預(yù)測(cè)精確度;
· 即使在高維度數(shù)據(jù)集上也不會(huì)產(chǎn)生過(guò)度擬合,因此它適用于具有多個(gè)特征的情況;
· 適用于小型數(shù)據(jù)集(小于10萬(wàn)個(gè)訓(xùn)練集);
· 適用于解決文本分類的問(wèn)題;
缺點(diǎn)
· 當(dāng)新增數(shù)據(jù)時(shí),不易更新模型;
· 屬于內(nèi)存高度密集型算法;
· 不適用于大型數(shù)據(jù)集;
· 需要選擇正確的內(nèi)核;
· 線性內(nèi)核對(duì)線性數(shù)據(jù)建模,運(yùn)行速度快;
· 非線性內(nèi)核可以模擬非線性邊界,運(yùn)行速度慢;
· 用Boosting代替!
C. 基于概率的樸素貝葉斯算法(Naive Bayes — Probability based)
優(yōu)點(diǎn)
· 在文本分類問(wèn)題上表現(xiàn)極佳;
· 具有較高的訓(xùn)練速度和預(yù)測(cè)速度;
· 在小型數(shù)據(jù)集上表現(xiàn)良好;
· 善于分離信號(hào)和噪聲;
· 在實(shí)踐中表現(xiàn)出良好的性能;
· 操作簡(jiǎn)單,易于實(shí)現(xiàn);
· 適用于小型數(shù)據(jù)集(小于10萬(wàn)個(gè)訓(xùn)練集);
· 關(guān)于特征的和潛在分布的獨(dú)立性避免了過(guò)度擬合;
· 如果這種獨(dú)立性的條件成立,那么樸素貝葉斯可以在更小的數(shù)據(jù)集上運(yùn)行,并且可以以更快的速度進(jìn)行訓(xùn)練;
· 不需要特征縮放;
· 不是內(nèi)存密集型算法;
· 結(jié)果可解釋,并易于說(shuō)明;
· 根據(jù)數(shù)據(jù)集的大小易于擴(kuò)展;
缺點(diǎn)
· 具有較低的預(yù)測(cè)精確度;
D. 基于距離的K近鄰算法( K Nearest Neighbors — Distance Based)
優(yōu)點(diǎn)
· 具有較高的訓(xùn)練速度;
· 無(wú)需太多參數(shù)調(diào)整;
· 結(jié)果可解釋,并易于說(shuō)明;
· 適用于小型數(shù)據(jù)集(小于10萬(wàn)個(gè)訓(xùn)練集);
缺點(diǎn)
· 預(yù)測(cè)精確度較低;
· 在小型數(shù)據(jù)集上表現(xiàn)不好;
· 需要選擇一個(gè)合適的距離函數(shù);
· 需要功能縮放;
· 預(yù)測(cè)速度隨著數(shù)據(jù)集增大而加快;
· 分離信號(hào)和噪聲的效果不理想,在使用前需要去掉不相關(guān)的特征;
· 是內(nèi)存密集型算法,因?yàn)樗梢员4嫠械挠^察結(jié)果;
· 不善于處理高維度的數(shù)據(jù);
E. 分類樹(shù)(Classification Tree)
I. 決策樹(shù)(Decision Tree)
優(yōu)點(diǎn)
· 具有較高的訓(xùn)練速度和預(yù)測(cè)速度;
· 善于獲取數(shù)據(jù)集中的非線性關(guān)系;
· 了解數(shù)據(jù)集中的特征交互;
· 善于處理數(shù)據(jù)集中出現(xiàn)的異常值;
· 善于在數(shù)據(jù)集中找到最重要的特征;
· 可以同時(shí)進(jìn)行2個(gè)類和多個(gè)類的分類任務(wù);
· 不需要特征縮放;
· 結(jié)果可解釋,并易于說(shuō)明;
缺點(diǎn)
· 預(yù)測(cè)速度較慢;
· 需要進(jìn)行參數(shù)的調(diào)整;
· 在小型數(shù)據(jù)集上表現(xiàn)不好;
· 分離信號(hào)和噪聲的效果不理想;
· 在實(shí)踐中很少使用,而是更多地使用集合樹(shù);
· 當(dāng)新增數(shù)據(jù)時(shí),不易更新模型;
可能會(huì)出現(xiàn)過(guò)度擬合(見(jiàn)下面的融合模型)
II.融合(RandomForest, XGBoost, CatBoost, LightGBM)
優(yōu)點(diǎn)
· 多重樹(shù)結(jié)構(gòu)整理預(yù)測(cè);
· 具有較高的預(yù)測(cè)精確度,在實(shí)踐中表現(xiàn)很好;
· 是Kaggle競(jìng)賽中推薦的算法;
· 善于獲取數(shù)據(jù)集中的非線性關(guān)系;
· 善于處理數(shù)據(jù)集中出現(xiàn)的異常值;
· 善于在數(shù)據(jù)集中找到最重要的特征;
· 能夠分離信號(hào)和噪聲;
· 無(wú)需特征縮放;
· 特別適用于高維度的數(shù)據(jù);
缺點(diǎn)
· 訓(xùn)練速度較慢;
· 預(yù)測(cè)速度較快;
· 結(jié)果不易解釋或說(shuō)明;
· 當(dāng)新增數(shù)據(jù)時(shí),不易更新模型;
· 需要調(diào)整參數(shù),但調(diào)整較為復(fù)雜;
· 在小型數(shù)據(jù)集上表現(xiàn)不好;
F. 深度學(xué)習(xí)(Deep Learning)
優(yōu)點(diǎn)
· 預(yù)測(cè)精確度較高,在實(shí)踐中表現(xiàn)良好;
· 可以獲取數(shù)據(jù)中非常復(fù)雜的底層模式;
· 適用于大型數(shù)據(jù)集和高維度數(shù)據(jù)集;
· 當(dāng)新增數(shù)據(jù)時(shí),易于更新模型;
· 網(wǎng)絡(luò)的隱藏層明顯減少了對(duì)特征工程的需求;
· 是適用于計(jì)算機(jī)視覺(jué)、機(jī)器翻譯、情感分析和語(yǔ)音識(shí)別任務(wù)的最新技術(shù);
缺點(diǎn)
· 訓(xùn)練速度較慢;
· 結(jié)果不易解釋或說(shuō)明;
· 需要消耗巨大的計(jì)算資源;
· 需要特征縮放;
· 需要大量的訓(xùn)練數(shù)據(jù),因?yàn)樗獙W(xué)習(xí)大量的參數(shù);
· 在非圖像、非文本、非語(yǔ)音的任務(wù)中優(yōu)于Boosting算法;
· 非常靈活,帶有許多不同的體系結(jié)構(gòu)構(gòu)建塊,因此需要專業(yè)知識(shí)來(lái)設(shè)計(jì)體系結(jié)構(gòu);
3. 聚類 — 將數(shù)據(jù)分類以便最大化相似性A. DBSCAN聚類算法(Density-Based Spatial Clustering of Applications with Noise)
優(yōu)點(diǎn)
· 可擴(kuò)展到大型數(shù)據(jù)集上;
· 善于噪聲檢測(cè);
· 無(wú)需預(yù)先知道聚類的數(shù)量;
· 可以發(fā)現(xiàn)任意形狀的聚類,不會(huì)假設(shè)聚類的形狀是球狀的;
缺點(diǎn)
· 如果整個(gè)數(shù)據(jù)集都是高密度區(qū)域,那么該算法不總是有效的;
· 需要調(diào)整密度參數(shù)epsilon和min_samples為正確的值,以便獲得好的效果;
B. Kmeans算法優(yōu)點(diǎn)
· 特別適于獲取底層數(shù)據(jù)集的結(jié)構(gòu);
· 算法簡(jiǎn)單,易于解釋;
· 適于預(yù)先知道聚類的數(shù)量;
缺點(diǎn)
· 如果聚類不是球狀的,并且大小相似,那么該算法不總是有效的;
· 需要預(yù)先知道聚類的數(shù)量,并需要調(diào)整k聚類的選擇以便獲得好的結(jié)果;
· 屬于內(nèi)存密集型的算法;
· 無(wú)法擴(kuò)展到大型數(shù)據(jù)集上;
4. Misc — 本文中未包含的模型降維算法(Dimensionality Reduction Algorithms);
聚類算法(Clustering algorithms);
· 高斯混合模型(Gaussian Mixture Model);
· 分層聚類(Hierarchical clustering);
計(jì)算機(jī)視覺(jué)(CV);
· 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks);
· 圖像分類(Image classification);
· 對(duì)象檢測(cè)(Object Detection)
· 圖像分割(Image segmentation)
自然語(yǔ)言處理(Natural Language Processing,NLP)
· 循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNNs,包括LSTM 和 GRUs)
強(qiáng)化學(xué)習(xí)(Reinforcement Learning)
融合模型融合模型是一種非常強(qiáng)大的技術(shù),有助于減少過(guò)度擬合,并通過(guò)組合來(lái)自不同模型的輸出以做出更穩(wěn)定的預(yù)測(cè)。融合模型是贏得Kaggle競(jìng)賽的一個(gè)重要工具,在選擇模型進(jìn)行融合時(shí),我們希望選擇不同類型的模型,以確保它們具有不同的優(yōu)勢(shì)和劣勢(shì),從而在數(shù)據(jù)集中獲取不同的模式。這種更明顯的多樣性特點(diǎn)使得偏差降低。我們還希望確保它們的性能是可以對(duì)比的,這樣就能確保預(yù)測(cè)的穩(wěn)定性。
我們?cè)谶@里可以看到,這些模型的融合實(shí)際上比任何單一的模型生成的損失都要低得多。部分的原因是,盡管所有的這些模型都非常擅長(zhǎng)預(yù)測(cè),但它們都能得到不同的正確預(yù)測(cè)結(jié)果,通過(guò)把它們組合在一起,我們能夠根據(jù)它們所有不同的優(yōu)勢(shì)組合成一個(gè)超級(jí)模型。
# 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:使用隨機(jī)選擇的不同數(shù)據(jù)子集訓(xùn)練多個(gè)基礎(chǔ)模型,并進(jìn)行替換。讓基礎(chǔ)模型對(duì)最終的預(yù)測(cè)進(jìn)行投票。常用于隨機(jī)森林算法(RandomForests);
Boosting:迭代地訓(xùn)練模型,并且在每次迭代之后更新獲得每個(gè)訓(xùn)練示例的重要程度。常用于梯度增強(qiáng)算法(GradientBoosting);
Blending:訓(xùn)練許多不同類型的基礎(chǔ)模型,并在一個(gè)holdout set上進(jìn)行預(yù)測(cè)。從它們的預(yù)測(cè)結(jié)果中再訓(xùn)練一個(gè)新的模型,并在測(cè)試集上進(jìn)行預(yù)測(cè)(用一個(gè)holdout set堆疊);
Stacking:訓(xùn)練多種不同類型的基礎(chǔ)模型,并對(duì)數(shù)據(jù)集的k-folds進(jìn)行預(yù)測(cè)。從它們的預(yù)測(cè)結(jié)果中再訓(xùn)練一個(gè)新的模型,并在測(cè)試集上進(jìn)行預(yù)測(cè);
模型對(duì)比權(quán)重和偏差讓我們可以用一行代碼來(lái)跟蹤和比較模型的性能表現(xiàn)。選擇要測(cè)試的模型后,對(duì)其進(jìn)行訓(xùn)練并添加wandb.log({‘score’: cv_score})來(lái)記錄模型的運(yùn)行狀態(tài)。完成訓(xùn)練之后,你就可以在一個(gè)簡(jiǎn)單的控制臺(tái)中對(duì)比模型的性能了!
# 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})
就這樣,在有了所有的工具和算法之后,就可以為你的問(wèn)題選擇正確的模型了!
模型的選擇可能是非常復(fù)雜的,但我希望本指南能給你帶來(lái)一些啟發(fā),讓你找到模型選擇的好方法。
原文鏈接:
https://lavanya.ai/2019/09/18/part-ii-whirlwind-tour-of-machine-learning-models/
所有CSDN 用戶都可參與投票和抽獎(jiǎng)活動(dòng)
加入福利群,每周還有精選學(xué)習(xí)資料、技術(shù)圖書(shū)等福利發(fā)送
以上就是關(guān)于pos機(jī)產(chǎn)品你選對(duì)了嗎,機(jī)器學(xué)習(xí)模型五花八門不知道怎么選的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)產(chǎn)品你選對(duì)了嗎的知識(shí),希望能夠幫助到大家!
