一、模型開發的一般步驟
1.?明確研究問題
確定問題的組成和結果,明晰問題是分類問題還是回歸問題
2. 決定系統總體架構
①理解數據:采集(爬取)數據,生成(導入)數據,進行數據清洗操作,包括數據預處理:缺失值處理、重復值處理、轉換數據類型、規整字符串、進行數據歸一化/標準化等。
②特征工程:對所采集的數據根據問題分析所采取的特征、確定所需的特征值,計算各個特征和標簽的相關性,查看標簽對應的相關系數,并根據相關系數的大小選擇特征列作為模型輸入。
③建立數據集:選取訓練數據和測試數據的特征和標簽,劃分好訓練數據集與測試數據集。
④構建神經網絡:根據問題和輸入設計好神經網絡架構。
⑤選擇算法:選擇合適的機器學習算法,導入算法或自寫算法。
⑥選擇超參數:選擇、初始化好計算過程里相應的超參數。
⑦訓練模型:構建好模型,開始訓練。
3.?模型評估
①對模型的預測結果進行相應的精度評估。
②對模型的精度、誤差等進行相應的優化,采取對應的優化方案,例如擴大神經網絡、進行正則化等等,不斷循環進行,使模型的精度更高,預測結果更好。
文本分類實例:
·?構建分類器來識別垃圾郵件和非垃圾郵件
思路:
· 訓練一個監督學習算法,輸入特征x為電子郵件的相關特征,輸出標簽y為1或0,表示電子郵件是否是垃圾郵件。
·?取英語或其它詞典中排名前10,000的單詞(字詞),并使用它們來定義特征x_1,x_2...x_10,000。
例如,對于右邊的電子郵件,取單詞表設置各單詞的特征為0或1或其出現的具體次數。
給定這個單詞表各單詞出現頻率或次數的特征值,可以訓練分類算法在給定x的情況下預測y值。
·?獲取數據方式例子:創建大量虛假電子郵件地址,故意交到垃圾郵件發送者手中,以期獲得大量垃圾郵件數據。或者基于電子郵件路由開發更復雜的數據獲取方式。
·?在檢測特征值、提取特征單詞表的過程中,從電子郵件正文里可提出更復雜的功能。
不同的檢測算法、不同的特征值提取方式、不同的數據獲取方式都可能導致最終結果和模型效果的不同。
二、開發過程中的模型診斷
錯誤分析:
假設有500條交叉驗證實例,模型算法錯誤分類了500個實例的100個;
※需手動查看這100個錯誤實例,并深入了解算法出錯的地方及可能原因。
·?從交叉驗證集中找到一組算法錯誤分類的實例,并嘗試把它們分組為共同的主題、共同的屬性或共同的特征——找清楚導致分類錯誤所可能的原因。
·?例如,很多被錯誤分類的垃圾郵件是藥品銷售類別,那么實際上通過這些示例并手動計算此分類中有多少垃圾郵件是藥品垃圾郵件,并估計藥品垃圾郵件分類錯誤的原因;如果分類錯誤可能是由于拼寫錯誤,那么也會檢查計算錯誤分類的示例有多少個是拼寫錯誤引起的。
·?如果錯誤分類的數據不僅僅有100個而是更大(例如10,000個),那么通常會抽取大約一定數目的子集,在這些子集上進行查看以確定錯誤分類數據的情況。
·?如果經過此分析,發現很多錯誤集中于某一類的示例,那么可能下一步的工作就是收集更多該類型的示例訓練數據,或者潤色與該類相關的特征值、添加新功能,或者修改優化對該類數據的分析算法。
通過學習曲線反映的偏差方差分析能夠反映出模型的一些錯誤,以提供一些“開發更大神經網絡”或“收集更多數據”的工作線索。