許鴻森 陳松林 李紅梅 劉張
摘要:該文利用機(jī)器學(xué)習(xí)算法對隨機(jī)序列數(shù)據(jù)進(jìn)行了實(shí)證研究。首先對比了常見機(jī)器學(xué)習(xí)算法模型在該數(shù)據(jù)上的預(yù)測性能,發(fā)現(xiàn)決策樹算法效果較好。其次,對決策樹算法模型進(jìn)行了參數(shù)調(diào)優(yōu),提升了該模型的預(yù)測準(zhǔn)確率。參數(shù)調(diào)優(yōu)后的算法模型的預(yù)測效果較好。
關(guān)鍵詞: 機(jī)器學(xué)習(xí);隨機(jī)序列;實(shí)證分析;參數(shù)調(diào)優(yōu)
中圖分類號:TP302 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)26-0166-03
Abstract: This paper makes use of machine learning algorithm to do empirical research on random sequences. First, the prediction performance of common machine learning algorithms on the data is compared, and it is found that the decision tree works well. Secondly, the parameter optimization of the decision tree algorithm model improves the prediction accuracy of the model. The parameter optimization algorithm model predicts better.
Key words: machine learning;random sequence;empirical analysis;parameter tuning
近年來,越來越多的人研究隨機(jī)序列數(shù)據(jù),因此隨機(jī)序列的應(yīng)用研究和預(yù)測未來隨機(jī)序列具有一定的理論意義與實(shí)際應(yīng)用價(jià)值。預(yù)測隨機(jī)序列的方法比較多,如:概率與統(tǒng)計(jì)法模型1,理論成熟,但準(zhǔn)確率低;BP算法模型2雖然能預(yù)測隨機(jī)序列中的隨機(jī)規(guī)律,但是網(wǎng)絡(luò)的初始權(quán)值和閥值都是隨機(jī)給出的沒有考慮歷史數(shù)據(jù)經(jīng)驗(yàn);遺傳算法模型3雖然能較好的隨機(jī)化搜索,但是它的搜索是隨機(jī)的,帶有一定的盲目性不能得到最優(yōu)的隨機(jī)序列預(yù)測。
本文基于真實(shí)的隨機(jī)序列數(shù)據(jù)利用機(jī)器學(xué)習(xí)算法對隨機(jī)序列數(shù)據(jù)進(jìn)行分析,并對決策樹算法模型進(jìn)行了參數(shù)調(diào)優(yōu),提升了該模型的預(yù)測性能。參數(shù)調(diào)優(yōu)后的算法模型的預(yù)測效果較好。
1 理論基礎(chǔ)
1.1 機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)是研究如何利用經(jīng)驗(yàn)來學(xué)習(xí),能夠較好的研究分析數(shù)據(jù)信息和從樣本變量中做出高精度的預(yù)測。機(jī)器學(xué)習(xí)通過學(xué)習(xí)數(shù)據(jù)中潛在的信息和數(shù)據(jù)間的關(guān)系,根據(jù)數(shù)據(jù)的概率分布做出分類決策。機(jī)器學(xué)習(xí)通過某種模型訓(xùn)練歷史數(shù)據(jù),對任意給定輸入盡量準(zhǔn)確地進(jìn)行輸出預(yù)測4。
1.2 決策樹
決策樹是用來劃分物體的類屬,樹中每一節(jié)點(diǎn)對應(yīng)一個(gè)物體屬性,而每一邊對應(yīng)于這些屬性的可選值,樹的葉節(jié)點(diǎn)則對應(yīng)于物體的每個(gè)基本分類本文有7個(gè)類屬。決策樹:從根節(jié)點(diǎn)開始一步步走到葉子節(jié)點(diǎn)(決策)決策樹,所有的數(shù)據(jù)最終都會落到葉子節(jié)點(diǎn),既可以做分類也可以做回歸。決策樹分類原理:一棵決策樹的生成過程主要分為以下3個(gè)部分:(1)特征選擇:特征選擇是指從訓(xùn)練數(shù)據(jù)中眾多的特征中選擇一個(gè)特征作為當(dāng)前節(jié)點(diǎn)的分裂標(biāo)準(zhǔn),如何選擇特征有著很多不同量化評估標(biāo)準(zhǔn),從而衍生出不同的決策樹算法。(2)決策樹生成:根據(jù)選擇的特征評估標(biāo)準(zhǔn),從上至下遞歸地生成子節(jié)點(diǎn),直到數(shù)據(jù)集不可分則停止決策樹停止生長。樹結(jié)構(gòu)來說,遞歸結(jié)構(gòu)是最容易理解的方式。(3)剪枝:決策樹容易過擬合,一般來需要剪枝,縮小樹結(jié)構(gòu)規(guī)模、緩解過擬合決策樹過擬合風(fēng)險(xiǎn)很大,理論上可以完全分得開數(shù)據(jù)5。如果不剪樹枝足夠龐大,每個(gè)葉子節(jié)點(diǎn)就只有一個(gè)數(shù)據(jù)。剪枝技術(shù)有預(yù)剪枝和后剪枝兩種。決策樹節(jié)點(diǎn)代表數(shù)據(jù)特征,每個(gè)節(jié)點(diǎn)下的分支代表對應(yīng)特征值的分類,而決策樹所有葉子節(jié)點(diǎn)則顯示所有模型的決策結(jié)果6。常用的度量方式包括信息熵(InformationGain)和基尼不純性(Gini Impurity)7。,熵是信息論中的概念,用來表示集合的無序程度,熵越大表示集合越混亂,反之則表示集合越有序。熵的計(jì)算公式為式(1)8。基尼不純性表示的是數(shù)據(jù)總體類別越多,GINI指數(shù)越大?;嶂笖?shù)的計(jì)算公式為式(2) 9:
[E =-P * log2P] (1)
[GiniP=1-k=1k|Ck||D|2] (2)
決策樹分類又分為CART分類、ID3分類、C4.5分類,由于本文所用隨機(jī)序列數(shù)據(jù)特征,在算法預(yù)測過程中,CART分類使用基尼指數(shù)來劃分屬性,在劃分后選擇最小屬性用為優(yōu)先劃分屬性,ID3分類在分支過程中喜歡偏向取值較多的屬性,C4.5分類需要對數(shù)據(jù)進(jìn)行多次排序和掃描,耗時(shí)較大,本文采用CART決策樹分類算法模型對隨機(jī)序列進(jìn)行預(yù)測分析。
1.3 隨機(jī)序列
一般的如果用X1,X2…Xn(表示n下標(biāo)與X)代表隨機(jī)標(biāo)量,隨機(jī)變量的出現(xiàn)就形成隨機(jī)序列,隨機(jī)序列的特征是序列和序列中的變量是隨機(jī)的。統(tǒng)計(jì)學(xué)家證明:采樣分析的準(zhǔn)確性隨著采樣隨機(jī)性的增加而大幅提高,但與樣本數(shù)量的增加關(guān)系不大10。人們隨機(jī)猜,每位概率是10%,每個(gè)序列概率不到萬分之一。
1.4 Python
Python具有強(qiáng)大且豐富的庫,是一種高級程序設(shè)計(jì)語言能較好的進(jìn)行數(shù)據(jù)處理。Python語言具有簡潔、易讀以及可擴(kuò)展性, Python里的numpy、pandas、scipy、matplotlib、sklearn庫為其提供了快速的數(shù)組處理、科學(xué)計(jì)算、可視化、機(jī)器學(xué)習(xí)。
2 實(shí)證分析
2.1 數(shù)據(jù)
論文利用爬蟲技術(shù)爬取中某網(wǎng)站的歷史數(shù)據(jù),用Python中的Request函數(shù)從網(wǎng)站獲取html格式的數(shù)據(jù)(json)格式,再將json格式的數(shù)據(jù)轉(zhuǎn)換成DataFrame結(jié)構(gòu),最后把每個(gè)頁面的數(shù)據(jù)進(jìn)行合并。接著用Beautiful Soup進(jìn)行數(shù)據(jù)轉(zhuǎn)換和清洗接著進(jìn)行本地存儲。
2.2 常用機(jī)器學(xué)習(xí)算法實(shí)證分析
常用預(yù)測模型實(shí)證分析機(jī)器學(xué)習(xí)分為監(jiān)督學(xué)習(xí)與非監(jiān)督學(xué)習(xí),而監(jiān)督學(xué)習(xí)又分為分類學(xué)習(xí)、回歸、聚類,分類學(xué)習(xí)中又分為二分類問題、多分類問題和多標(biāo)簽分類問題。隨機(jī)序列預(yù)測屬于多分類問題。本文首先利用機(jī)器學(xué)習(xí)中分類器中常見的7種算法模型對隨機(jī)序列數(shù)據(jù)進(jìn)行預(yù)測分析,所得結(jié)果如圖1所示。
圖1中,橫坐標(biāo)為常見7種機(jī)器學(xué)習(xí)算法模型,縱坐標(biāo)為各算法模型的預(yù)測準(zhǔn)確率??梢钥闯鯯VM(支持向量機(jī))模型準(zhǔn)確率最低,為8%;Decision Tree(決策樹)模型準(zhǔn)確率最高,為14%,明顯高于每位數(shù)字的隨機(jī)概率10%。下面將通過參數(shù)調(diào)優(yōu)技術(shù)進(jìn)一步提升預(yù)測的準(zhǔn)確性。
2.3 決策樹參數(shù)調(diào)優(yōu)
2.3.1 固定參數(shù)設(shè)置
固定參數(shù)設(shè)置如表1所示,criterion為特征選擇標(biāo)準(zhǔn),本文由于采用數(shù)據(jù)類別較多,為降低誤分類可能性的標(biāo)準(zhǔn),因此選用基尼指數(shù)作為固定參數(shù)。splitter為特征劃分選擇標(biāo)準(zhǔn),由于數(shù)據(jù)樣本不大,故選擇最優(yōu)標(biāo)準(zhǔn)作為固定參數(shù),目的找出所有特征劃分時(shí)的最優(yōu)劃分點(diǎn)。random_state為隨機(jī)種子,隨機(jī)種子會隨機(jī)拆分訓(xùn)練集和測試集,因此固定隨機(jī)種子參數(shù)一致能夠保證每次輸出結(jié)果的一致性,固定隨機(jī)種子為常用的默認(rèn)值。min_weight_fraction_leaf為葉子節(jié)點(diǎn)最小樣本權(quán)重,本文所用數(shù)據(jù)無缺失值,因此在使用葉子節(jié)點(diǎn)所有樣本權(quán)重的最小值參數(shù)時(shí)不做變化,因這個(gè)值限制了葉子節(jié)點(diǎn)所有樣本權(quán)重和的最小值,如果小于這個(gè)值,則會和兄弟節(jié)點(diǎn)一起被剪枝。因此固定為參數(shù)中的默認(rèn)值零。
為了提高該模型的準(zhǔn)確性能,引入了交叉驗(yàn)證評估,選用了10折交叉驗(yàn)證,在交叉驗(yàn)證中,不重復(fù)隨機(jī)將訓(xùn)練數(shù)據(jù)集劃分為10個(gè),其中9個(gè)用于模型訓(xùn)練,1個(gè)用于測試,重復(fù)10迭代,每次迭代所得到一個(gè)性能評價(jià)指標(biāo),最終求出平均的一個(gè)值,以降低模型評估結(jié)果的方差。
2.3.2 變動(dòng)參數(shù)設(shè)置
本文中模型使用的變動(dòng)參數(shù)如表2所示。
Max_depth為最大深度,決策樹最大深度決定了樹的增長。Min_samples_leaf為葉子節(jié)點(diǎn)最少樣本數(shù),它限制了分支葉子上面的最小樣本數(shù)量,如果在生成過程中某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù),則會和兄弟節(jié)點(diǎn)一起被剪枝。Min_samples_split為內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù),它限制了子數(shù)繼續(xù)劃分的條件,如果某節(jié)點(diǎn)的樣本數(shù)少于內(nèi)部節(jié)點(diǎn)最小樣本數(shù),則不會繼續(xù)選擇最優(yōu)特征來繼續(xù)劃分。
2.3.3 參數(shù)調(diào)優(yōu)結(jié)果分析
如圖2所示,橫坐標(biāo)為Max_depth最大深度,縱坐標(biāo)Min_samples_leaf為葉子節(jié)點(diǎn)最少樣本,豎坐標(biāo)Accuracy為準(zhǔn)確率。當(dāng)Min_samples_split =4時(shí),隨著Max_depth的變化,準(zhǔn)確率變化不大,但是隨著Min_samples_leaf的增加,準(zhǔn)確率逐漸增大。特別的,當(dāng)Min_samples_leaf=11或者12時(shí),準(zhǔn)確率取得最大值0.2。
同理,如圖3所示。當(dāng)Min_samples_split =6時(shí),隨著參數(shù)的變化,準(zhǔn)確率有一定的起伏波動(dòng),特別的,當(dāng)Min_samples_leaf=1,Max_depth=6時(shí),準(zhǔn)確率取得最大值0.213。
當(dāng)Min_samples_split=8時(shí),結(jié)果如圖4所示。當(dāng)Min_samples_leaf=1時(shí),Max_depth=7時(shí)獲取局部最優(yōu)準(zhǔn)確率為0.2。在Min_samples_leaf=11或者12時(shí)時(shí)獲取局部最優(yōu)準(zhǔn)確率為0.2。
綜上所述,在Min_samples_split取不同值的情況下,通過調(diào)節(jié)參數(shù)Min_samples_leaf和Max_depth,將模型的預(yù)測準(zhǔn)確率從14%提高到了21.3%,這說明調(diào)參優(yōu)化對于提高模型預(yù)測準(zhǔn)確率是有效的。
3 總結(jié)
本文運(yùn)用機(jī)器學(xué)習(xí)算法模型對隨機(jī)序列數(shù)據(jù)進(jìn)行分析,對比了常見的機(jī)器學(xué)習(xí)算法在隨機(jī)序列數(shù)據(jù)上的預(yù)測準(zhǔn)確率,并對效果針對較好的算法模型進(jìn)行了參數(shù)調(diào)優(yōu),進(jìn)一步提高了模型的預(yù)測效果。結(jié)果表明模型預(yù)測效果大大高于隨機(jī)猜想概率,并能夠在一定的程度上提高正確率。
參考文獻(xiàn):
[1] 李德勝,張才仙.淺議概率統(tǒng)計(jì)學(xué)在彩票中獎(jiǎng)技巧方面的應(yīng)用[J].科技資訊,2006(32).
[2] 朱武亭,劉以建. BP網(wǎng)絡(luò)應(yīng)用中的問題及其解決[J].上海海事大學(xué)學(xué)報(bào),2005(2).
[3] 薛愈潔.基于非隨機(jī)初始種群遺傳算法的學(xué)習(xí)分類器系統(tǒng)[J].計(jì)算機(jī)時(shí)代,2018(3)
[4] 曾華軍,張銀奎,等,譯.機(jī)器學(xué)習(xí)[M].北京:機(jī)械工業(yè)出版社,2003.
[5] http://blog.csdn.net/suipingsp機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實(shí)現(xiàn)—決策(Decision Tree).
[6] 范淼 李超. Python機(jī)器學(xué)習(xí)及實(shí)踐[M].清華大學(xué)出版社,2016.
[7] Gavin hackeling.Mastering Machine Learning withscikit-learn. 2014 Packt Publishing.
[8] Peter Harrington. Machine Learning in Action機(jī)器學(xué)習(xí)實(shí)戰(zhàn)[M].李銳,李鵬,曲亞東,王斌,譯.人民郵電出版社,2013.
[9] [美] Sebastian Raschka. Python機(jī)器學(xué)習(xí)[M].高明,徐瑩,陶虎成,譯.機(jī)械工業(yè)出版社,2017.
[10] [英]維克托·邁而-舍恩伯格,肯尼思·庫克耶.大數(shù)據(jù)時(shí)代[M].盛楊燕,周濤,譯.浙江人民出版社,2012.
[通聯(lián)編輯:代影]