解決數(shù)據(jù)科學(xué)項(xiàng)目的六個(gè)基本技巧
譯文【51CTO.com快譯】數(shù)據(jù)科學(xué)項(xiàng)目專注于通過使用數(shù)據(jù)解決社會(huì)或商業(yè)問題。對(duì)于該領(lǐng)域的初學(xué)者來說,解決數(shù)據(jù)科學(xué)項(xiàng)目可能是一項(xiàng)非常有挑戰(zhàn)性的任務(wù)。根據(jù)要解決的數(shù)據(jù)問題的類型,你需要具備不同的技能。
在本文中,你將學(xué)習(xí)一些技術(shù)技巧,這些技巧可以幫助你在處理不同的數(shù)據(jù)科學(xué)項(xiàng)目時(shí)提高工作效率并實(shí)現(xiàn)你的目標(biāo)。
1. 花時(shí)間在數(shù)據(jù)準(zhǔn)備上
數(shù)據(jù)準(zhǔn)備是清理原始數(shù)據(jù)并將其轉(zhuǎn)換為可用于分析和創(chuàng)建預(yù)測(cè)模型的有用特征的過程。這一步至關(guān)重要,可能很難完成。這將花費(fèi)你很多時(shí)間(數(shù)據(jù)科學(xué)項(xiàng)目的 60%)。
數(shù)據(jù)是從不同來源以不同格式收集的,這使你的數(shù)據(jù)科學(xué)項(xiàng)目與其他項(xiàng)目非常獨(dú)特,你可能需要應(yīng)用不同的技術(shù)來準(zhǔn)備數(shù)據(jù)。
記住,如果你的數(shù)據(jù)沒有準(zhǔn)備好,不要期望在你的模型中得到最好的結(jié)果。
以下是在數(shù)據(jù)準(zhǔn)備中可以執(zhí)行的活動(dòng)列表:
- 探索性數(shù)據(jù)分析:分析和可視化你的數(shù)據(jù)。
- 數(shù)據(jù)清理:識(shí)別和糾正數(shù)據(jù)中的錯(cuò)誤。例如缺失值
- 特征選擇:識(shí)別與任務(wù)最相關(guān)的特征。
- 數(shù)據(jù)轉(zhuǎn)換:改變特征/變量的規(guī)模或分布。
- 特征工程:從可用數(shù)據(jù)中推導(dǎo)出新變量。
- 拆分?jǐn)?shù)據(jù):準(zhǔn)備你的訓(xùn)練和測(cè)試集,例如 75% 用于訓(xùn)練和 25% 用于測(cè)試
2.交叉驗(yàn)證訓(xùn)練
交叉驗(yàn)證是評(píng)估預(yù)測(cè)模型有效性的統(tǒng)計(jì)方法。這是一項(xiàng)非常有用的技術(shù),因?yàn)樗梢詭椭苊饽P椭械倪^擬合問題。建議在數(shù)據(jù)科學(xué)項(xiàng)目的早期階段建立交叉驗(yàn)證技術(shù)。
???
你可以嘗試不同的交叉驗(yàn)證技術(shù),如下所述。非常推薦使用 K-fold交叉驗(yàn)證技術(shù)。
- 留一 交叉驗(yàn)證
- 留p 交叉驗(yàn)證
- 堅(jiān)持交叉驗(yàn)證
- 重復(fù)隨機(jī)抽樣驗(yàn)證
- k-fold交叉驗(yàn)證
- 分層 k-fold交叉驗(yàn)證
- 時(shí)間序列交叉驗(yàn)證
- 嵌套交叉驗(yàn)證
3.訓(xùn)練許多算法并運(yùn)行許多實(shí)驗(yàn)
除了使用不同的算法訓(xùn)練數(shù)據(jù)之外,沒有其他方法可以找到具有更高性能的最佳預(yù)測(cè)模型。你還需要運(yùn)行不同的實(shí)驗(yàn)(很多實(shí)驗(yàn))來找到能夠產(chǎn)生最佳性能的最佳超參數(shù)值。
建議嘗試多種算法以了解模型性能如何變化,然后選擇產(chǎn)生最佳結(jié)果的算法。
???
4. 調(diào)整你的超參數(shù)
超參數(shù)是一個(gè)參數(shù),其值用于控制算法的學(xué)習(xí)過程。超參數(shù)優(yōu)化或調(diào)整是為學(xué)習(xí)算法選擇一組最佳超參數(shù)的過程,以提供最佳結(jié)果/性能。
以下是推薦使用的技術(shù)列表:
- 隨機(jī)搜索
- 網(wǎng)格搜索
- Scikit 優(yōu)化
- 奧普?qǐng)D納
- 超視距
- Keras 調(diào)諧器
這是一個(gè)簡(jiǎn)單的示例,展示了如何使用隨機(jī)搜索來調(diào)整超參數(shù)。
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import RandomizedSearchCV # instatiate logistic regression logistic = LogisticRegression() # define search space distribution = dict(C=uniform(loc=0, scale=4), penalty = ['l1','l2']) # define search clf = RandomizedSearchCV(logistic, distributions, random_state=0) # execute search search = clf.fit(X,y) # print best parameters print(search.best_params_)
{'C':2, '懲罰':'l1}
5、利用云平臺(tái)
我們的本地機(jī)器無法處理大型數(shù)據(jù)集的訓(xùn)練來創(chuàng)建預(yù)測(cè)模型。該過程可能非常緩慢,你將無法運(yùn)行所需數(shù)量的實(shí)驗(yàn)。云平臺(tái)可以幫你解決這個(gè)問題。
簡(jiǎn)單來說,云平臺(tái)是指通過互聯(lián)網(wǎng)提供不同服務(wù)和資源的操作系統(tǒng)。與本地機(jī)器相比,它們還具有強(qiáng)大的計(jì)算能力,可以幫助你使用大型數(shù)據(jù)集訓(xùn)練模型并在短時(shí)間內(nèi)運(yùn)行大量實(shí)驗(yàn)。
例如、谷歌云、Azure、AWS等,這些平臺(tái)中的大多數(shù)都帶有免費(fèi)試用版,你可以嘗試使用并選擇適合你的數(shù)據(jù)科學(xué)項(xiàng)目并可以提供專門服務(wù)的試用版。
6. 應(yīng)用集成方法
有時(shí)多個(gè)模型比一個(gè)更好,以獲得良好的性能。你可以通過應(yīng)用將多個(gè)基本模式組合到一個(gè)組模型中的集成方法來實(shí)現(xiàn)這一點(diǎn),從而比單獨(dú)使用每個(gè)模型表現(xiàn)得更好。
???
這是一個(gè)投票分類器算法的簡(jiǎn)單示例,該算法結(jié)合了多個(gè)算法來進(jìn)行預(yù)測(cè)。
# instantiate individual models clf_1 = KNeighborsClassifier() clf_2 = LogisticRegression() clf_3 = DecisionTreeClassifier() # Create voting classifier voting_ens = VotingClassifier(estimators=[('knn',clf_1), ('lr',clf_2),('dt',clf_3)], voting='hard') # Fit and predict with the individual model and ensemble model. for clf in (clf_1,clf_2,clf_3, voting_ens): clf.fit(x_train,y_train) y_pred = clf.predict(X_test) print(clf.__class__.__name__, accuracy_score(y_test,y_pred))
???
結(jié)果表明 VotingClassfier 的性能優(yōu)于單個(gè)模型。
希望以上這些技術(shù)技巧對(duì)你的數(shù)據(jù)科學(xué)項(xiàng)目非常有用。掌握這些技術(shù)需要大量的實(shí)踐和實(shí)驗(yàn),然后才能實(shí)現(xiàn)數(shù)據(jù)科學(xué)項(xiàng)目的目標(biāo)并獲得最佳結(jié)果。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】