每個機器學習項目都有自己獨特的形式。對于每個項目,都可以遵循一組預定義的步驟。盡管沒有嚴格的流程,但是可以提出一個通用模板。
準備問題
不僅是機器學習,任何項目的第一步都是簡單地定義當前的問題。您首先需要了解背景和需要解決的問題。然后設計機器學習算法來有效地解決這一問題。一旦清楚地了解了問題,就可以解決它。
加載庫
我將繼續使用Python。第一步是加載或導入所需的所有庫和包。一些非常基本且幾乎必要的機器學習軟件包是-NumPy,Pandas,Matplotlib和Scikit-Learn。
加載數據集
加載庫后,您需要加載數據。Pandas具有執行此任務的非常簡單的功能-pandas.read_csv。read.csv函數不僅限于csv文件,而且還可以讀取其他基于文本的文件。其他格式也可以使用pandas讀取功能(例如html,json,pickled文件等)讀取。需要牢記的一件事是,您的數據需要與當前工作目錄位于同一工作目錄中,否則您將需要在函數中提供以“ /”為前綴的完整路徑。
匯總數據
現在數據已加載并準備好進行操作。但是,您需要先檢查數據的外觀以及內容。首先,您需要查看數據具有多少行和列,以及每一列的數據類型都是什么(pandas認為它們是什么類型)。
快速查看數據類型和形狀的方法是— pandas.DataFrame.info。這將告訴您數據框具有多少行和列以及它們包含哪些數據類型和值。
描述性統計
顧名思義,描述性統計數據以統計數據的形式描述數據-均值,標準差,四分位數等。獲得完整描述的最簡單方法是pandas.DataFrame.describe。您可以輕松確定數據是否需要縮放或需要添加缺失值,等等。(稍后會對此進行更多介紹)。
數據可視化
數據可視化非常重要,因為它們是了解數據和規律(即使它們不存在)的最快方法。您的數據可能具有數千個樣本,甚至更多。無法直接分析所有數值數據。如果需要可視化,可以使用Matplotlib和Seaborn這樣強大的可視化程序包。
使用Seaborn的Matplotlib進行可視化可用于檢查特征內的相關性以及與目標的關系,可以使用散點圖,直方圖和箱形圖來檢查分布和偏度等。甚至pandas都有自己的內置可視化庫-pandas.DataFrame.plot,其中包含條形圖,散點圖,直方圖等。
Seaborn本質上是經過改造的matplotlib,因為它建立在matplotlib的基礎上,使繪圖更加美觀,并且繪圖速度更快。熱圖和對圖(pairplot)是Seaborn快速繪制整個數據的可視化以檢查多重共線性,缺失值等特征的示例。
一種獲取大多數上述數據描述性和推斷性信息的統計數據的非常有效的方法是Pandas Profiling。它會生成數據的精美報告,其中包含上述所有詳細信息,使您能夠一次分析所有數據。
準備數據
知道了數據的內容和規律,就需要對其進行轉換,以使其適合算法來更有效地工作,以便提供更準確,更精確的結果。這就是數據預處理,這是任何ML項目中最重要,最耗時的階段。
數據清洗
現實生活中的數據不能很好地安排在沒有異常的數據框中并呈現給您。數據通常具有很多所謂的異常,例如缺失值,許多格式不正確的特征,不同比例的特征等。所有這些都需要手動處理,這需要大量時間和編碼技巧(主要是python和pandas:D )!
Pandas具有各種功能來檢查異常,例如pandas.DataFrame.isna以檢查NaN等值。您可能還需要轉換數據格式以擺脫無用的信息,例如刪除“ Mr.”和“ Mrs” ”(如果存在單獨的性別特征)。您可能需要使用pandas.DataFrame.replace函數以整個數據框的標準格式獲取它,或使用pandas.DataFrame.drop刪除不相關的特征。
特征選擇
特征選擇是選擇一定數量的最有用特征的過程,這些特征將用于訓練模型。這樣做是為了在大多數特征對整體差異的貢獻不足時縮小尺寸。如果您的數據中有300個特征,而前120個特征可以解釋97%的方差,那么用這么多無用的特征來充實您的算法是沒有意義的。減少特征不僅可以節省時間,還可以節省成本。
一些流行的特征選擇技術包括SelectKBest,特征消除方法(例如RFE(遞歸特征消除))和嵌入式方法(例如LassoCV)。
特征工程
所有功能可能都不處于最佳狀態。特征工程的意思是通過使用一組函數可以將它們轉換為不同的相關的數據。這是為了增加與目標的相關性,從而增加準確性/分數。其中一些轉換與縮放有關,例如StandardScaler,Normalizer,MinMaxScaler等。甚至可以通過將一些特征進行線性/二次組合來增加特征,以提高性能。對數轉換,交互作用和Box-Cox轉換是數字數據的一些有用轉換。
對于分類數據,有必要將類別編碼為數字,以便算法可以從中識別出來。一些最有用的編碼技術是– LabelEncoder,OneHotEncoder和Binarizer。
評估算法
數據準備就緒后,請繼續檢查各種回歸/分類算法的性能(基于問題的類型)。您可以首先創建一個基本模型來設置要進行比較的基準。
拆分驗證數據集
訓練完模型后,還需要對其進行驗證,以查看它是否真的對數據進行了概括或擬合過度/不足。手中的數據可以預先分為訓練集和驗證集。這種拆分具有多種技術-訓練測試拆分,隨機排序等。您還可以對整個數據集運行交叉驗證,以進行更可靠的驗證。KFold交叉驗證,Leave-One-Out-CV是最流行的方法。
測試選項和評估指標
基于一組需要定義的評估指標來評估模型。對于回歸算法,一些常用指標是MSE和R Square。
與分類有關的評估指標要多樣化得多-混淆矩陣,F1得分,AUC / ROC曲線等。對每種算法的這些得分進行比較,以檢查哪些算法的性能優于其余算法。
抽查算法
拆分數據并定義評估指標后,您需要在for循環中運行一組算法,以檢查哪個算法表現最佳。簡短的算法列表可以很好地解決您的問題,這是一個反復的嘗試,這樣您便可以加速研究并進一步調優它們。
可以制作流水線,并可以混合使用線性和非線性算法來檢查性能。
比較算法
現場運行測試工具后,您可以輕松查看哪些工具最適合您的數據。始終獲得高分的算法應該是您的目標。然后,您可以選擇最好的,并對其進行進一步調整以提高其性能。
提高準確性
擁有性能最佳的算法之后,可以調整它們的參數和超參數以提供最好的結果。也可以連接多種算法。
算法調整
維基百科指出“超參數調整是為機器學習算法選擇一組最佳超參數”。超參數是無法學習的參數,必須在運行算法之前進行設置。超參數的一些例子包括邏輯回歸的損失,隨機梯度下降的損失以及SVM的核。
這些參數可以在數組中傳遞,并且算法可以遞歸運行,直到找到完美的超參數。這可以通過諸如網格搜索和隨機搜索之類的方法來實現。
組合
可以將多種機器學習算法組合在一起,以形成一個更健壯和更優化的模型,該模型相比于單個算法可以提供更好的預測。這被稱為合奏。
有2種類型常見的合奏-套袋(Bootstrap-Aggregating)和Boosting。例如,“隨機森林”是一種Bagging集成體,它組合了多個決策樹并獲取輸出的總和。
另一方面,Boosting通過適應性學習的方式組合了一組弱學習方式:集合中的每個模型都得到了擬合,從而更加重視數據集中實例中序列中先前模型存在較大錯誤的實例。XGBoost,AdaBoost,CatBoost是一些例子。
完成模型
驗證數據集的預測
當您獲得具有最佳超參數和合奏的最佳性能模型時,可以在未知的測試數據集上對其進行驗證。
在訓練集上創建獨立模型
驗證后,對整個數據集運行一次模型,以確保在訓練/測試時不會遺漏任何數據點。現在,您的模型處于最佳狀態。
保存模型以備后用
有了準確的模型后,您仍然需要保存并加載它,以備將來需要時使用。完成此操作的最常用方法是Pickle。
以上就是本文的內容。當然,在機器學習方面,這還不是全部。但這可以用作良好的路線圖。對于不同類型的數據/問題,需要自己發揮。在下面評論您的想法,或說一說您是否了解更好和更關鍵的技術。
半小時訓練億級規模知識圖譜,亞馬遜AI開源知識圖譜嵌入表示框架DGL-KE
中國頂尖的技術社區們在一個群里,會聊什么…
京東智能內容創作算法的演進與實踐:基于關鍵詞自動生成摘要
馬化騰、馬云并列成為中國首富;百度回應“將上線電商直播”;.NET 5 Preview 2 發布 | 極客頭條
程序員職場背鍋甩鍋指南
警惕!新騙術出現:這些虛假二維碼生成器已成功盜取 4.6 萬美元!
“出道” 5 年采用率達 78%,Kubernetes 的成功秘訣是什么?
-
算法
+關注
關注
23文章
4625瀏覽量
93128 -
機器學習
+關注
關注
66文章
8429瀏覽量
132854 -
數據可視化
+關注
關注
0文章
468瀏覽量
10336
發布評論請先 登錄
相關推薦
評論