前言
有段時間沒有進行我們的微軟數據挖掘算法系列了,最近手頭有點忙,鑒于上一篇的神經網絡分析算法原理篇后,本篇將是一個實操篇,當然前面我們總結了其它的微軟一系列算法,為了方便大家閱讀,我特地整理了一篇目錄提綱篇:大數據時代:深入淺出微軟數據挖掘算法總結連載,我打算將微軟商業智能中在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神經網絡算法的應用場景非常的廣泛,其實這幾年漸漸興起的語音識別、人工智能、文本挖掘等領域背后的最重要的支撐算法就是神經網絡算法了,有關基礎原理可以參照我上一篇文章,本篇就不做深入介紹了,后續文章繼續分析其它問題。
文章的最后我們給出前幾篇算法的文章連接:
如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。
文章列表