中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
工業(yè)大數(shù)據(jù):分析算法

一. 應(yīng)用背景

大數(shù)據(jù)分析模型的研究可以分為3個(gè)層次,即描述分析(探索歷史數(shù)據(jù)并描述發(fā)生了什么)、預(yù)測(cè)分析(未來的概率和趨勢(shì))和規(guī)范分析(對(duì)未來的決策給出建議)。工業(yè)大數(shù)據(jù)分析的理論和技術(shù)研究仍處于起步階段,主要應(yīng)用場(chǎng)景如下:

1. 預(yù)測(cè)性維護(hù)。

傳統(tǒng)制造業(yè)面臨核心設(shè)備的維護(hù)管理、故障診斷等問題,常規(guī)維修存在不確定性,緊急狀況下故障處理的難度及壓力都較大。實(shí)時(shí)監(jiān)測(cè)、有效記錄設(shè)備工況信息,通過大數(shù)據(jù)平臺(tái)建模分析,能夠有效地對(duì)設(shè)備運(yùn)行狀態(tài)進(jìn)行評(píng)估,針對(duì)潛在的健康隱患給出對(duì)應(yīng)的預(yù)警?;谌芷诘臄?shù)據(jù)挖掘,可以對(duì)工程機(jī)械設(shè)備的核心耗損性部件的剩余壽命進(jìn)行預(yù)測(cè),以便進(jìn)行提前維護(hù)或者更換。

2. 工藝參數(shù)優(yōu)化。

基于決策樹等弱分類器的集成學(xué)習(xí)算法是解決工藝參數(shù)優(yōu)化的常規(guī)手段,如GBDT,XGBoost,LightGBM等。另一個(gè)方向是深度強(qiáng)化學(xué)習(xí)(DRL,deep reinforcement learning),DRL集成了深度學(xué)習(xí)的感知理解能力及強(qiáng)化學(xué)習(xí)的決策能力,是未來發(fā)展的趨勢(shì)。

此外,產(chǎn)量預(yù)測(cè)、客戶需求分析和服務(wù)類型識(shí)別等也是廣泛存在的場(chǎng)景。

二. 預(yù)測(cè)性維護(hù)算法

系統(tǒng)中部署傳感器,用于監(jiān)控和收集系統(tǒng)運(yùn)行的數(shù)據(jù)。預(yù)測(cè)性維護(hù)所需要的數(shù)據(jù)是時(shí)間序列數(shù)據(jù),包括時(shí)間戳、在該時(shí)間戳所收集的傳感器讀數(shù)以及設(shè)備號(hào)。預(yù)測(cè)性維護(hù)的目的是,在時(shí)間“t”,使用截至到該時(shí)間的數(shù)據(jù)來預(yù)測(cè)設(shè)備在近期是否會(huì)發(fā)生故障。預(yù)測(cè)性維護(hù)可通過以下兩種方法之一來實(shí)現(xiàn):

(1). 回歸方法:預(yù)測(cè)在下次故障發(fā)生之前的剩余時(shí)間,即剩余使用壽命(RUL)。

回歸方法只提供一個(gè)布爾值答案,但可以使用較少的數(shù)據(jù)提供更高的準(zhǔn)確性。

預(yù)測(cè)精度的衡量標(biāo)準(zhǔn):

使用均方根誤差懲罰實(shí)際與預(yù)測(cè)的RUL之間Loss。也可以采用log的形式:

模型選擇:

基于scikit learn和H2O的回歸算法都適用。如,scikit learn-Random Forest Regression、scikit learn-Linear Regression、scikit learn-Ridge、scikit learn-Lasso及H2O-Random Forest Regression、H2O-Gradient Boosting、H2O-Generalized Linear Modeling、H2O-Deep Learning等。

算法步驟:

1. 消除傳感器噪聲。

傳感器讀數(shù)通常會(huì)有噪聲,往往采用自動(dòng)編碼器去除噪聲,以主要維度表示數(shù)據(jù)。與PCA相似,AutoEncoder使用同一套數(shù)據(jù)集同時(shí)作為網(wǎng)絡(luò)的輸入和輸出進(jìn)行訓(xùn)練,其中網(wǎng)絡(luò)中的參數(shù)比數(shù)據(jù)集中的維數(shù)少。由于噪聲的維度比常規(guī)數(shù)據(jù)高得多,這種方式可以在一定程度上去噪。H2O引入相應(yīng)模塊:

from h2o.estimators.deeplearning import H2OAutoEncoderEstimator

2. 特征工程。

時(shí)間序列的特征大體上可以分成統(tǒng)計(jì)特征,擬合特征,周期性特征,分類特征等幾大類。

統(tǒng)計(jì)特征:

已知的時(shí)間序列的最大值、最小值、自相關(guān)系數(shù)等各種各樣的統(tǒng)計(jì)指標(biāo)。

擬合特征:

基本想法是用一些簡(jiǎn)單的時(shí)間序列算法去擬合數(shù)據(jù),然后使用擬合數(shù)據(jù)和真實(shí)數(shù)據(jù)來形成必要的特征。時(shí)間序列數(shù)據(jù)集讀數(shù)是自相關(guān)的,“t”時(shí)刻的預(yù)測(cè)可能會(huì)受到“t”之前的某個(gè)時(shí)間窗口的影響。因此需要通過移動(dòng)標(biāo)準(zhǔn)差、移動(dòng)平均值、自回歸、奇異值分解和深度學(xué)習(xí)等方法生成特征并進(jìn)行特征組合。

移動(dòng)平均算法:已知時(shí)間序列X n = [x 1 ,...,x n ],可以使用一個(gè)窗口值w>=1得到一組光滑后的時(shí)間序列。

實(shí)際值與光滑后所得到的值的差值SMA n -x n 就可以作為特征。

帶權(quán)重的移動(dòng)平均算法:計(jì)算平均值的時(shí)候?qū)⒉煌狞c(diǎn)帶上不同的數(shù)值。

指數(shù)移動(dòng)平均算法:在已知時(shí)間序列的基礎(chǔ)上進(jìn)行加權(quán)操作,而權(quán)重的大小是呈指數(shù)衰減的。

只需要構(gòu)建一個(gè)加權(quán)求和,然后計(jì)算EWMA n -x n 就可以得到特征。

分類特征:

可以根據(jù)時(shí)間序列的走勢(shì),例如周期型、毛刺型、定時(shí)任務(wù)型來構(gòu)造出時(shí)間序列的分類特征,用于時(shí)間序列形狀的多分類問題。具有窗口大小的概率分布、移動(dòng)熵及小波分析特征都很常見。在時(shí)間序列的分類特征里面,有一種特征叫做 值分布特征 。假設(shè)時(shí)間序列的值域在[0,1]之內(nèi),值分布特征計(jì)算出一個(gè)時(shí)間序列X n = [x 1 ,...,x n ]的取值在[0,0.1),[0.1,0.2),...,[0.9,1]這十個(gè)桶的個(gè)數(shù),進(jìn)一步得到它們落入這十個(gè)桶的概率是多少。這一類特征可以通過count函數(shù)生成。

3. 超參數(shù)優(yōu)化。

超參數(shù)控制了算法的行為。優(yōu)化以下超參數(shù):epochs、distribution、activation和hidden layer size??梢栽贖2O文檔中找到每個(gè)參數(shù)的詳細(xì)說明并通過網(wǎng)格搜索(Grid Search)尋找最佳參數(shù)。

(2). 分類方法:預(yù)測(cè)在接下來的N步中是否有可能發(fā)生故障。

分類方法需要更多的數(shù)據(jù),但可以提供有關(guān)何時(shí)發(fā)生故障的更多信息。這種方法不再提供剩余的生命周期數(shù),而是要預(yù)測(cè)機(jī)器是否會(huì)在接下來的30個(gè)周期內(nèi)故障。我們會(huì)將故障視為正(positive,P),而無故障視為常態(tài)(normal,N)。

預(yù)測(cè)精度的衡量標(biāo)準(zhǔn):

準(zhǔn)確率描述了預(yù)測(cè)正確的測(cè)試用例數(shù)與所有測(cè)試用例數(shù)的比例。當(dāng)數(shù)據(jù)集中同一類別數(shù)據(jù)量太多,發(fā)生類不平衡時(shí),只考慮準(zhǔn)確率將會(huì)產(chǎn)生誤導(dǎo)(高準(zhǔn)確率,但預(yù)測(cè)性能差),精確率和召回率(檢出率)可以避免這個(gè)問題。精確率指的是預(yù)測(cè)為正值且實(shí)際也是正值的樣本數(shù)和所有被預(yù)測(cè)為正值的樣本數(shù)之間的比例;召回率指的是預(yù)測(cè)為正值的樣本數(shù)和應(yīng)該被預(yù)測(cè)為正值的樣本數(shù)之間的比例。另外,F(xiàn)1分?jǐn)?shù)是衡量準(zhǔn)確率的指標(biāo),計(jì)算F1分?jǐn)?shù)時(shí)需要兼顧精確率和召回率。對(duì)于準(zhǔn)確率、召回率、精確率和F1分?jǐn)?shù),它們的值越接近1越好。

模型選擇:

深度學(xué)習(xí)分類模型。

算法步驟:

參考上述去噪、特征工程及超參數(shù)優(yōu)化等方法。

三. 工藝參數(shù)優(yōu)化算法

這里主要介紹集成學(xué)習(xí)算法及DRL算法。

集成學(xué)習(xí)算法:

(1). 集成學(xué)習(xí)。

集成學(xué)習(xí)分為兩種,Boosting(↓Bias & Variance)和Bagging(↓Variance)。

1. Boosting給固定樣本加權(quán),串行地生成一系列“weak learners”,再學(xué)習(xí)樣本及分類器的權(quán)重,通過“weak learners”組合構(gòu)造一個(gè)“strong learner”?;貧w算法可以通過殘差來實(shí)現(xiàn):每一輪的訓(xùn)練集發(fā)生變化(標(biāo)簽變?yōu)榱藲埐?,即下一個(gè)模型要基于新訓(xùn)練集進(jìn)行學(xué)習(xí),學(xué)習(xí)完畢后,將所有模型簡(jiǎn)單疊加,就得到了最終模型。

盡管近年來神經(jīng)網(wǎng)絡(luò)復(fù)興并大為流行,boosting算法在訓(xùn)練樣本量有限、所需訓(xùn)練時(shí)間較短、缺乏調(diào)參知識(shí)等場(chǎng)景依然有其不可或缺的優(yōu)勢(shì)。

2. Bagging隨機(jī)有放回均勻取樣構(gòu)造n個(gè)訓(xùn)練集,并行訓(xùn)練k個(gè)模型(決策樹、KNN等)。對(duì)于分類問題:由投票表決產(chǎn)生的分類結(jié)果;對(duì)于回歸問題,由k個(gè)模型預(yù)測(cè)結(jié)果的均值作為最后預(yù)測(cè)的結(jié)果(所有模型的重要性相同)。例如,隨機(jī)森林,Random Forest。

(2). Adaboost。

Adaptive Boosting, 自適應(yīng)增強(qiáng)算法,通過訓(xùn)練多個(gè)弱分類器來組合得到一個(gè)強(qiáng)分類器,每次迭代會(huì)生成一棵 高Bias、低Variance 的樹形弱分類器。每一輪的訓(xùn)練會(huì)更關(guān)注上一輪被分類器分錯(cuò)的樣本,為其加大權(quán)重,具體做法是:1. 提高上一輪被錯(cuò)誤分類的樣本的權(quán)值,降低被正確分類的樣本的權(quán)值;2. 線性加權(quán)求和。誤差率小的基學(xué)習(xí)器擁有較大的權(quán)值,誤差率大的基學(xué)習(xí)器擁有較小的權(quán)值。

sign內(nèi)的符號(hào)決定了所預(yù)測(cè)的類,絕對(duì)值代表分類的確信度。

代碼實(shí)現(xiàn):

def adaboost_clf(Y_train, X_train, Y_test, X_test, M=20, weak_clf=DecisionTreeClassifier(max_depth = 1)):    n_train, n_test = len(X_train), len(X_test)    # Initialize weights    w = np.ones(n_train) / n_train    pred_train, pred_test = [np.zeros(n_train), np.zeros(n_test)]    for i in range(M):        # Fit a classifier with the specific weights        weak_clf.fit(X_train, Y_train, sample_weight = w)        pred_train_i = weak_clf.predict(X_train)        pred_test_i = weak_clf.predict(X_test)        # Indicator function        miss = [int(x) for x in (pred_train_i != Y_train)]        print('weak_clf_%02d train acc: %.4f'         % (i + 1, 1 - sum(miss) / n_train))        # Error        err_m = np.dot(w, miss)        # Alpha        alpha_m = 0.5 * np.log((1 - err_m) / float(err_m))        # New weights        miss2 = [x if x==1 else -1 for x in miss] # -1 * y_i * G(x_i): 1 / -1        w = np.multiply(w, np.exp([float(x) * alpha_m for x in miss2]))        w = w / sum(w)        # Add to prediction        pred_train_i = [1 if x == 1 else -1 for x in pred_train_i]        pred_test_i = [1 if x == 1 else -1 for x in pred_test_i]        pred_train = pred_train + np.multiply(alpha_m, pred_train_i)        pred_test = pred_test + np.multiply(alpha_m, pred_test_i)    pred_train = (pred_train > 0) * 1    pred_test = (pred_test > 0) * 1    print('train accuracy: %.4f' % (sum(pred_train == Y_train) / n_train))    print('test accuracy: %.4f' % (sum(pred_test == Y_test) / n_test))

(3). GBDT。

Gradient Boosting Decision Tree,梯度提升樹,不同于Adaboost加大誤分樣本權(quán)重的策略,每一次的計(jì)算是都為了減少上一次的殘差,進(jìn)而在殘差減少(負(fù)梯度)的方向上建立一個(gè)新的模型。無論是回歸、二分類還是多分類問題(設(shè)定閾值),GBDT中的決策樹都是回歸樹(傳統(tǒng)GBDT使用CART),因?yàn)槊看蔚獢M合的是 梯度值 ,是連續(xù)值。

模型一共訓(xùn)練M輪,每輪產(chǎn)生一個(gè)弱分類器

T ( x ; θ m )

。我們希望損失函數(shù)能夠盡可能快的減小,沿著梯度方向下降。每輪迭代的時(shí)候,都去擬合損失函數(shù)在當(dāng)前模型下的負(fù)梯度(殘差的近似值),整體上,作為回歸問題,擬合一個(gè)回歸樹,進(jìn)而發(fā)現(xiàn)多種有區(qū)分性的特征以及特征組合。

1. XGBoost。

全稱是eXtreme Gradient Boosting,是GBDT的改進(jìn)版,能自動(dòng)利用cpu的多線程。作為一個(gè)樹集成模型,XGBoost將K個(gè)樹對(duì)應(yīng)的葉節(jié)點(diǎn)的值求和進(jìn)行預(yù)測(cè)。

我們的目標(biāo)是學(xué)習(xí)這K個(gè)樹,因此,需要最小化帶正則項(xiàng)的目標(biāo)函數(shù):

在XGBoost里,每棵樹(f k )是一個(gè)一個(gè)往里面加的:

每加一個(gè)都希望效果能提升,即目標(biāo)函數(shù)(就是損失)的值下降,如果經(jīng)過t輪訓(xùn)練我們做模型預(yù)測(cè),之前的目標(biāo)函數(shù)細(xì)化為:

除了損失函數(shù)是square loss的情形,還是比較復(fù)雜。因此,用泰勒展開(取前三項(xiàng),二階)近似原來的目標(biāo)函數(shù),這里就與GBDT不同了,GBDT利用梯度,即一階導(dǎo)數(shù)來近似,精度顯然會(huì)差一些。

其中,損失函數(shù)l可以是square或者logistic Loss,而第二部分Ω正則項(xiàng)(eg:L1和L2等)針對(duì)的是樹的復(fù)雜度。XGBoost對(duì)于樹的復(fù)雜度定義如下:

我們來圖解一下:

這里面,樹的復(fù)雜度項(xiàng)包含兩個(gè)部分,葉子節(jié)點(diǎn)個(gè)數(shù)T以及葉子節(jié)點(diǎn)得分L2正則化項(xiàng)w(L2平滑避免過擬合)。我們移除常量,定義為每個(gè)葉節(jié)點(diǎn) j 上面樣本集合I j = {i|q(x i ) = j},并帶入上述復(fù)雜度函數(shù)到正則項(xiàng)中,得到新的目標(biāo)函數(shù):

g是一階導(dǎo)數(shù),h是二階導(dǎo)數(shù),T是葉節(jié)點(diǎn)個(gè)數(shù),w是葉節(jié)點(diǎn)的分?jǐn)?shù)。目標(biāo)包含了T個(gè)相互獨(dú)立的單變量二次函數(shù),化簡(jiǎn)為:

求w j 最優(yōu)解(求導(dǎo)=0)并帶入目標(biāo)函數(shù),得到最終的目標(biāo)函數(shù):

Obj表示在指定的樹結(jié)構(gòu)下,我們?cè)谀繕?biāo)上最多減多少,因此又叫結(jié)構(gòu)分?jǐn)?shù)(structure score),越小代表樹的結(jié)構(gòu)越好。那么如何尋找出一個(gè)最優(yōu)結(jié)構(gòu)的樹呢?XGBoost原始論文中給出了兩種分裂節(jié)點(diǎn)的方法。

Exact Greedy貪心算法:枚舉所有不同樹結(jié)構(gòu)的貪心法。

枚舉所有可能的樹結(jié)構(gòu)是不可行的??梢允褂秘澬乃惴?,從單個(gè)葉子開始不斷增加分支(分割),計(jì)算分割后左右兩側(cè)的導(dǎo)數(shù)和(提高效率),再計(jì)算增益。評(píng)估候選分裂方式,尋找最優(yōu)特征及對(duì)應(yīng)的值:

引入新葉子的懲罰項(xiàng),控制樹的復(fù)雜度,同時(shí)也作為閾值(增益大于閾值才分裂),起到了 預(yù)剪枝 的作用。論文中的算法:

但在連續(xù)特征上枚舉所有可能的分割方案,計(jì)算損耗還是太大。為了更高效,XGBoost先使用 pre-sorted算法 對(duì)所有數(shù)據(jù)根據(jù)特征數(shù)值進(jìn)行預(yù)排序,然后在每次分割時(shí),按順序訪問數(shù)據(jù)并根據(jù)增益找到每個(gè)特征的最優(yōu)分割點(diǎn),最后找到最優(yōu)特征及分割點(diǎn),將數(shù)據(jù)分裂成左右兩個(gè)子節(jié)點(diǎn)。

近似算法: 針對(duì)數(shù)據(jù)量太大的情況。

當(dāng)數(shù)據(jù)無法完全加載進(jìn)內(nèi)存或是分布式的情況下,貪心算法就不是特別有效了。

近似算法根據(jù)特征分布的百分位數(shù)(weighted quantile sketch算法使候選切分點(diǎn)在數(shù)據(jù)上均勻分布),提出候選切分點(diǎn),然后將連續(xù)特征映射到被這些候選切分點(diǎn)切分成的'buckets'中,聚集統(tǒng)計(jì)值,基于統(tǒng)計(jì)值推薦分割點(diǎn),找到最佳方案。該算法有兩種形式:全局近似和局部近似,差別是,全局近似是在創(chuàng)建樹的初始階段提出所有候選切分點(diǎn),所有的層都使用相同的proposal尋找切分點(diǎn);局部近似在每個(gè)節(jié)點(diǎn)分裂之后重新提出候選切分點(diǎn),這種改進(jìn)對(duì)更深層的樹更合適。近似算法的流程:

此外,稀疏自適應(yīng)分割策略也可以用于分裂節(jié)點(diǎn):

除了在目標(biāo)函數(shù)中引入正則項(xiàng),XGBoost還引入了 縮減(shrinkage)列抽樣(column subsampling) ,進(jìn)一步防止過擬合。通過在每一步的boosting中引入縮減系數(shù),降低每個(gè)樹和葉子對(duì)結(jié)果的影響;列抽樣是借鑒隨機(jī)森林中的思想,有時(shí)甚至比行抽樣效果更好,同時(shí)能夠加速計(jì)算。

綜上,基于貪心+二次最優(yōu)化的策略,XGBoost算法流程可以總結(jié)為:

2. LightGBM。

LigthGBM由微軟提供,也是對(duì)GBDT的高效實(shí)現(xiàn),類似XGBoost,采用損失函數(shù)的負(fù)梯度作為當(dāng)前決策樹的殘差近似值,去擬合新的決策樹。LightGBM比XGBoost快,內(nèi)存占用率低,準(zhǔn)確率也有提升。

動(dòng)機(jī):

面對(duì)工業(yè)級(jí)海量的數(shù)據(jù),傳統(tǒng)的boosting算法需要對(duì)每一個(gè)特征都要掃描所有的樣本點(diǎn)來選擇最好的切分點(diǎn),把整個(gè)訓(xùn)練數(shù)據(jù)裝進(jìn)內(nèi)存會(huì)限制訓(xùn)練數(shù)據(jù)的大小,不裝進(jìn)內(nèi)存,反復(fù)讀寫訓(xùn)練數(shù)據(jù)又非常耗時(shí)。

算法流程:

解決上述問題的直接方法就是減少特征量和數(shù)據(jù)量而且不影響精確度。LightGBM結(jié)合使用了以下兩種算法:

1. GOSS (Gradient-based One-Side Sampling): 基于梯度的單邊采樣,不使用所用的樣本點(diǎn)來計(jì)算梯度,而是對(duì)樣本進(jìn)行采樣來計(jì)算梯度。

GBDT不能應(yīng)用AdaBoost的樣本權(quán)重采樣,但每個(gè)數(shù)據(jù)都有不同的梯度值,丟掉梯度小、被學(xué)習(xí)得很好的數(shù)據(jù),有助于采樣。為了避免這樣做帶來的精確度影響(數(shù)據(jù)分布改變了),引入GOSS算法。

步驟:

根據(jù)樣本點(diǎn)的梯度的絕對(duì)值對(duì)它們進(jìn)行降序排序; --> 保留top a(大梯度數(shù)據(jù)的采樣率為a)個(gè)數(shù)據(jù)實(shí)例作為數(shù)據(jù)子集A,即前a*100%的樣本; --> 對(duì)于剩下的數(shù)據(jù)的實(shí)例隨機(jī)選取比例為b(小梯度數(shù)據(jù)的采樣率為b)的數(shù)據(jù)子集B,即b*(1-a)*100%個(gè)樣本點(diǎn); --> 將小梯度樣本乘上權(quán)重系數(shù)(1-a)/b并與大梯度樣本合并來計(jì)算信息增益,學(xué)習(xí)一個(gè)新的弱學(xué)習(xí)器; --> 不斷重復(fù)之前的步驟直到達(dá)到規(guī)定的迭代次數(shù)或者收斂為止。

估計(jì)信息增益的公式如下:

當(dāng)a=0時(shí),GOSS算法退化為隨機(jī)采樣算法;當(dāng)a=1時(shí),GOSS算法變?yōu)椴扇≌麄€(gè)樣本的算法。算法在不改變數(shù)據(jù)分布的前提減少了計(jì)算量、保證了精度,同時(shí)增加了基學(xué)習(xí)器的多樣性,提高了泛化能力。

2. EFB (Exclusive Feature Bundling):互斥特征捆綁,不使用所有的特征來進(jìn)行掃描獲得最佳切分點(diǎn),而是將某些特征捆綁在一起來降低特征的維度。

LightGBM不僅進(jìn)行了數(shù)據(jù)采樣,也進(jìn)行了特征抽樣,EFB將沖突比率(特征不互斥程度)較小的特征捆綁起來,使模型的訓(xùn)練速度進(jìn)一步提升。將特征劃分為更小的互斥綁定集群是一個(gè)NP-hard問題(圖著色問題),只能尋求允許小部分沖突的近似解。

步驟:

構(gòu)造一個(gè)圖(Graph),特征看作節(jié)點(diǎn)(node),特征之間的沖突值(cos夾角)作為邊(edge)的權(quán)值; -> 通過節(jié)點(diǎn)(特征)在圖中的度(degree)來降序排序特征/更高效的實(shí)現(xiàn)算法是將特征按照非零值的個(gè)數(shù)進(jìn)行排序; -> 遍歷每個(gè)特征,并按閾值K(最大沖突數(shù))合并特征,分配給具有小沖突的現(xiàn)有bundle或創(chuàng)建新bundle。

不同于XGBoost所使用的pre-sorted排序算法,LightGBM最后一步關(guān)于互斥特征的合并用到了直方圖(Histogram)算法:

基本思想是把連續(xù)的特征值離散成k個(gè)整數(shù),并構(gòu)造寬度為k的直方圖。遍歷數(shù)據(jù)時(shí),以離散化后的值為索引累積直方圖統(tǒng)計(jì)量,遍歷一次數(shù)據(jù)后,根據(jù)直方圖的離散值,遍歷尋找最優(yōu)的分割點(diǎn)。使用bin放棄了數(shù)據(jù)的細(xì)節(jié)特征,相似的數(shù)據(jù)被劃分到相同的桶中,差異就消失了,同時(shí),bin相當(dāng)于增加了正則化,數(shù)量越少懲罰越嚴(yán)重,欠擬合風(fēng)險(xiǎn)越高。但對(duì)決策樹這樣的弱學(xué)習(xí)器的正則化,抵消了離散化的分裂點(diǎn)對(duì)最終分割精度的影響,有效防止了過擬合。而且,由于離散化,模型效率上有很大提升。

決策樹增長(zhǎng)策略:

XGBoost采用的是Level-wise迭代方式,不加區(qū)分的一次分裂同一層的葉子,效率低下,可能產(chǎn)生不必要的葉結(jié)點(diǎn)。

LightGBM通過leaf-wise策略來生長(zhǎng)樹。每次從當(dāng)前所有葉子中,找到分裂增益最大的一個(gè)葉子,然后分裂,如此循環(huán)。

相比Level-wise,在分裂次數(shù)相同的情況下,leaf-wise可以降低更多的誤差,精度更好。但當(dāng)樣本量較小的時(shí)候,leaf-wise需要引入額外的參數(shù) max_depth 來限制樹的深度,避免過擬合。

此外LightGBm直接支持類別特征,支持特征并行和數(shù)據(jù)并行。

3. CatBoost。

CatBoost(categorical boosting)是俄羅斯的搜索巨頭Yandex在2017年開源的機(jī)器學(xué)習(xí)庫(kù)。是一種能夠很好地處理類別型特征的梯度提升算法。采用的策略在降低過擬合的同時(shí)保證所有數(shù)據(jù)集都可用于學(xué)習(xí)。

動(dòng)機(jī):

CatBoost算法的設(shè)計(jì)初衷是為了更好的處理GBDT特征中的categorical features。類別數(shù)較少的特征,一般利用one-hot編碼方法將特征轉(zhuǎn)為數(shù)值型用。另一種簡(jiǎn)單的方式是基于統(tǒng)計(jì),用標(biāo)簽的平均值來表示特征并作為節(jié)點(diǎn)分裂的標(biāo)準(zhǔn)(Greedy Target-based Statistics),但在訓(xùn)練和測(cè)試集數(shù)據(jù)結(jié)構(gòu)和分布不同時(shí),容易導(dǎo)致條件偏移問題,造成過擬合。

算法流程:

標(biāo)準(zhǔn)的改進(jìn)Greedy TS的方式是添加先驗(yàn)分布項(xiàng),這樣可以減少噪聲和低頻率數(shù)據(jù)對(duì)于數(shù)據(jù)分布的影響。CatBoost給出了一種解決方案:

1. Ordered TS克服梯度偏差(prediction shift);

在GBDT中,構(gòu)建下一棵樹包含兩步,選擇樹的結(jié)構(gòu)和設(shè)置葉子節(jié)點(diǎn)的值?;诋?dāng)前模型中的相同的數(shù)據(jù)點(diǎn),葉子節(jié)點(diǎn)的值都是被當(dāng)做梯度或牛頓步長(zhǎng)的近似值來計(jì)算,這樣會(huì)造成有偏的點(diǎn)態(tài)梯度估計(jì)(梯度在特征空間的任何域中的分布與該域中梯度的真實(shí)分布相比發(fā)生了偏移),導(dǎo)致過擬合。CatBoost和標(biāo)準(zhǔn)GDBT算法一樣, 第一階段 ,通過構(gòu)建新樹來擬合當(dāng)前模型的梯度,但在每一步,依靠目前已經(jīng)觀察的樣本集,對(duì)所有樣本進(jìn)行隨機(jī)排序,在不同的梯度提升步中使用不同的排列,即使用獨(dú)立的數(shù)據(jù)集,這樣就得到了無偏估計(jì)的模型。兩種模式的樹結(jié)構(gòu):Ordered/Plain。基本預(yù)測(cè)器是無關(guān)決策樹oblivious,將浮點(diǎn)型特征、統(tǒng)計(jì)值及one-hot編碼的特征二值化并放入向量中,利用二值化的特征快速評(píng)分,計(jì)算模型的輸出。由于整個(gè)層次上使用相同的分割標(biāo)準(zhǔn),oblivious樹是平衡的,不容易過擬合。

Ordered模型在學(xué)習(xí)訓(xùn)練的過程中,對(duì)于每個(gè)樣本,都單獨(dú)構(gòu)建一個(gè)利用該樣本之前的樣本點(diǎn)的梯度估計(jì)得到的模型,針對(duì)這些模型,估計(jì)該樣本的梯度,然后利用新模型重新對(duì)樣本打分。在算法中每步迭代 中,都在一個(gè)隨機(jī)排列 的基礎(chǔ)上構(gòu)建樹。 第二階段 ,在所有樹結(jié)構(gòu)都建立好的情況下,對(duì)兩種模式均采用標(biāo)準(zhǔn)梯度增強(qiáng)程序計(jì)算最終模型的葉子節(jié)點(diǎn)值。

2. 樣本的類別型特征轉(zhuǎn)為數(shù)值型;

類別形變量需要使用隨機(jī)排列,根據(jù)排在該樣本之前的該類別標(biāo)簽取均值作為節(jié)點(diǎn)分裂標(biāo)準(zhǔn),并加入優(yōu)先級(jí)和優(yōu)先級(jí)的權(quán)重系數(shù)。

其中P是添加的先驗(yàn)項(xiàng),a通常是大于0的權(quán)重系數(shù)?;貧w問題,一般先驗(yàn)項(xiàng)可取數(shù)據(jù)集標(biāo)簽的均值。對(duì)于二分類,先驗(yàn)項(xiàng)是正例的先驗(yàn)概率。

3. 特征組合;

特征組合可以得到一個(gè)新的強(qiáng)大的特征,但受制于特征數(shù)量,不可能考慮所有組合。當(dāng)前樹構(gòu)造新的分割點(diǎn)時(shí),CatBoost會(huì)采用貪婪的策略考慮組合。對(duì)于樹的第一次分割,不考慮任何組合。后面的分割中將所有類別型特征之間的組合考慮進(jìn)來,組合后的特征就會(huì)變成數(shù)值型的。對(duì)于數(shù)值型和類別型特征的組合:樹選擇的所有分割點(diǎn)都被視為具有兩個(gè)值的類別型特征,并且組合方式和類別型特征一樣。

(4). 提升樹算法工業(yè)應(yīng)用。

津南數(shù)字制造算法挑戰(zhàn)賽——賽場(chǎng)一:原料企業(yè)工藝優(yōu)化。

https://tianchi.aliyun.com/competition/entrance/231695/introduction?spm=5176.12281915.0.0.678010bdUCRYjV

季軍方案:nlceyes

https://github.com/nlceyes/TianChi-JinNan

DRL算法:

(1). 組合優(yōu)化。

運(yùn)用深度強(qiáng)化學(xué)習(xí)求解組合優(yōu)化問題是目前非?;馃岬囊粋€(gè)研究方向,強(qiáng)化學(xué)習(xí)天生就是做序列決策用的,組合優(yōu)化問題里邊的序列決策問題完全也可以用強(qiáng)化學(xué)習(xí)來直接求解,其難點(diǎn)是怎么定義state, reward。比較經(jīng)典的TSP(Traveling Salesman Problem旅行商問題)和VRP(Vehicle Routing Problem車輛路徑問題)主要的思路是encoder + decoder。encoder有很多方法,graph embedding, attention, glimpse, multi-head等,decoder也同樣。在工業(yè)領(lǐng)域,例如對(duì)于Job shop問題(加工車間調(diào)度問題)就是決定以什么順序在機(jī)器上加工工件。阿里菜鳥物流人工智能部,使用深度強(qiáng)化學(xué)習(xí)方法求解一類新型三維裝箱問題(將若干個(gè)長(zhǎng)方體物體逐個(gè)放入一個(gè)箱子中并最小化能夠容納所有物品的箱子的表面積),相對(duì)于已有的啟發(fā)式算法,獲得大約5%的效果提升。

1. Pointer Network:

Pointer Networks是一種seq2seq模型,由Google Brain和UC Berkeley聯(lián)合發(fā)表。傳統(tǒng)的seq2seq模型無法解決輸出序列的詞匯表會(huì)隨著輸入序列長(zhǎng)度的改變而改變的問題。特定情況下,我們希望輸出是輸入集合的子集,而Ptr-net在seq2seq基礎(chǔ)上引入attention機(jī)制并做了簡(jiǎn)化(傳統(tǒng)attention計(jì)算權(quán)重后對(duì)encoder的state進(jìn)行加權(quán)得到一個(gè)向量;Pointer Networks計(jì)算權(quán)重后選擇概率最大的encoder state作為輸出),類似編程語(yǔ)言中的指針(每個(gè)指針對(duì)應(yīng)輸入序列的一個(gè)元素,可以直接操作輸入序列而不需要特意設(shè)定輸出詞匯表),克服了seq2seq模型中“輸出嚴(yán)重依賴輸入”的問題。網(wǎng)絡(luò)對(duì)比如下:

seq2seq:

seq2seq屬于encoder-decoder結(jié)構(gòu)的一種,以LSTM為基本單元,一個(gè)RNN作為encoder將輸入序列壓縮成指定長(zhǎng)度的語(yǔ)義向量,另一個(gè)RNN作為decoder根據(jù)語(yǔ)義向量(只作為初始狀態(tài)參與運(yùn)算,與后面的運(yùn)算無關(guān))生成指定的序列,詳細(xì)結(jié)構(gòu)如下:

Attention Mechanism:

Attention Mechanism可以幫助模型對(duì)輸入的X每個(gè)部分賦予不同的權(quán)重,抽取出更加關(guān)鍵及重要的信息,使模型做出更加準(zhǔn)確的判斷,同時(shí)不會(huì)對(duì)模型的計(jì)算和存儲(chǔ)帶來更大的開銷 。

沒加入Attention機(jī)制時(shí),Y1 = f(C);Y2 = f(C,Y1);Y3 = f(C,Y1,Y2),各階段的輸出Yi用的都是同一個(gè)中間語(yǔ)義c表示,而C是由輸入的每個(gè)元素經(jīng)過Encoder編碼產(chǎn)生的,即C = F(x1,x2,x3,x4),輸入序列中的任意單詞對(duì)目標(biāo)Yi的影響力是一樣的。此外,Encoder不論接收多長(zhǎng)的序列,最后輸出都是一個(gè)中間語(yǔ)義向量C,語(yǔ)句很長(zhǎng)時(shí)C的表達(dá)能力堪憂。引入Attention的Encoder-Decoder框架,每一個(gè)輸出Yi用不同的中間向量Ci表示,反應(yīng)每個(gè)輸入元素不同的影響,即Y1 = f(C1);Y2 = f(C2,Y1);Y3 = f(C3,Y1,Y2)。

Ci定義為:

其中L x 表示輸入source長(zhǎng)度,a ij 表示輸出第i個(gè)元素時(shí)source輸入序列中第j個(gè)元素的注意力分配系數(shù),h j 是Source輸入序列中第j個(gè)元素的語(yǔ)義編碼。a ij 的概率分布值計(jì)算方法如下:

在時(shí)刻i生成Yi,i-1時(shí)刻隱藏層節(jié)點(diǎn)的輸出值H i-1 是已知的,計(jì)算H i-1 和Encoder的 每個(gè) 元素對(duì)應(yīng)的RNN隱藏層節(jié)點(diǎn)狀態(tài)h j 的相似性F(h j ,H i-1 )來獲得“對(duì)齊”可能性。函數(shù)F可以采用向量點(diǎn)積、Cosine相似性或MLP網(wǎng)絡(luò),輸出經(jīng)過Softmax進(jìn)行歸一化就得到了注意力分配系數(shù)的概率分布值。綜上,Attention機(jī)制的本質(zhì)思想可以表示為:

將Source中的構(gòu)成元素看作一系列<Key,Value>數(shù)據(jù)對(duì),Target中的某個(gè)元素看作Query,通過計(jì)算Query和各個(gè)Key的相似性得到每個(gè)Key的權(quán)重系數(shù),再對(duì)Value進(jìn)行加權(quán)求和,最終的得到Attention vector。

Self Attention:

又稱Intra(內(nèi)部) Attention。在機(jī)器翻譯場(chǎng)景中,可以捕獲同一個(gè)句子中單詞之間的一些句法特征或者語(yǔ)義特征,更容易捕獲句子中長(zhǎng)距離的相互依賴的特征,同時(shí)增加計(jì)算的并行性。

在圖像描述任務(wù)中,輸入一張圖片,AI系統(tǒng)輸出一句描述,語(yǔ)義等價(jià)地描述圖片所示內(nèi)容。可以使用Encoder-Decoder框架來解決,Encoder輸入一張圖片,提取特征后,Decoder使用RNN或LSTM來輸出自然語(yǔ)言句子。

這里引入Attention機(jī)制,輸出某個(gè)實(shí)體單詞時(shí)會(huì)將注意力聚焦在圖片中相應(yīng)的區(qū)域上,能顯著提升系統(tǒng)輸出效果。

Pointer Networks:

傳統(tǒng)Attention機(jī)制的公式:

首先整合Encoder和Decoder的隱式狀態(tài),再學(xué)習(xí)分配給輸入序列的權(quán)重系數(shù)a,最后加權(quán)求和得到vector來預(yù)測(cè)下一個(gè)輸出。Ptr-net沒有最后一個(gè)公式,直接將softmax結(jié)果當(dāng)成輸出,以指針的形式指向輸入序列中最有可能是輸出的元素。

Ptr-net很適合用來直接復(fù)制輸入序列中的某些元素給輸出序列,本文提到的組合優(yōu)化場(chǎng)景剛好符合。

應(yīng)用實(shí)踐:

https://github.com/higgsfield/np-hard-deep-reinforcement-learning

(2). 工藝參數(shù)推薦。

激光機(jī)工藝推薦、輔助波形調(diào)試、焚燒爐工藝優(yōu)化等場(chǎng)景,需要逐臺(tái)進(jìn)行調(diào)試,現(xiàn)場(chǎng)調(diào)試技術(shù)復(fù)雜,有經(jīng)驗(yàn)的技術(shù)人員的培養(yǎng)周期長(zhǎng)。基于圖嵌入的AI模型自動(dòng)調(diào)參顯著提升效率,節(jié)約成本。

1. GNN(圖神經(jīng)網(wǎng)絡(luò)):

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
經(jīng)典機(jī)器學(xué)習(xí)算法-第九章Xgboost
史上最詳盡的感知機(jī)教程:從原理到實(shí)踐
21句話入門機(jī)器學(xué)習(xí)
數(shù)學(xué)建模競(jìng)賽必須知道的模型算法分類
基于元學(xué)習(xí)的紅外弱小點(diǎn)狀目標(biāo)跟蹤算法
帶你一文透徹學(xué)習(xí)【PyTorch深度學(xué)習(xí)實(shí)踐】分篇——線性模型 & 梯度下降
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服