03 機器學習開發流程

2021-09-20 01:41:46 字數 3755 閱讀 9997

上一章《02 機器學習理性認識》讓大家對機器學習的相關演算法有了乙個初步的認識和了解。

筆者的寫作思路是先把機器學習的每個大分類,以及大分類下的中小分類做乙個總體介紹。當後續對具體的演算法模型講解後,大家再回過頭對照今天講過的這些分類,你們會發現整個文集提供給你們的是乙個完整的知識體系。

昨天的內容發布後有些朋友給了反饋,雖然筆者認為已經講得很通俗易懂,但是很多人希望更細緻一些。所以一方面昨天晚上對《02 機器學習理性認識》一文又做了更新,另一方面筆者決定再花一章的時間,對讀者們的問題進行解答。

本章內容針對大家提出的問題,對以下知識點進行深入**:

1、機器學習的開發流程具體有哪些步驟?

2、不會爬蟲的話資料從何而來?

3、遇到某一些特定資料應該做哪些處理?

4、我們如何評價乙個模型的好壞?

=== 機器學習開發流程 ===

1、資料收集

機器學習最關鍵的是資料,有了資料我們才能知道選擇什麼樣的模型,選擇什麼樣的引數,怎麼對模型進行調優,得到我們最後想要的結果。因此資料蒐集是一件相對比較關鍵的任務,一般需要我們從企業現有的資料中找出有用的資料。

我們也不能在拿到資料後什麼都不做,第一時間就將資料扔給機器進行處理(直接用api對資料進行分析)。這樣的處理結果會非常差。一般而言做完資料分析後,工程師需要寫乙份報告,其中涉及:為什麼選這些模型,為什麼要選這些資料。所以當我們拿到資料後,首先一定要去閱讀這些資料集的資料描述(data description)。資料描述會對每乙個資料的特徵以及目標做乙個詳細的解釋。如果是參加比賽,那麼比賽的資料一定會把需要**的目標targer告訴你。而在實際的工作中,我們要人為得從繁雜的資料庫中找到需要的特徵和目標作為最終的**值。所以如果不讀資料描述,連目標都不確定,如何能建立起乙個合適的模型?

資料蒐集不是簡單獲取資料的步驟,更重要的是你要了解這批資料。

2、 資料預處理

企業中一般有一些資料庫維護的運維人員,他們對於資料的定義和專門做機器學習的人不一樣。資料庫中的資料往往會存在很多缺失值,甚至是一些邏輯混亂的資料。我們必須對這些資料的異常充分了解後,才能算完成了資料收集的操作。

比如我們設姓別屬性,0代表男,1代表女。資料庫中有時會出現00或01這樣的資料。如果人為得去看,很明顯可以識別出00代表男,01代表女。而如果是機器拿來學習,它會以為目標有4個分類(0,1,00,01)。我們要將資料都轉化成0和1,再交給機器處理。

3、特徵提取

特徵提取分為兩個步驟:第

一、特徵選擇,第

二、特徵降維。ps:對於特徵的定義在《02 機器學習理性認識》中詳細說明過,不再贅述。

特徵選擇:資料集中可能包含n個特徵,從中選出k個我們覺得比較重要的特徵。

特徵降維:為了徹底說明白這個問題,我繞乙個圈。

----- 插入一段高能 ------

假如我們已經獲取到了乙個造物主公式,對於每乙個輸入,我們都能夠得到乙個完美的輸出,和實際情況百分百得匹配。

假設這個造物主公式中:y = θ0+θ1x1+ … + θnxn;

目標值y = **某肥宅少年的一生是否能夠迎娶白富美。

在造物主的世界中有無數字肥宅少年,為了**他們的人生最終是否能夠迎娶了白富美,造物主蒐集了他們一生的所有的特徵。比如:肥宅少年的健康程度、皮囊好看的程度、家境富有的程度等等,甚至連肥宅少年是否喜歡吃榴蓮這一微不足道的特徵也蒐集在內。這些特徵就是造物主公式中的 x1,x2…xn。

造物主隨機取出大量的肥宅少年樣本(包含特徵值和結果),投入到機器學習的模型中進行分析,最後計算機經過長時間的運算,最終得出了θ0~θn的值,假設θ1>θ2>…>θn ,即條件影響因子逐漸變小,整理每個條件因子對應的特徵有了如下的報告:

x1:肥宅少年健康的程度。最重要的考慮因素。

x2:肥宅少年皮囊好看的程度。第二重要的考慮因素。

x3:肥宅少年家境富有的程度。第三重要的考慮因素。

x4:肥宅少年自身才華的程度。第四重要的考慮因素。

...xn:肥宅少年是否喜歡吃榴蓮。最不重要的因素。

雖然機器學習分析出了特徵的重要性排序,同時計算出了他們對應的θ值。但是造物主也不確定本次得到的公式是好是壞,於是造物主決定再測試一下。

造物主又從世界中隨機取出大量的肥宅少年測試樣本(測試集),將他們輸入到公式:y = θ0+θ1x1+ … + θnxn中,如果輸出的結果和他們最終是否贏取了白富美的結果擬合度很高,說明這個公式很成功。

將造物主公式進行泰勒展開可以得到如下的線性特徵:

z1=α11x1+α12x2+ … + α1nxn肥宅少年健康的程度

z2=α12x1+α22x2+ … + α2nxn 肥宅少年皮囊好看的程度

…zn=αn1x1+αn2x2+ … + αnnxn 肥宅少年是否喜歡吃榴蓮

-----------------------

很多企業在特徵處理中遇到了一些問題,由於資料量大,其中特徵可能有上千個,企業能力有限資料清洗不過來。於是他們將所有的特徵全部放入機器中進行學習,這樣一來最大的問題就是運算速度會無比緩慢。根據經驗,如果跑2000個特徵需要跑1~2天,而且處理分類的時候會特別痛苦,估計會花個5天左右。所以要形成一種自己的特徵處理風格,這種風格的形成需要靠大量的實戰去積累,日後再說。

4、模型構建

模型構建的第一步,是保證輸入機器的資料不會報錯,否則需要返回資料預處理的步驟。

模型構建這步需要選擇合適的演算法。重新舉一下建造金茂大廈的例子:

演算法就是圖紙,資料是蓋樓的磚,最終模型是建立出來的房子。我們希望建立出來的模型是金茂大廈,如果圖紙蓋出來的模型是平房,那麼我們需要調正圖紙的結構,直到蓋出來的模型是高樓為止。此後我們就選擇這張能夠蓋出高樓的圖紙去建立金茂大廈。

實際工作中最耗時的是資料預處理和特徵提取的步驟,也許會占用50%到70%的時間。而模型構建的耗時主要在於你使用api來處理資料的速度,即取決於你對api熟練運用的程度。

5、模型測試

模型構建完成以後,我們要對模型不斷得調優。此時的資料在模型訓練和模型測試上形成了乙個閉環。

如果我們分析的資料來自乙個接觸ai領域的新興行業,我們對行業裡的資料沒有乙個大致的認知,這種情況下我們需要盡早得進入這個閉環的步驟。因為我們無法知道會跑出什麼樣的資料,那麼在做了簡單的資料預處理及特徵提取後,我們就要讓資料盡快跑出來形成乙個最初的模型,然後交給測試機和模型訓練不斷調優。

如果我們分析的資料來自乙個成熟的行業,比如金融行業,金融行業的風控部門對模型建立得已經相當完善了。當我們入手一組特徵資料後,我們對這些特徵相當熟悉,我們知道跑出來的結果肯定在95%~97%之間。這種情況下為了讓模型更好得調優,就要花更多時間在資料預處理和特徵提取這兩個環節。

=== 機器學習的資料集 ===

如果不懂得爬蟲,又想盡快進入機器學習的研究,那麼可以從以下**中獲取資料。

天池資料首頁。

天池比賽資料。定個小目標,參加3~5次比賽,能進入前10%就算合格了。

kaggle比賽資料。

亞馬遜資料。

搜狗實驗室

重點介紹:

加州大學提供的機器學習入門級資料,基本都清洗好了,可以直接放到機器裡跑。

default tasks:基於目標提出的任務。 其中classification是做分類的資料(資料是離散的),regression是做回歸的資料(資料是連續的),clustering是做聚類的資料。對應的是y值。

attribute type:屬性特徵。其中categorical是經過分類的資料, numerical是數值型別資料,mixed是混合型別資料。對應的是x1,x2…xn的值。

=== 結語 ===

開篇提到的4個問題:

1、機器學習的開發流程具體有哪些步驟?

2、不會爬蟲的話資料從何而來?

3、遇到某一些特定資料應該做哪些處理?

4、我們如何評價乙個模型的好壞?

python機器學習的開發流程

標準機器學習的開發程式設計流程 1 獲取資料 爬蟲 資料載入 業務部門獲取 2 資料建模 摘選樣本資料 特徵 目標 3 資料清洗 異常值檢測和過濾 4 特徵工程 歸一化處理 提高演算法模型的精度 歸一化目的 使得每種特徵資料的量級 權重 保持大致一致 歸一化方法 常用 1.普通歸一化處理 2.區歸一...

機器學習 演算法簡介以及開發流程

演算法以及開發流程 明確的幾點問題 1.演算法是核心,資料和計算是基礎 2.找準定位,知道演算法原理,學會運用。3.學會分析問題,使用機器學習演算法的目的,在什麼情況下運用。4.掌握演算法的基本思想,學會對問題用相應的演算法解決。5.學會利用庫和框架解決問題。演算法判別依據 資料型別判斷 離散型資料...

機器學習流程

機器學習其實就是利用現有資料,設計出演算法模型的過程。其流程如下 1 獲取資料 2 資料分析 3 設計演算法 4 測試演算法 5 驗證評估 6 提交演算法 對資料的處理分為四種情況 分類 聚類 回歸 降維。其中又以分類為主。分類思想主要分為兩種 1 利用歐式距離判定樣本屬於哪一類。2 利用概率大小進...