標籤:理論 反向 0.12 過程 db2 意義 com 電台 ota
轉載:http://www.cnblogs.com/zhijianliutang/p/4067795.html
前言
有段時間沒有進行我們的微軟資料採礦演算法系列了,最近手頭有點忙,鑒於上一篇的神經網路分析演算法原理篇後,本篇將是一個實操篇,當然前面我們總結了其它的微軟一系列演算法,為了方便大家閱讀,我特地整理了一篇目錄提綱篇:大資料時代:深入淺出微軟資料採礦演算法總結連載,我打算將微軟商業智慧中在DM這塊所用到的演算法全部集中在這個系列中,每篇包含簡要演算法原理、演算法特點、應用情境以及具體的操作詳細步驟,基本能涵蓋大部分的商業資料採礦的應用情境,有興趣的童鞋可以點擊查閱。本篇我們將要總結的演算法為:Microsoft 神經網路分析演算法,此演算法微軟挖掘演算法系列中最複雜也是應用情境最廣泛的一個,簡單點講:就是類比我們的大腦從茫茫的資料海洋中思考出有用的資訊,來達到資料採礦的目的。原理可以參考上篇。
應用情境介紹
關於Microsoft神經網路演算法的應用情境還是蠻多的,在上一篇原理篇我們就介紹過,其主要是應用在以下領域:
當然以上的應用情境說的很泛泛,並且沒有一個特定的應用情境,這個是可以理解的,因為此演算法為類比生物行型演算法,也就是說在特定的環境中只要有足夠的”證據“支援,我們人類自己能通過主觀判斷出結果的應用情境,Microsoft神經網路演算法就能應用,但是當我們人腦思維對於少量”證據“下可以主觀的判斷,但是面對茫茫的”證據“海洋下我們人類腦子想要理清頭緒,然後判斷出結果就比較吃力了,這樣的就是神經網路應用情境了。
上面的幾種應用情境中,並不是只有Microsoft神經網路演算法就能挖掘的,比如:營銷中評比郵件還是電台廣告這兩種方式那種更有效,其實這是Microsoft決策樹分析演算法的最佳應用情境;曆史資料預測股票升降這個是Microsfot時序演算法的典型應用情境;....但是所有的這些這些...是因為我們能確定下來前提或者說挖掘範圍:比如:營銷評比,我們就比較郵件還有電台廣告...但是出現一種特殊情況:比如兩者都不能促進營銷...反而是因為公司最近加強了銷售手段而提升的,或者說某種不確定的因素造成的業績提升,對於這種情況我們利用Microsoft決策樹演算法也是沒用的。而用Microsoft神經網路演算法就可以分析出來。
還有一種更特殊的應用情境:當我們面對一堆的資料而要基於某種目的去資料採礦時,感覺到無從下手或者在DM中選擇不到合適的演算法的時候,這時候就是Microsoft神經網路分析演算法的應用情境了。
技術準備
(1)微軟案例資料倉儲(AdventureWorksDW208R2),案例資料倉儲中的話務中心的資料表,一張事實表FactCallCenter,下面步驟中我們會詳細介紹這張表裡面的資料。
(2)VS2008、SQL Server、 Analysis Services。
挖掘目的
在一些大的商業公司中都有自己的話務中心,比如:移動的10086,聯通的10000....等等,而這些話務中心中除了再聯絡完他們之後讓你選擇:滿意、不滿意、灰常不滿意來作為他們的服務等級標準外,在行業中還有一個指標來評比,這個指標被稱作:掛斷率,用來反映客戶的失望度,就是在我們接進他們的客服中心的之間,如果選擇人工服務,他讓你等待...你不爽,掛斷了,這就產生了一個掛斷案例,而通過掛斷案例總和在所有呼入人數的所佔比就是掛斷率指標了。掛斷率越高說明他們客服中心服務品質越差。
挖掘的目的就是找出影響“掛斷率”的因素有哪些,是客服MM太少?態度不好?聲音不甜美?服務不周到?.........從而提高話務中心的服務品質,增加營收。
操作步驟
(1)我們這裡還是利用上一期的解決方案,直接開啟,添加資料來源檢視,方法參照前幾篇,我們直接看圖:
右鍵,來瀏覽下這個表中的資料明細:
參照微軟案例資料庫官方說明,我們將這個事實表裡面資料明細列出來。下面是欄位說明:
列名 |
包含內容 |
FactCallCenterID |
資料匯入到資料倉儲中時建立的一個任意鍵。 |
DateKey |
話務中心的運營日期。 由於供應商為每個運營日中的每個輪班時間都提供了一個單獨的報表,因此日期不是唯一的。 |
WageType |
指示當天是工作日、周末還是節假日。 |
Shift |
指示為其記錄呼叫的輪班時間。此話務中心將工作日劃分為四個輪班時間:AM、PM1、PM2 和 Midnight。 |
LevelOneOperators |
指示值班的一級接線員的數量。話務中心員工從一級開始起步。 |
LevelTwoOperators |
指示值班的二級接線員的數量。員工必須達到一定數量的工作小時數後,才有資格成為二級接線員。 |
TotalOperators |
此輪班時間記憶體在的接線員的總數。 |
Calls |
此輪班時間內收到的呼叫數。 |
AutomaticResponses |
完全通過自動呼叫處理(互動式語音應答,即 IVR)來處理的呼叫數。 |
Orders |
由呼叫產生的訂單數。 |
IssuesRaised |
由呼叫產生的需要後續操作的問題的數量。 |
AverageTimePerIssue |
應答一次來電所需的平均時間。 |
ServiceGrade |
指示此輪班時間的“掛斷率”。掛斷率是話務中心經常使用的一個指標。掛斷率越高,說明客戶的滿意度越差,因此丟失潛在訂單的可能性也就越大。掛斷率是按輪班時間計算的。 |
其實上面的表中已經列出了幾個關鍵字段,我們來看,其中我們上面提到的“掛斷率”:ServiceGrade欄位了,前面的一些行就是記錄一些話務中心工作資訊了,當我們面對這些資訊是無從下手的,因為我們看不出來那些因素會影響到ServiceGrade指標值的大小的,當然這時候我們就用Microsoft神經網路分析演算法採取誘探的方式進行挖掘分析了。
(2)建立採礦結構
我們來建立這個資料採礦模型,簡單的步驟,具體內容可參照我之前的部落格內容,看幾個關鍵步驟:
我們點擊下一步,然後進行輸入和輸出的設定
這裡我們不知道那些因素會影響到“掛斷率”這個指標,我們就乖乖的全選得了,這叫做:寧濫勿缺!....我去....但是有兩個我們還是沒選,一個DateKey..這個是上班記錄日期,我基本可以肯定這個指標和那天上班沒有毛關係,當然你也可以選擇,那處理時間更長一些,還有一個是FactCallCenterID,這個是索引值,肯定不選擇的,然後輸出我們選擇了:ServiceGrade掛斷率、然後還有Orders(產生的訂單量),這個和績效有關,我們順便看看那些因素會產生更多的訂單,選他的原因你懂得!然後還有一個LevelOneOperators,這個是第一個崗位的數量,通過它我們可以分析出這種分兩種崗位層級會不會有用。
我們點擊下一步:
這裡提示下,神經網路分析演算法是不允許切入的,這個是可以理解的,因為它不是線性函數,也就是說你切入的是一個個“神經元”節點,而這些“神經元”同樣又依靠其它的“神經元”支撐,所以理論上你的下鑽是毫無意義的,不明白的可以參考我上篇原理篇。
我們來部署該採礦模型,然後進行處理,過程簡單,不廢話介紹。
結果分析
不介紹,我們直接看結果
神經網路的“模型查看器”很簡單,可以看到只有一個面板,裡面分為兩部分:輸入和輸出,下面的就是各個變數的屬性值,通過操作上面的輸入和輸出就可以分析不同變數對輸出的影響了,這個類似於“群集演算法”的特徵分析面板。
輸入屬性很簡單,我們可以選擇上面我們選擇的各種屬性:
可以選擇值
這裡我們可以看到,上面我們選擇了“自助應答”這個值,但是它顯示的值是一個分段的區間值,這裡我們要說明一下神經網路的特點,對於離散型屬性值,Microsoft神經網路是採取採樣分段來進行區間值截斷,但是這個區間值並不是嚴格意義的按照數學上的等比數列進行分組,比如:
我們來看一下ServiceGrade這個離散值在vs中的分組方式:
ServiceGrade 屬性在理論上是介於 0.00(應答所有呼叫)和 1.00(掛斷所有呼叫)之間的數值,但是在神經網路演算法中是按照上面的圖進行分組的,會將分組成 0.0748051948 - 0.09716216215 這樣的範圍。儘管此分組在數學上很準確,但此類範圍可能對業務使用者並沒有太大意義。要以不同的方式對數值進行分組,可以建立數值資料列的一個或多個副本,並指定資料採礦演算法應如何處理這些值。這樣更能順利的接近我們的目標分析值。
我們可以看到,這個輸出也是同樣的方式:
下面我們來分析上面的第一個挖掘目的:那些因素會影響(掛斷率)Service Grade.我們選擇一個分組最高的,一個分數最低的
總可以看到,我們選擇的輸出為“掛斷率”:Service Grade 這裡選擇了兩個區間:0.030-0.072和0.126-0.210,0.210的概念就是有一百個客戶打來電話,人家不爽,給你掛斷的人數有21個,已經是一個很高的值了,這個值越高說明服務品質越差,我們來看一下變數,很明顯:影響“掛斷率”的第一個因素為:Average Time Per Issue(應答花費的平均時間)。
“應答花費的平均時間”在44.000-70.597之間的更傾向於0.030-0.072這個低分值的應答率,說明啥?也就是說人家打來電話一般在這個時間給你解決掉的,人家都比較滿意,都不會掛斷你。
第二個因素“Orders”訂單數量,這個也是在321.940-539.000之間的,掛斷率更低,其實這個應該是因為掛斷率低而導致訂單數量增加
我們來看第三個因素“應答花費的平均時間”在89.087-120.000之間的,掛斷率直接飆升到0.126-0.210.....納尼!!!這是為毛?...客服應答的時間越久...掛斷率越高!
哦哦...我猜這部分一般是客服MM給人家解釋的不滿意,然後人家一直想問明白,丫的客服MM就是解釋不清楚,於是乎客戶果斷掛電話,不再鳥你了。當然還存在一種情況就是客戶打電話一直騷擾著客戶MM...然後...然後客服MM就給掛斷了...當然..這些就是猜測了...我們不關心過程,只關心結果:在這個區間的掛斷率就是高,有圖有真相。
我好奇的比較下“應答花費的平均時間”的兩個區間的對比值,我們來看:
嘿嘿....應答平均時間在區間44.000-70.597之間的“掛斷率”就是很低,而且評分在100分!看,機率在53.48%,而成為高“掛斷率”的機率才為:6.18%。
下面的應答平均時間在區間89.087-120.000之間的“掛斷率”很高,評分在74.01,評分值的高低反映的就是這個判斷的可信度大小,並且看成為高“掛斷率”的機率飆升為:45.22%。
再往下看,我們還發現了一個更可愛的情況,截個圖看看:
這個Shift的值代表為輪班時間,看上面的值顯示的是midnight....深夜...漆黑的夜晚...給客服MM打電話的掛斷率機率都挺低的....這是神馬原因.....看來微軟給的案例資料庫資料還是挺真實的!
其它的屬性我這裡就不分析了,方法同上。其實到這裡我們已經利用Microsoft神經網路分析演算法已經分析出影響“掛斷率”最重要的因素為:Average Time Per Issue(應答平均時間),下面我們調整輸入,直接來分析這個因素:
在44.000-70.597之間的,清一色的低掛斷率,並且產生的訂單量最可能為321.940-539.000,汗...你妹...上班期間最好還是在深夜。下面接著看:
換了一個區間...結果基本沒變,原因不解釋
下一個區間,情況發生了變化,在這個區間裡,訂單為50.000-181.677之間的已經展現出來高”掛斷率“的趨勢。
.....我去...到了這個區間...成了清一色的高”掛斷率”,並且上班時間成了(PM2)下午....訂單數減少至50.000-181.677....看來下午客服中心應該都放假,全部改成“深夜”上班...嘿嘿...
為此我通過資料來源檢視瀏覽資料,通過透視表來驗證一下我們的推斷是否正確,看看下面的圖就知道了:
是吧...平均應答時間越久,應答率分數越高,說明掛斷率越高。
我們也可以藉助Microsoft神經網路演算法的特性,對上面咱們推斷的結論進行反向驗證,我們將輸出改成Average Time Per Issue “應答平均時間”,然後還是選擇兩個區間值來看看,影響這個屬性的變數值有哪些
看到了嘛...很高的掛斷率在0.126-0.210之間的應答平均時間更傾向於89.087-120.000,同樣低“掛斷率”的就趨向於44.000-79.597了。
咱們屬性值就分析到這裡,有興趣的童鞋可以繼續分析其它的。
大資料時代:基於微軟案例資料庫資料採礦知識點總結(Microsoft 神經網路分析演算法)