如何使用機器學習開發業務應用【人工智能系列之三】

      網友投稿 964 2022-05-30

      引子:今天就把詳細的過程介紹給大家,分享給熱愛AI的同學們。讓我們一起來使用AI來開發自己領域的應用,共享能共同促進GTS業務的改進。

      機器學習算法都是開源的,代碼直接可以看到,并且可以直接調用。只要安裝了Python,就能直接跳到機器學習的源碼中Review源碼。

      例如:下圖就是DBScan算法的源代碼。

      <圖 1>

      有了源代碼,同事們反饋說還是狗咬刺猬,無從下口,怎么使用AI做一個業務呢?特別是把算法和電信業務結合起來,能訓練出來一個模型,更是無從下口。下面就拿一個具體的Case來說明:IR光路故障預測。

      背景介紹

      <圖 2>

      無線基站BBU和RRU之間通信由CPRI光纖連接,當存在RRU拉遠的場景,經常會出現由于光纖和連接頭老化導致的鏈路中斷的故障。“IR光路故障預測”的目的是提前預判BBU和RRU之間的光路質量,在業務中斷之前進行預警,以便客戶安排上站整改避免斷站斷服問題。

      先介紹一下流程,然后按照流程來來逐一介紹。

      <圖 3>

      一:問題抽象

      我們的目的是想預測出來IR光路(從RRU到BBU之間的鏈路)的故障,那么我們首先想到的是RRU和BBU的光模塊的信號是否穩定?接收功率和發射功率是否正常?偏置電流是否異常?工作溫度是否篇高或者偏低?光模塊傳輸的信號是否有誤碼率?那么這個過程就是問題抽象,把一個鏈路故障抽象成光模塊的故障,從光模塊故障分解下去,就分解成判斷參數(接收功率、發射功率、溫度、偏置電流、誤碼率)是否有異常,通過判斷這些參數,來預測IR光路是否有異常。這就轉換成一個分類(classification)問題:參數有異常,參數沒有異常。那么分類問題我們就可以使用機器學習來分類。

      這個過程就是把問題抽象成一個可以量化的分類問題。

      二:數據采集

      1:從網管采集數據,網管采集的數據一般都是壓縮文件,如下圖。

      <圖 4>

      三:數據處理

      如何使用機器學習開發業務應用【人工智能系列之三】

      數據處理包含數據解壓、解析、清洗、抽取、數據分類(打標簽)、訓練集和測試集生成等動作過程。

      1:把源文件解壓

      <圖 5>

      解壓后的文件(mrf格式)還是不能被使用,基本上是亂碼。那么這就需要解析器(一種解析工具)去解析,解析成能看懂的數據。大家不要對解析器神秘化,其實解析器就是一段代碼,這段代碼能讀懂這些亂碼,并且能翻譯成人能看懂的數據。

      2:文件解析。

      下面就是一個解析器的示例,其實就是一段解析代碼。

      <圖 6>

      通過解析器解析后的數據如下,這樣就把網絡的話筒數據和光模塊信息數據都解析出來了:

      <圖 7>

      3:數據清洗

      有許多數據對我們問題的求解是沒有用的,這時候需要清洗,挑選出來我們需要的數據。我們現在需要的光模塊的接收功率、發送功率、溫度、偏置電流。因為偏置電流設備沒有吐出來,就不使用偏置電流。整理后的數據如下:其中Key代表的是設備(10026)單板槽位(0/0/6)端口號(1)。這就把設備上對應的光模塊唯一確定了,后面Sent就是發射功率,Recv就是接收功率,Temp就是溫度。

      <圖 8>

      4:數據抽取。

      訓練的數據,需要多少數據量,是一年的數據量,還是3個月的數據,采集的頻度是多少?一分鐘采集一次呢?還是一個小時采集一次?這就涉及到采集頻度和數據抽取問題。

      本Case我們使用的是一周的數據,一個地區的全網數據,采集頻度是一小時采集一次。這個數據量也是非常大的(3G),一個地區的全網數據,7*24小時的數據。這個數據樣本數據。

      <圖 9>

      5:數據分類(打標簽)

      這個過程也就是生成樣本的過程。根據告警信息去打標簽,把這個時間段的告警全部都梳理出來,只要是和光路接口相關的告警全部挑選出來。

      <圖 10>

      通過時間和端口信息,把告警和第4步樣本數據關聯,把樣本分成正向樣本(有告警)和負向樣本(沒有告警)。這個過程就是打標簽的過程。如下圖:正向樣本存放在positive_bbu_data.ah.csv文件中,負向樣本存放在negative_bbu_ff.csv文件中。

      <圖 11>

      6:訓練集和測試集生成。

      當然可以從這些打好標簽的樣本中,抽取80%的數據作為訓練樣本,20%的樣本作為測試樣本。當然這個比例可以調整,根據測試方法不同,訓練集和測試集抽取的方法是不同的。

      四:特征工程

      許多人可能不明白,已經有樣本了,標簽頁打好了,直接作為算法的參數,不就能訓練出一個模型了嗎?剛開始我也以為是這么簡單,隨著研究代碼的深入,才發現,完全不是這么回事。需要做大量的特征變換才可以,特征變換的一系列過程,我們統稱為特征工程。下面分幾步來看看做了哪些特征工程

      1:求單點異常值(基于統計的序列異常檢測方法)

      原理:標準分數(Standard Score,又稱z-score,中文稱為Z-分數或標準化值)在統計學中是一種無因次值,標準分數可由公式求出,其中,為需要被標準化的原始分數,是母體的平均值,是母體的標準差。值的量代表著原始分數和母體平均值之間的距離,是以標準差為單位計算。若x從正態分布,則可以證明z服從標準正態分布。通常可以取3為判斷閾值,亦即當|Z|>3時,可認為該點為“異常點”。原始特征經過這一步的變換,可以生成3個新的特征值:均值、方差、異常點(>3)

      <圖 12>

      2:求四分位數。四分位數(Quartile)是指在統計學中把所有數值由小到大排列并分成四等份,處于三個分割點位置(25%、50%、75%)的數值。多應用于統計學中的箱型圖繪制。箱型圖判斷異常值的方法以四分位數和四分位距為基礎,四分位數具有魯棒性:25%的數據可以變得任意遠并且不會干擾四分位數,所以異常值不能對這個標準施加影響。因此箱型圖識別異常值比較客觀,在識別異常值時有一定的優越性。

      經過這一步的變換,可以輸出3個四分位數的值。

      3:求陡降點(數學方法就是求導)。

      原理:如果業務KPI信息突然出現陡降或者陡升,都可能是異常情況,需要把這樣的點抓出來。其實求陡降(或者陡升)點就是兩邊求導。關于求導的問題,在這里不在啰嗦,大家都是大學生,都學過高等數學。求導其實就是求變化率(注意:這里是變化率,不是變化!!)下圖的紅色點就是一個異常點。

      <圖 13>

      具體實現的算法代碼如下:

      <圖 14>

      求導是常用的特征值處理方法,無論是深度學習還是機器學習領域,都是通過變化率來反應樣本是否存在突降或異常。也就是大家常說的求一階導數。如果還想深入的挖掘,還可以求二階導數。

      4:經過這一系列的變換,把原來的樣本數據,變換成如下特征數據。

      當時采集了548個網元,每隔小時采集一次,采集一周7天的數據。經過處理,最后的特征數據是548*3*8的一個三維向量。

      <圖 15>

      如果用一個數組(向量)表示,三維向量表示成S[x][y][z],其中x表示網元,范圍是[0~547]共548個值; y表示原始選擇的特征值,這里就是指接收功率、發射功率、溫度,范圍[0~2]三個值;z表示經過轉換的特征值,就是上面的均值、方差、異常點、四分位之25%,四分位之50%,四分位之75%,左邊陡降點,右邊的陡降點共計8個值,范圍為[0~7]。

      5:SAX處理(基于特征表述的序列異常檢測方法)

      l? 【原理】

      一條時間序列中的正常區間的序列趨勢都不只出現一次,而異常區間之所以異常是因為其序列趨勢獨一無二。通過序列符號化,則表示每一段子序列的字符串即是該段子序列的趨勢,計算不同子序列字符串間的距離可以統計其在整段序列中的出現情況,距離越大(信息熵),則異常的可能性也越大。

      l? 【優點】

      對于周期性時間序列效果好

      自適應異常區間長度

      l? 【缺點】

      每條序列只能檢測出最異常的一個區間,不能檢測存在多個異常的時間序列。

      l? 【數學處理方法】

      n? ?輸入:時間序列,異常區間長度范圍

      n? ?輸出:異常區間P

      n? ?具體步驟:

      1:計算時間序列的標準分數序列:;

      2:使用長度為的滑窗將分解為序列集合,為長度的子序列;

      3:應用SAX序列符號化方法將轉化成為字符序列集合;

      4:對于,計算D()=min(Dist(,)),Dist(,)為到之間的SAX距離;

      5:異常區間。

      l? 具體實現過程

      SAX處理的是樣本(分類打完標簽),把發射功率按照間隔24去離散,使用滑窗的原理,每隔24個值離散出一個值,見下圖。192個值就可以離散出8個值。離散的方法如下圖:

      <圖 16>

      最終離散出來的序列如下:

      <圖 17>

      6:通過信息熵的決策樹來尋找變化規律。經過第5步SAX的處理,得到就是一個8個數字的序列,沒有任何意義,我們的目的是尋找一些變化規律。這一步就是通過決策樹來提取子序列的變化特征。

      具體的方法:逐個的取8個數字,遍歷所有可能的序列,這個序列可能含有2個,3個…8個數字的不同組合。然后把不同子序列,構建成一顆決策樹。如下圖:

      <圖 18>

      7:到此為止,我們的特征工程全部完成。處理過程包括Z-Score、求異常點、四分位值、陡降點、SAX處理等等。當然,根據業務的實際需要,特征工程不限于這些內容。

      五:模型訓練

      特征工程處理完畢,就可以訓練模型了。IR光路使用的核心算法是GBDT。

      1:算法簡單介紹

      梯度提升(Gradient boosting)是一種用于回歸、分類和排序任務的機器學習技術,屬于Boosting算法族的一部分。Boosting是一族可將弱學習器提升為強學習器的算法,屬于集成學習(ensemble learning)的范疇。Boosting方法基于這樣一種思想:對于一個復雜任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比其中任何一個專家單獨的判斷要好。通俗地說,就是“三個臭皮匠頂個諸葛 亮”的道理。梯度提升同其他boosting方法一樣,通過集成(ensemble)多個弱學習器,通常是決策樹,來構建最終的預測模型。

      GBDT算法訓練結果是一個決策森林。GBDT算法在訓練的時候迭代N次,森林里面就會包含N棵樹,每棵樹都包含若干個葉子,每個葉子對應某個特定的分數。一句話總結:構造多顆決策樹去分類。總體評價,是目前最好的機器學習算法之一。

      如果大家對GBDT感興趣,可以參考scikit-learn網站上的算法源代碼,如果安裝了Python,更加方便,直接可以看到源碼。

      http://scikit-learn.org/stable/modules/ensemble.html#classification

      <圖 19>

      2:輸入參數

      輸入的參數是 8個特征工程值和子序列構造出來的決策樹。詳細的訓練過程見下圖:

      <圖 20>

      3:輸出模型

      其實模型就是一些決策樹形成的決策森林。選擇一個信息熵最大的作為根節點去構造決策樹,直到全部構造完畢,跳出循環。總共可以構造出上百顆決策樹。

      <圖 21>

      六:模型評估和部署

      模型評估就是評估出這個這個模型預測的準確率如何?召回率如何?模型評估有嚴格的一套方法論的,不是隨便信口開河,糊弄一下就完事了,有嚴格的測試方法和測試指標的。

      1:測試方法

      l? 傳統的方法,也叫保留法(holdout)。訓練集用于訓練,測試集用于測試。測試集中有正向P和負向N的實例。這種方法不能用于樣本量小的情況,訓練模型嚴重依賴于訓練集和測試集的構成。

      l? 交叉驗證法。就是把訓練集和測試集混合到一起,分成K份。每次拿K-1份去訓練,1份去測試驗證,這樣迭代一遍。該方法的優點是盡可能多的數據作為訓練集數據,每一次訓練集數據和檢驗集數據都是相互獨立的,并且完全覆蓋了整個數據集。也存在一個缺點,就是分類模型運行了 K 次,計算開銷較大。

      l? 自助法(bootstrap):把訓練集放回去,訓練集數據采用的是有放回的抽樣,即已經選取為訓練集的數據又被放回原來的數據集中,使得該數據有機會能被再一次抽取。用于樣本數不多的情況下,效果很好。

      2:測試指標

      評估模型的常用指標就是 ①準確率 ② 召回率 ③ 精確度 ④ 虛警率。計算這4個指標有嚴格定義的公式,不是隨便說說的。

      數據集P和N,P(Positive)表示正例的樣本數量,N(Negative)是表示負例的樣本數量。例如動物分類,如果精確預測是狗的算正確,那么狗就是正例的樣本,貓就可以歸結到負例的樣本數量。本Case,IR光路有故障的樣本數就是正例樣本,樣本文件命名為Positive_bbu_data,負例樣本就是沒有故障的樣本,樣本文件命名為Negative_bbu_data。

      TP(Ture Positive)正確預測出正例的樣本數,TN(Ture Negative)正確預測出負例的樣本數;

      FP(Fail Positive)錯誤預測正例樣本數,FN(Fail Negative)錯誤預測負例的樣本數;換成另外一種表述就是把正例樣本預測成負例,把負例預測成正例。

      有了這6個樣本數的定義,那么就完全可以描述出上面4個指標。

      l? 準確率:就是正負樣本分別被正確分類的概率。 Accuracy = (TP+TN) / (P+N)

      l? 召回率:就是正樣本被識別出的概率。 Recall = TP / P

      l? 精確度:就是分類結果為正樣本的情況真實性程度。Precision = TP / (TP+FP)

      l? 虛警率:負樣本被錯誤分為正樣本的概率。FPrate = FN/N (稍微有點繞)

      3:本Case的評估。

      實驗數據按照上面的定義去評估就可以,在訓練前,我們就提前準備了測試集數據集,測試數據集中有正向樣本,有負向樣本。

      但實際使用這些指標的時候,稍微需要調整一下。把這個IR光路故障預測模型部署在現網,我們關鍵看哪幾個指標呢?假如一個區域一個月發生了100起IR光路故障,你提前一個月預測出8個故障點,實際上一個月后,有5起預測正確,3起預測錯誤。那么,準確率 = 5/8 = 62.5%,但光有準確率是不夠的,因為出了100個故障,你僅僅預測出5個,這就說故障沒有預測出來的太少了,這個指標我們通常叫查全率 = 5/100 = 5%。故障預測類光說準確率意義不大,一定要看查全率。這兩個指標結合著看才有實際意義。

      4:如果模型經過綜合評估,準確率和查全率都比較高,就可以部署在現網環境中。

      在綜合一下,機器學習大家剛開始接觸,看了很多方法論,但沒有實際編碼的經驗,不知道方法論怎么使用?機器學習也需要理論和實際結合,光看理論,不知道如何行動。有了實際的編碼(Review代碼也可以),回頭再來看方法論,這就會好很多。最后把機器學習的方法論匯總如下:

      <圖 22>

      把方法論和IR光路故障預測關聯起來,多看幾遍,就理解如何使用機器學習開發一個業務應用,這就是AI。

      AI 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:預見 公有云發展趨勢及挑戰(預見未來)
      下一篇:Excel表格怎么設置圖表數據標簽(excel如何設置圖表數據標簽)
      相關文章
      国产亚洲大尺度无码无码专线| 在线观看亚洲视频| 美腿丝袜亚洲综合| 亚洲av日韩精品久久久久久a| 亚洲最大的成人网| 亚洲伊人久久大香线蕉啊| 亚洲影视一区二区| 亚洲精品国产福利片| 久久水蜜桃亚洲av无码精品麻豆| 午夜亚洲国产理论秋霞| 亚洲高清视频在线观看| 亚洲日本在线看片| 亚洲黄色一级毛片| 亚洲成无码人在线观看| 亚洲无限乱码一二三四区| 亚洲另类古典武侠| 中中文字幕亚洲无线码| 亚洲一卡2卡三卡4卡无卡下载| 亚洲天然素人无码专区| 精品久久久久久久久亚洲偷窥女厕| 亚洲av成本人无码网站| 亚洲国产日韩成人综合天堂| 亚洲一区日韩高清中文字幕亚洲| 中文字幕精品亚洲无线码一区 | 久久亚洲精品国产亚洲老地址| 中文字幕亚洲男人的天堂网络| 亚洲综合精品第一页| 亚洲Av永久无码精品黑人| 亚洲AⅤ无码一区二区三区在线| 亚洲男女内射在线播放| 伊人久久大香线蕉亚洲五月天| 人人狠狠综合久久亚洲88| 亚洲国产高清视频| 亚洲国产成人精品无码区在线网站 | 亚洲国产精华液2020| mm1313亚洲精品无码又大又粗| 亚洲视频在线一区二区| 亚洲动漫精品无码av天堂| 亚洲色图综合网站| 亚洲中文字幕久久久一区| 亚洲A丁香五香天堂网|