日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

机器学习:从入门到第一个模型

發(fā)布時(shí)間:2024/10/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习:从入门到第一个模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎大家前往騰訊云技術(shù)社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~

作者:李春曉?

導(dǎo)語(yǔ):

“從入門到第一個(gè)模型”差點(diǎn)就成了“從入門到放棄”。本文是機(jī)器學(xué)習(xí)在運(yùn)維場(chǎng)景下的一次嘗試,用一個(gè)模型實(shí)現(xiàn)了業(yè)務(wù)規(guī)律挖掘和異常檢測(cè)。這只是一次嘗試,能否上線運(yùn)轉(zhuǎn)還有待考究。試了幾個(gè)業(yè)務(wù)的數(shù)據(jù),看似有效,心里卻仍然忐忑,擔(dān)心哪里出錯(cuò)或者有未考慮到的坑,將模型介紹如下,請(qǐng)大俠們多多指教,幫忙指出可能存在的問(wèn)題,一起交流哈。

背景:

業(yè)務(wù)運(yùn)維需要對(duì)業(yè)務(wù)基礎(chǔ)體驗(yàn)指標(biāo)負(fù)責(zé),過(guò)去的分析都是基于大數(shù)據(jù),統(tǒng)計(jì)各個(gè)維度及其組合下關(guān)鍵指標(biāo)的表現(xiàn)。比如我們可以統(tǒng)計(jì)到不同網(wǎng)絡(luò)制式下打開一個(gè)app的速度(耗時(shí)),也可以獲取不同命令字的成功率。針對(duì)移動(dòng)APP類業(yè)務(wù),基于經(jīng)驗(yàn),我們?cè)诜治鲆粋€(gè)指標(biāo)時(shí)都會(huì)考慮這些因素:App版本、指標(biāo)相關(guān)的特有維度(比如圖片下載要考慮size、圖片類型; 視頻點(diǎn)播類要考慮視頻類型、播放器類型等)、用戶信息(網(wǎng)絡(luò)制式、省份、運(yùn)營(yíng)商、城市)等。這些維度綜合作用影響關(guān)鍵指標(biāo),那么哪些維度組合一定好,哪些一定不好?耗時(shí)類指標(biāo)的表現(xiàn)往往呈現(xiàn)準(zhǔn)正態(tài)分布趨勢(shì),其長(zhǎng)尾永遠(yuǎn)存在并且無(wú)法消除,這種情況要不要關(guān)注? 針對(duì)命令字成功率,有些命令字成功率低是常態(tài),要不要告警?過(guò)去我們會(huì)通過(guò)在監(jiān)控中設(shè)置特例來(lái)避免告警。有沒有一種方法,能自動(dòng)識(shí)別常態(tài)與非常態(tài)?在機(jī)器學(xué)習(xí)如火如荼的現(xiàn)在,也許可以試一試。

目標(biāo):

  • 挖掘業(yè)務(wù)潛在規(guī)律(針對(duì)耗時(shí)這類連續(xù)值指標(biāo),找出引起長(zhǎng)尾的因素)

  • 監(jiān)控業(yè)務(wù)指標(biāo)時(shí),找出常態(tài)并忽略常態(tài),僅針對(duì)突發(fā)異常產(chǎn)生告警并給出異常的根因。

  • 之后就是艱苦的屢敗屢戰(zhàn),從入門到差點(diǎn)放棄,最終搞出第一個(gè)模型的奮戰(zhàn)史了。最大的困難是沒寫過(guò)代碼,不會(huì)python,機(jī)器學(xué)習(xí)理論和代碼都要同步學(xué)習(xí);然后就是在基礎(chǔ)薄弱的情況下一開始還太貪心,想要找一個(gè)通用的模型,對(duì)不同業(yè)務(wù)、不同指標(biāo)都可以通用,還可以同時(shí)解決兩個(gè)目標(biāo)問(wèn)題,缺少一個(gè)循序漸進(jìn)入門的過(guò)程,難免處處碰壁,遇到問(wèn)題解決問(wèn)題,重新學(xué)習(xí)。好在最終結(jié)果還是出來(lái)了,不過(guò)還是要接受教訓(xùn):有了大目標(biāo)后先定個(gè)小目標(biāo),理清思路后由點(diǎn)及面,事情會(huì)順利很多。

    接下來(lái)直接介紹模型,過(guò)程中走的彎路就忽略掉(因?yàn)樘嗵趿?#xff0c;有些理論是在遇到問(wèn)題后再研究才搞明白)。

    基本思路:

    1.通過(guò)學(xué)習(xí)自動(dòng)獲取業(yè)務(wù)規(guī)律,對(duì)業(yè)務(wù)表現(xiàn)進(jìn)行預(yù)測(cè)(ET算法),預(yù)測(cè)命中的就是業(yè)務(wù)規(guī)律,沒命中的有可能是異常(請(qǐng)注意,是有可能,而非絕對(duì));

    2.將1的結(jié)果分別輸入決策樹(DT)進(jìn)行可視化展示;用預(yù)測(cè)命中的部分生成業(yè)務(wù)潛在規(guī)律視圖;用未命中的來(lái)檢測(cè)異常,并展示根因。

    步驟簡(jiǎn)介(以耗時(shí)這個(gè)指標(biāo)為例):

    1. 準(zhǔn)備兩份不重合的數(shù)據(jù),一份用于訓(xùn)練,一份用于預(yù)測(cè)

    例:視頻播放類業(yè)務(wù)的維度(如版本,機(jī)型,視頻來(lái)源,視頻編碼類型等各種已有特征),及耗時(shí)數(shù)據(jù)

    2. 將目標(biāo)問(wèn)題轉(zhuǎn)化為分類問(wèn)題,有可能是常見的二分類,也有可能是多分類,視情況而定

    將耗時(shí)這種連續(xù)性指標(biāo)轉(zhuǎn)為離散值,目標(biāo)是產(chǎn)生三個(gè)分類:“極好的/0”,“一般的/1”,“極差的/2”,將耗時(shí)按10分位數(shù)拆分,取第1份(或者前2份)作為“極好的”樣本,中間幾份為“一般的”的樣本,最后1(或者2)份為“極差的“樣本 。 這里的“極差的”其實(shí)就是正態(tài)分布的長(zhǎng)尾部分。如下圖,第一列是耗時(shí)區(qū)間(未加人工定義閾值,自動(dòng)獲取),第二列是樣本量。

    3. 特征處理

    3.1 特征數(shù)值化

    這里表現(xiàn)為兩類問(wèn)題,但處理方式都一樣:

    (1)文本轉(zhuǎn)數(shù)值

    (2)無(wú)序數(shù)值需要削掉數(shù)值的大小關(guān)系,比如Appid這類,本身是無(wú)序的,不應(yīng)該讓算法認(rèn)為65538>65537

    方法:one-hot編碼, 如性別這個(gè)特征有三種取值,boy,girl和unknown,轉(zhuǎn)換為三個(gè)特征sex==boy,sex==girl,sex==unknown, 條件滿足將其置為1,否則置為0.

    實(shí)現(xiàn)方式3種:自己實(shí)現(xiàn);sklearn調(diào)包;pandas的get_dummies方法。

    One-hot編碼后特征數(shù)量會(huì)劇烈膨脹,有個(gè)特征是手機(jī)機(jī)型,處理后會(huì)增加幾千維,同時(shí)也要根據(jù)情況考慮是否需要對(duì)特征做過(guò)于細(xì)化的處理。

    3.2 特征降維

    是否需要降維,視情況而定,我這里做了降維,因?yàn)樘卣魈嗔?#xff0c;如果不降維,最終的樹會(huì)非常龐大,無(wú)法突出關(guān)鍵因素。

    所謂降維,也就是需要提取出特征中對(duì)結(jié)果起到關(guān)鍵影響因素的特征,去掉不重要的信息和多余信息,理論不詳述了,參考:http://sklearn.lzjqsdd.com/modules/feature_selection.html

    本文用了ET的feature_importance這個(gè)特性做降維,將5000+維的數(shù)據(jù)降至300左右

    4. 用ET算法(隨機(jī)森林的變種,ExtraTreesClassifier)訓(xùn)練一個(gè)分類模型(三分類)

    4.1 評(píng)價(jià)模型的指標(biāo)選取

    對(duì)于分類算法,我們首先想到的準(zhǔn)確性 precision這個(gè)指標(biāo),但它對(duì)于樣本不均衡的場(chǎng)景下是失效的。舉個(gè)例子,我們有個(gè)二分類(成功和失敗)場(chǎng)景,成功的占比為98%。這種樣本直接輸入訓(xùn)練模型,必定過(guò)擬合,模型會(huì)直接忽略失敗的那類,將所有都預(yù)測(cè)為成功。此時(shí)成功率可達(dá)98%,但模型其實(shí)是無(wú)效的。那么應(yīng)該用什么?

    對(duì)于二分類,可用roc_auc_score,對(duì)于多分類,可用confusion_matrix和classification report

    4.2 樣本不均衡問(wèn)題處理

    本文用的例子,顯然0和2的數(shù)量非常少,1的數(shù)量是大頭。為了不對(duì)1這種類型產(chǎn)生過(guò)擬合,可對(duì)0和2這兩類做過(guò)抽樣處理。

    常見的有兩類算法:

    (1)直接復(fù)制少數(shù)類樣本

    (2)SMOTE過(guò)抽樣算法(細(xì)節(jié)略)

    這里兩種算法都用過(guò),最終選了SMOTE,不過(guò)本文研究的數(shù)據(jù)上沒有看出明顯差別。

    少數(shù)類的過(guò)抽樣解決了大類的過(guò)擬合問(wèn)題,同時(shí)也帶來(lái)了小類的過(guò)擬合,不過(guò)這里的模型正好需要讓小類過(guò)擬合,我們就是要把表現(xiàn)“極好”和“極壞”的部分找出來(lái),表現(xiàn)平平的在異常檢測(cè)時(shí)加入關(guān)注。過(guò)擬合這個(gè)問(wèn)題,不用過(guò)于恐懼,反而可以利用。舉個(gè)例子,“患病”和“不患病”這種分類場(chǎng)景,寧可將“患病”的檢出率高一些。如下圖這個(gè)分類報(bào)告,對(duì)于小類樣本(0和2),我們需要利用recall高的特性,即把它找出來(lái)就好;而對(duì)于大類樣本,我們需要precision高的特性,用于做異常檢測(cè)。

    4.3 模型參數(shù)選取

    Sklearn有現(xiàn)成的GridSearchCV方法可用,可以看看不同參數(shù)組合下模型的效果。對(duì)于樹類算法,常用的參數(shù)就是深度,特征個(gè)數(shù);森林類算法加一個(gè)樹個(gè)數(shù)。

    Max_depth這個(gè)參數(shù)需要尤其注意,深度大了,容易過(guò)擬合,一般經(jīng)驗(yàn)值在15以內(nèi)。

    4.4 模型訓(xùn)練好后,用測(cè)試數(shù)據(jù)預(yù)測(cè),從中提取各個(gè)類別預(yù)測(cè)正確的和不正確的。?
    例:

    預(yù)測(cè)正確的部分:獲取預(yù)測(cè)為0,2,實(shí)際也為0,2的樣本標(biāo)示;

    預(yù)測(cè)錯(cuò)誤的部分:獲取預(yù)測(cè)為0和1,實(shí)際為2的樣本標(biāo)示(根據(jù)情況調(diào)節(jié))

    5. 輸入決策樹進(jìn)行可視化展示,分別做業(yè)務(wù)規(guī)律挖掘和異常檢測(cè)

    這里DT算法僅用于展示,將不同類別的數(shù)據(jù)區(qū)分開,必要時(shí)仍然要設(shè)置參數(shù),如min_samples_leaf, min_impurity_decrease,以突出關(guān)鍵信息。

    還可以通過(guò)DecisionTreeClassifier的內(nèi)置tree_對(duì)象將想要找的路徑打出來(lái)

    以下分別給出例子:

    5.1 業(yè)務(wù)規(guī)律挖掘

    視頻點(diǎn)播場(chǎng)景,取0和2這兩類預(yù)測(cè)正確的部分,輸入DT,如下圖,自動(dòng)找出了業(yè)務(wù)潛在規(guī)律,并一一用大數(shù)據(jù)統(tǒng)計(jì)的方式驗(yàn)證通過(guò),結(jié)論吻合。這個(gè)樹的數(shù)據(jù)相對(duì)純凈,因?yàn)檩斎虢o它的數(shù)據(jù)可以理解為必然符合某種規(guī)律。

    ?

    5.2. 異常檢測(cè)

    本文模型還在研究階段,未用線上真實(shí)異常數(shù)據(jù),而是手工在測(cè)試數(shù)據(jù)某個(gè)維度(或者組合)上制造異常來(lái)驗(yàn)證效果。

    針對(duì)成功率,可以視容忍程度做二分類或者三分類。

    二分類:取一個(gè)閾值,如99%,低于99%為2,異常,否則為0正常。缺點(diǎn)是如果某個(gè)維度上的成功率長(zhǎng)期在99%以下,如98%,當(dāng)它突然下跌時(shí)會(huì)被當(dāng)做常態(tài)忽略掉,不會(huì)告警。

    三分類:99%以上為0, 96~99% 為1,低于96%為2,這種方式會(huì)更靈活。 三種分類也分別對(duì)應(yīng)其重要性。重點(diǎn)關(guān)注,普通關(guān)注,忽略。

    下圖是一個(gè)二分類的例子(手工將平臺(tái)為IPH和播放端為client的置為異常):

    最后:這里只是一次小嘗試,如果要平臺(tái)化上線運(yùn)轉(zhuǎn),還要很多因素要考慮,首要就是模型更新問(wèn)題(定時(shí)更新?避免選取到異常發(fā)生時(shí)段?),這個(gè)將放在下階段去嘗試。

    相關(guān)閱讀

    5分鐘教你玩轉(zhuǎn) sklearn 機(jī)器學(xué)習(xí)(上)

    機(jī)器學(xué)習(xí)概念總結(jié)筆記(一)

    機(jī)器學(xué)習(xí)之離散特征自動(dòng)化擴(kuò)展與組合


    此文已由作者授權(quán)騰訊云技術(shù)社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明文章出處
    原文鏈接:https://cloud.tencent.com/community/article/477670

    轉(zhuǎn)載于:https://www.cnblogs.com/qcloud1001/p/7646569.html

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的机器学习:从入门到第一个模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。