解決數(shù)據(jù)科學(xué)項目的六個基本技巧
譯文【51CTO.com快譯】數(shù)據(jù)科學(xué)項目專注于通過使用數(shù)據(jù)解決社會或商業(yè)問題。對于該領(lǐng)域的初學(xué)者來說,解決數(shù)據(jù)科學(xué)項目可能是一項非常有挑戰(zhàn)性的任務(wù)。根據(jù)要解決的數(shù)據(jù)問題的類型,你需要具備不同的技能。
在本文中,你將學(xué)習(xí)一些技術(shù)技巧,這些技巧可以幫助你在處理不同的數(shù)據(jù)科學(xué)項目時提高工作效率并實現(xiàn)你的目標(biāo)。
1. 花時間在數(shù)據(jù)準(zhǔn)備上
數(shù)據(jù)準(zhǔn)備是清理原始數(shù)據(jù)并將其轉(zhuǎn)換為可用于分析和創(chuàng)建預(yù)測模型的有用特征的過程。這一步至關(guān)重要,可能很難完成。這將花費(fèi)你很多時間(數(shù)據(jù)科學(xué)項目的 60%)。
數(shù)據(jù)是從不同來源以不同格式收集的,這使你的數(shù)據(jù)科學(xué)項目與其他項目非常獨(dú)特,你可能需要應(yīng)用不同的技術(shù)來準(zhǔn)備數(shù)據(jù)。
記住,如果你的數(shù)據(jù)沒有準(zhǔn)備好,不要期望在你的模型中得到最好的結(jié)果。
以下是在數(shù)據(jù)準(zhǔn)備中可以執(zhí)行的活動列表:
- 探索性數(shù)據(jù)分析:分析和可視化你的數(shù)據(jù)。
- 數(shù)據(jù)清理:識別和糾正數(shù)據(jù)中的錯誤。例如缺失值
- 特征選擇:識別與任務(wù)最相關(guān)的特征。
- 數(shù)據(jù)轉(zhuǎn)換:改變特征/變量的規(guī)?;蚍植肌?/li>
- 特征工程:從可用數(shù)據(jù)中推導(dǎo)出新變量。
- 拆分?jǐn)?shù)據(jù):準(zhǔn)備你的訓(xùn)練和測試集,例如 75% 用于訓(xùn)練和 25% 用于測試
2.交叉驗證訓(xùn)練
交叉驗證是評估預(yù)測模型有效性的統(tǒng)計方法。這是一項非常有用的技術(shù),因為它可以幫助您避免模型中的過擬合問題。建議在數(shù)據(jù)科學(xué)項目的早期階段建立交叉驗證技術(shù)。
???
你可以嘗試不同的交叉驗證技術(shù),如下所述。非常推薦使用 K-fold交叉驗證技術(shù)。
- 留一 交叉驗證
- 留p 交叉驗證
- 堅持交叉驗證
- 重復(fù)隨機(jī)抽樣驗證
- k-fold交叉驗證
- 分層 k-fold交叉驗證
- 時間序列交叉驗證
- 嵌套交叉驗證
3.訓(xùn)練許多算法并運(yùn)行許多實驗
除了使用不同的算法訓(xùn)練數(shù)據(jù)之外,沒有其他方法可以找到具有更高性能的最佳預(yù)測模型。你還需要運(yùn)行不同的實驗(很多實驗)來找到能夠產(chǎn)生最佳性能的最佳超參數(shù)值。
建議嘗試多種算法以了解模型性能如何變化,然后選擇產(chǎn)生最佳結(jié)果的算法。
???
4. 調(diào)整你的超參數(shù)
超參數(shù)是一個參數(shù),其值用于控制算法的學(xué)習(xí)過程。超參數(shù)優(yōu)化或調(diào)整是為學(xué)習(xí)算法選擇一組最佳超參數(shù)的過程,以提供最佳結(jié)果/性能。
以下是推薦使用的技術(shù)列表:
- 隨機(jī)搜索
- 網(wǎng)格搜索
- Scikit 優(yōu)化
- 奧普圖納
- 超視距
- Keras 調(diào)諧器
這是一個簡單的示例,展示了如何使用隨機(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、利用云平臺
我們的本地機(jī)器無法處理大型數(shù)據(jù)集的訓(xùn)練來創(chuàng)建預(yù)測模型。該過程可能非常緩慢,你將無法運(yùn)行所需數(shù)量的實驗。云平臺可以幫你解決這個問題。
簡單來說,云平臺是指通過互聯(lián)網(wǎng)提供不同服務(wù)和資源的操作系統(tǒng)。與本地機(jī)器相比,它們還具有強(qiáng)大的計算能力,可以幫助你使用大型數(shù)據(jù)集訓(xùn)練模型并在短時間內(nèi)運(yùn)行大量實驗。
例如、谷歌云、Azure、AWS等,這些平臺中的大多數(shù)都帶有免費(fèi)試用版,你可以嘗試使用并選擇適合你的數(shù)據(jù)科學(xué)項目并可以提供專門服務(wù)的試用版。
6. 應(yīng)用集成方法
有時多個模型比一個更好,以獲得良好的性能。你可以通過應(yīng)用將多個基本模式組合到一個組模型中的集成方法來實現(xiàn)這一點(diǎn),從而比單獨(dú)使用每個模型表現(xiàn)得更好。
???
這是一個投票分類器算法的簡單示例,該算法結(jié)合了多個算法來進(jìn)行預(yù)測。
# 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)于單個模型。
希望以上這些技術(shù)技巧對你的數(shù)據(jù)科學(xué)項目非常有用。掌握這些技術(shù)需要大量的實踐和實驗,然后才能實現(xiàn)數(shù)據(jù)科學(xué)項目的目標(biāo)并獲得最佳結(jié)果。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】