前言
本篇我們將總結的算法為Microsoft時序算法的結果預測值,是上一篇文章Microsoft時序算法的一個總結,上一篇我們已經基於微軟案例數據庫的銷售歷史信息表,利用Microsoft時序算法對其結果進行了預測,並且相應形成了折線預測圖和模型依賴屬性,有興趣的同學可以點擊查看,但是上篇文章的能給出的只是一個描述趨勢的折線圖,從圖中我們能分析出的知識也只能通過語言描述,而這里面缺少更確切的數據支撐,作為一個凡事以數據說話的年代顯然這是不夠的,本篇我們將根據上一篇的預測過程詳細的給出預測結果值,形成一份可供具體參考的數據明細表。
應用場景介紹
作為Microsoft時序算法的應用場景,在上一篇我們已經詳細介紹了,本篇就不再贅述,總結一下就是凡事要應用時間總線為依據,根據以往歷史事例記錄推測以后將要發生的結果值,此種場景我們都會應用到時序算法。
比如:預測銷售記錄、預測營業額度、預測明年公司員工人數、預測下個月房價、預測明年.....
但其實凡此種種我們要挖掘的其實是一種規律,一種事態進展中的導向,而這些可能不基於數據僅憑經驗值是做不到的或者說不准確的,凡事有因必有果,很多事情冥冥中已經注定,汗...有點佛家寓言的味道!時序算法更重要的是展現這注定的過程,然后推算出將要發生的結果。對於本來的事例就無規律可循,這種事情是用Microsoft時序算法無法預測的,或者預測結果是不准的,比如:大師,您幫我算算我下期彩票買什么號能中一等獎???我那個去!....汗......也能算..只是不准!...
技術准備
(1)參照上一篇文章,我們利用微軟提供的案例數據倉庫(AdventureWorksDW2008R2),這這里我們只需要用到一張表,確切的說是一張視圖vTimeSeries,其實這里面就是記錄的往年不同月份的銷售匯總值,稍后我們將詳細分析這部分數據。
(2)VS2008、SQL Server、 Analysis Services
操作步驟
(1)這里我們應用上期中時序算法的解決方案,我們打開:
這里上篇文章我們已經分析的很詳細,有興趣的童鞋可以參照上一篇文章,到此我們來可以驗證下該模型的准確度怎么樣,我們來查看“挖掘准確性圖表”
可以看到此處為灰色顯示,也就是說對於Microsoft時序算法模型,准確度模型是沒法預測的,這也是在Microsoft所有的挖掘算法中唯一一個不能利用准確度性圖表進行驗證的,原因很簡單:事情還沒發生,你驗證個P...
以往的挖掘模型可以通過歷史遺留的部分事例進行驗證模型的准確度,而時序算法不行,因為你的時間維度還沒演變到此,所有的所有的都還未發生,沒法驗證。當然我們可以采用交叉驗證根據以往的事例來驗證當前時間以前發生的事是否准確。咱們后期進行....
(2)基於現有Microsoft時序算法來推測未來發生結果值
這個步驟沒啥復雜的,就是根據上篇我們的時序挖掘模型來推測出未來將要產生的銷售額和銷售量,我們會推測出詳細的結果值表
我們進入“挖掘模型預測”面板
我們選擇源為“預測函數”,將Amount、Quantity兩個預測值拖到條件/參數窗口,然后輸入預測步驟為5,並且將主鍵列加入或者我們直接填寫查詢語句:
點擊運行按鈕,我們來查看結果:
結果出現了,M200這款自行車在歐洲在2008年的銷售額和銷售量我們已經確切的預測出來了,因為我們只是預測了5個月,其它時間段的也可以推測出,當然其它的產品可以查看,此處我們就不展開了,剩下的工作我們將它們保存到數據庫:
我們來查看數據庫明細:
嘿嘿...剩下的事情就是拿着這份數據去找BOSS了....然后...就然后了......
-------------------------------------------------------霸氣的分割線------------------------------------------------------------------
到此貌似本篇文章也應該結束了,但是我估計到此結束會有很多朋友罵我是標題黨,你丫的不是說要玩彩票預測嘛,丫不是說時序算法可以預測未來的事情嘛....咋認慫了呢....
上面的應用場景中也提到了此問題...鑒於此,我懷揣着成為“大濕”的夢想,小心翼翼的打開了百度,然后輸入了:彩票,希望從中找到點數據來瞅瞅:
看到了這霸氣的百度樂彩,而且是頭條顯示,我弱弱的點開了它,然后很仔細的看了一圈,終於在一個小角落里找到了一個比較簡單的東西,“排列三”,嗯...就三個數是不是還好弄點,要不推測的數太多了會不會把自己搞死,嘿嘿...我打開了它,有圖有真相:
在中間一個猥瑣的地方找到了“歷史數據”,我點開了它,找的就是它:
嘿,就是它,我找到了部分歷史數據,而且里面數據都很標准,完全符合我們時序預測的算法,期號我們做主鍵,日期列也有..開獎號碼為預測列,嘿嘿..百度做的還是蠻可愛的!
別高興的太早,丫找到數據就牛了,這些數據隨便找個網站一大堆大堆的!
好吧,我們低調的打開了Office的Excel軟件,然后把這些數據搞到Excel中來:
點擊導入按鈕,新建一個Sheet來存儲數據,清理掉不需要的冗余數據,得到標准的規范數據:
然后通過SQL Server自帶的導入工具,順利的導入到數據庫中,為了研究好這三個數,單個數字之間有沒有關聯性,為此我單獨創建了一張表,將這三個數字拆分開來研究,希望這樣得到的數據會准確一點點...以防被拍磚的風險,我們來看下建庫腳本:
SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TicketResult]( [開獎日期] [datetime] NULL, [期號] [float] primary key not NULL, [開獎號碼] [nvarchar](255) NULL, [本期銷量] [float] NULL, [FirstNo] [int] NULL, [TwoNo] [int] NULL, [ThirdNo] [int] NULL ) ON [PRIMARY] GO
這個腳本很土,很多地方不標准,玩過多年數據庫的銀們不要噴我,中文字段名、沒建索引等等吧,為了演示方便我就先湊着用着。我們將Excel導入到庫中通過語句插入到這張表中,這過程簡單的很,我們就不貼圖了。有問題的可以私信我,我們直接看結果:
數據有了,剩下的步驟就是打開我們的解決方案,然后新建數據源,然后新建數據源視圖,然后新建數據挖掘結構,具體的詳細步驟不清楚的可以參考我之前文章或者私信我,這里我們只看一下新建挖掘結構的過程中的輸入、輸出和鍵的設置:
然后完成該模型的建立,我們來看看此模型方案:
到此我們的數挖掘模型已經建立完畢,然后部署下,然后處理下,我們就可以瀏覽結果了!
懷着沉重的心情,我悄悄的打開了“挖掘模型查看器”,結果,你懂得...
你妹呀,這是神馬?一堆亂碼...一片混沌嘛...
但是、但是我不能對不起“大濕”的稱號,我要從中找到點神馬...哪怕是一點點蛛絲馬跡..我小心翼翼的選擇了第一個數字的預測:FirstNO:
從選擇第一個數字的預測圖我們可以看到,歷史結果值集中在中間值,以4為最佳值,並且以此值作為分割點向兩側逐漸減少出現次數,然后我通過點擊順利的預測出來明天也就是2014年10月15號的第一個數字應該是4!...我去...好數字...這個數字出現概率最高,為了給自己挽回顏面,可愛的VS也將它作為明天最佳的預測值。
然后..然后我又看了其它數字的預測,通過上面的方法將明天的結果預測結果值保存到了數據庫,我們來看:
我們點擊來看運行結果:
哈哈...明天的彩票值我已經順利的預測出來了:看看...4、7、5!嘿嘿...就是這個值了..有興趣的童鞋可以去買了,中了算你的,不中也算你的...明天不中我還會贈送后天...大后天!。。。
其實經過上面的分析已經得到對於排列三這種彩票他是有規律就是出現的概率集中於中間值,也就是4,如果從長期來看買這塊數據肯定能賺。
然后我們將這部分值保存到數據庫,然后拿着這部分勝利的數據,去到彩票網站買彩票去!
嘿嘿...接下來的事我就等着:升職、加薪、出任CEO、贏取白富美、走上人生巔峰.....哈哈...
我果斷的掏出了手機,進入到了彩票網站,選擇排列三這種彩票,准備購買:
4+7+5=16...哈哈,我利用“求和”這種方案就買16這個數字了!
但是我詳細看了看...
尼瑪!...選擇的數字得到的回報率是不一樣的!也就是說越選擇接近4的中獎概率高,但是得到的獎金回報率也少,選擇離4遠的數值中獎概率低,但是得到的獎金回報率也高!...
我那個去...
我的高富帥夢、我的大濕夢!.....
結語
呵呵...通過上面的分析基本上我們能看到時序算法的好處,從上面的結果預測值來看..其實和他們官網給出的獎金方案還是有出入的,比如我預測求和值的大部分是16、14、17...這些值全部大於11...而根據它上面的圖片可以看到他們推薦的最高中獎數應該是10和11...返回金額都是9塊錢!
有興趣的可以繼續分析這塊..可能對於彩票這種概率事件的預測沒有規律可循,但是生活中大部分事件都有規律可循的,而這些是我們所要挖掘和分析的。
文章的最后我們給出前幾篇算法的文章連接:
如果您看了本篇博客,覺得對您有所收獲,尊重別人的勞動成果,請不要吝嗇您的“推薦”。