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