朱幫助,林超斌
(五邑大學(xué) 系統(tǒng)科學(xué)與技術(shù)研究所,廣東 江門 529020)
基于Matlab組件編程技術(shù)的IVCRMS設(shè)計(jì)與實(shí)現(xiàn)
朱幫助,林超斌
(五邑大學(xué) 系統(tǒng)科學(xué)與技術(shù)研究所,廣東 江門 529020)
人工智能技術(shù)和可視化編程技術(shù)的引進(jìn)使得傳統(tǒng)客戶關(guān)系管理系統(tǒng)(CRMS)發(fā)展成為智能可視化CRMS(IVCRMS),然而人工智能技術(shù)通常需要進(jìn)行復(fù)雜的運(yùn)算處理,可視化編程技術(shù)卻難以勝任這一要求. 為解決這一問題,論文提出一種基于Matlab組件編程技術(shù)的實(shí)現(xiàn)方法,先將人工智能算法封裝為COM組件,再利用可視化編程語言調(diào)用該組件,進(jìn)而形成IVCRMS,通過一個(gè)客戶價(jià)值細(xì)分的實(shí)例分析說明了IVCRMS設(shè)計(jì)和實(shí)現(xiàn)的過程.
可視化編程;人工智能;Matlab組件;智能可視化客戶關(guān)系管理系統(tǒng);客戶價(jià)值細(xì)分
在現(xiàn)代企業(yè)管理的核心理念里,客戶是企業(yè)最重要的資源和企業(yè)間競(jìng)爭(zhēng)的主要對(duì)象.[1]只有選擇了正確的客戶,企業(yè)才能實(shí)現(xiàn)健康快速發(fā)展和利益最大化,因此企業(yè)必須正確判斷客戶價(jià)值. 客戶關(guān)系管理系統(tǒng)(Customer Relationship Management System,CRMS)的產(chǎn)生,為這一問題的解決提供了一種有效手段. 目前,CRMS正朝著網(wǎng)絡(luò)化與智能化的方向迅速發(fā)展[2],如何將人工智能技術(shù)和可視化編程技術(shù)引入網(wǎng)絡(luò)環(huán)境下的CRMS成為國內(nèi)外商務(wù)智能界的研究熱點(diǎn)之一. 由于人工智能技術(shù)通常需要進(jìn)行復(fù)雜的運(yùn)算處理,而可視化編程技術(shù)卻難以勝任這一要求,本文嘗試將Matlab和ASP.NET 2種編程技術(shù)有機(jī)結(jié)合來解決該問題,即先使用Matlab組件編程技術(shù)將人工智能算法封裝為COM組件,然后應(yīng)用可視化編程技術(shù)ASP.NET調(diào)用COM組件,從而形成網(wǎng)絡(luò)環(huán)境下的智能可視化CRMS(Intelligent & Visual CRMS,IVCRMS).
Matlab與ASP.NET結(jié)合應(yīng)用主要有Web Server方式和組件編程方式2種,鑒于Web Server方式存在一些不足,本文采用組件編程方式實(shí)現(xiàn)IVCRMS.
Matlab組件編程技術(shù)主要通過Matlab的COMBuilder來實(shí)現(xiàn),COMBuilder是Matlab Compiler的擴(kuò)展,是Matlab Release 13新包含的產(chǎn)品之一[3],它提供了一個(gè)簡(jiǎn)單易用的可視化用戶界面幫助用戶把用M語言開發(fā)的算法封裝為COM組件. 可視化用戶界面包含詳盡的工程項(xiàng)目管理信息、提供生成組件的詳細(xì)過程,由此生成的COM組件對(duì)象是一種通用的對(duì)象接口,可供任何支持COM對(duì)象的編程語言(如Visual Basic、C/C++、Microsoft Excel、ASP.net、JSP、PHP等)調(diào)用. 通過COM組件,可以共享其他用戶已經(jīng)開發(fā)的算法,亦可免費(fèi)地隨同COM應(yīng)用程序發(fā)布Matlab算法,從而節(jié)約開發(fā)時(shí)間.
基于COMBuilder的組件編程流程如圖1所示[4]. COMBuilder組件編程具有如下優(yōu)點(diǎn):1)能夠轉(zhuǎn)化用戶自己開發(fā)的算法,并且隱藏算法細(xì)節(jié),有利于程序的源代碼保護(hù). 2)簡(jiǎn)單易用的圖形界面可幫助用戶生成COM組件對(duì)象,能大大減輕用戶編譯程序的工作. 3)將M語言函數(shù)文件轉(zhuǎn)變?yōu)楠?dú)立的COM組件對(duì)象,便于系統(tǒng)功能的進(jìn)一步擴(kuò)展. 4)生成的COM組件能應(yīng)用到各種支持COM接口的系統(tǒng),便于系統(tǒng)組件功能的移植.
圖1 COMBuilder組件編程流程
基于Matlab組件編程技術(shù)的IVCRMS總體構(gòu)架如圖2所示.
圖2 IVCRMS構(gòu)架
COM服務(wù)器是IVCRMS的數(shù)據(jù)處理中轉(zhuǎn)站. 一方面,COM服務(wù)器負(fù)責(zé)響應(yīng)IVCRMS對(duì)數(shù)據(jù)庫服務(wù)器的訪問操作,實(shí)時(shí)地建立起IVCRMS與數(shù)據(jù)庫服務(wù)器之間的數(shù)據(jù)鏈路;另一方面,COM服務(wù)器通過調(diào)用Matlab系統(tǒng),使用人工智能算法對(duì)數(shù)據(jù)進(jìn)行處理,并把處理的結(jié)果返回IVCRMS,最終通過ASP.NET頁面顯示給決策者參考.
數(shù)據(jù)庫服務(wù)器負(fù)責(zé)外部數(shù)據(jù)源中客戶有關(guān)數(shù)據(jù)的實(shí)時(shí)更新,以及決策數(shù)據(jù)庫中決策指標(biāo)數(shù)據(jù)的維護(hù)、調(diào)用,并實(shí)現(xiàn)各種不同數(shù)據(jù)源間的相互轉(zhuǎn)換. IVCRMS中外部數(shù)據(jù)源主要用于存放客戶基本信息、客戶互動(dòng)信息、客戶交易信息、售后服務(wù)信息、潛在交易信息、庫存管理信息、客戶價(jià)值信息等7大類常用信息數(shù)據(jù). 決策數(shù)據(jù)庫主要用于存放分析客戶價(jià)值以及潛在購買行為等重要決策信息,由上述7大類常用信息數(shù)據(jù)經(jīng)過相關(guān)性分析以后,得出相關(guān)性較強(qiáng)的客戶全生命周期價(jià)值、客戶當(dāng)前價(jià)值、客戶潛在價(jià)值、客戶購買行為、客戶活躍度、客戶購買頻率、客戶購買金額等指標(biāo)數(shù)據(jù),以此作為IVCRMS的決策數(shù)據(jù)來源.
模型庫、方法庫服務(wù)器是IVCRMS的核心部分,同時(shí)也是較難實(shí)現(xiàn)的部分. 模型庫中主要存放各種已有的模型,也存放由用戶使用建模語言建立的模型;方法庫主要存放用于建立和求解模型的有關(guān)方法. 模型庫、方法庫服務(wù)器支持決策問題的定義、概念模型化和模型的運(yùn)行、修改、增刪等,并把有關(guān)的方法與模型結(jié)合調(diào)用. IVCRMS包括4大類模型(客戶購買行為模型、客戶價(jià)值評(píng)估模型、客戶細(xì)分模型和營銷預(yù)算模型)、8種主要方法(基于SMC模型的客戶購買行為預(yù)測(cè)、基于BG/NBD模型的客戶購買行為預(yù)測(cè)、客戶當(dāng)前價(jià)值評(píng)估、客戶潛在價(jià)值評(píng)估、客戶全生命周期價(jià)值測(cè)度、K均值算法、基于客戶價(jià)值的客戶細(xì)分、最優(yōu)化投入的營銷預(yù)算).
3.1 系統(tǒng)開發(fā)環(huán)境
考慮到系統(tǒng)開發(fā)的復(fù)雜性與可維護(hù)性,開發(fā)平臺(tái)選用微軟可視化開發(fā)工具Visual Studio 2005;操作系統(tǒng)選用較為穩(wěn)定安全的服務(wù)器版操作系統(tǒng)Windows 2003 Server;數(shù)據(jù)庫選用適合中小型數(shù)據(jù)庫規(guī)模且能與微軟操作系統(tǒng)全面兼容的SQL Server 2000;應(yīng)用服務(wù)器根據(jù)系統(tǒng)網(wǎng)絡(luò)共享性、實(shí)時(shí)交互性要求高等特點(diǎn),使用網(wǎng)絡(luò)交互性能表現(xiàn)優(yōu)秀的ASP.NET 2.0;開發(fā)語言使用高效的編程語言C#,報(bào)表輸出工具選用Crystal Report;系統(tǒng)核心模型算法采用Matlab 7.01的最新開發(fā)工具SVM等工具箱實(shí)現(xiàn);ASP.NET與Matlab的數(shù)據(jù)交互使用Matlab 7.01的Matlab COMBuilder組件編程技術(shù)實(shí)現(xiàn).
3.2 系統(tǒng)實(shí)現(xiàn)流程
基于Matlab組件編程技術(shù)設(shè)計(jì)IVCRMS的流程如圖3所示,分為4個(gè)階段:
圖3 IVCRMS實(shí)現(xiàn)流程
1)準(zhǔn)備算法. 選擇算法對(duì)問題的求解起著非常關(guān)鍵的作用,優(yōu)秀的算法可以大大提高系統(tǒng)求解的速度與準(zhǔn)確度. 由于系統(tǒng)求解的問題中有許多都是半結(jié)構(gòu)化問題或者是非線性優(yōu)化問題,涉及大量非線性數(shù)據(jù)的處理,IVCRMS使用了遺傳算法、粒子群算法、神經(jīng)網(wǎng)絡(luò)、核方法等人工智能算法對(duì)問題進(jìn)行求解.
2)編譯組件. 選擇好算法后,需用Matlab語言程序?qū)崿F(xiàn)該算法,并把程序標(biāo)準(zhǔn)化為M函數(shù)文件方式或Mex文件方式,才可進(jìn)入到Matlab的編譯器進(jìn)行編譯操作,然后通過COMBuilder封裝成為組件. 初次使用Matlab編譯器,需要先進(jìn)行設(shè)置,選擇合適的編譯語言環(huán)境后,才能進(jìn)行編譯操作. Matlab系統(tǒng)的默認(rèn)編譯器為L(zhǎng)cc C編譯器,其功能較弱,難以滿足大型程序編譯的需要,因此需要借助外部的編譯器進(jìn)行編譯操作. IVCRMS選用Microsoft公司的VC 7.0作為外部的編譯器.
3)調(diào)用組件. COMBuilder中封裝好的組件不能在編程系統(tǒng)中直接調(diào)用,必須先把編譯完成的DLL文件在操作系統(tǒng)中進(jìn)行注冊(cè),并在開發(fā)平臺(tái)中對(duì)其進(jìn)行引用,然后才能正常調(diào)用. 操作系統(tǒng)中的DLL文件注冊(cè)操作與其他的系統(tǒng)DLL文件注冊(cè)類似,需要在DOS下啟動(dòng)REGSVR32進(jìn)行操作. 由于IVCRMS的開發(fā)平臺(tái)是Visual Studio 2005,因此還需要在Visual Studio 2005對(duì)編譯完成的DLL文件進(jìn)行引用.
4)可視化開發(fā). 系統(tǒng)運(yùn)算的過程與結(jié)果以直觀的、交換性強(qiáng)的方式顯示出來才能有效體現(xiàn)系統(tǒng)的應(yīng)用價(jià)值. IVCRMS充分利用了ASP.NET數(shù)據(jù)交互性強(qiáng)、顯示靈活、擴(kuò)展性高等特點(diǎn),利用Matlab的繪圖功能對(duì)數(shù)據(jù)的處理過程進(jìn)行可視化顯示,同時(shí)結(jié)合水晶報(bào)表Crystal Report技術(shù),將數(shù)據(jù)的最終處理結(jié)果以圖表的形式顯示.
3.3 開發(fā)實(shí)例
以基于支持向量數(shù)據(jù)描述(SVDD)技術(shù)[5]的客戶價(jià)值細(xì)分為例,說明如何實(shí)現(xiàn)Matlab組件編程技術(shù)在IVCRMS中的應(yīng)用.
1)準(zhǔn)備算法
IVCRMS系統(tǒng)的客戶價(jià)值細(xì)分模塊將客戶按照當(dāng)前價(jià)值以及潛在價(jià)值的大小劃分為4種類型,并采用基于SVDD技術(shù)的擴(kuò)展一類分類算法實(shí)現(xiàn)客戶價(jià)值細(xì)分,該算法的核心內(nèi)容如下.
對(duì)于包含n個(gè)“正常”數(shù)據(jù)對(duì)象的樣本集:{x1,x2,…,xn}所形成的超球體由中心點(diǎn)a和半徑R描述. 要形成緊湊的球體邊界,數(shù)據(jù)描述的優(yōu)化問題可以表述為求解優(yōu)化方程:
約束條件保持不變. 其中,L為優(yōu)化目標(biāo)函數(shù),s.t. 為約束條件.
2)編譯組件
步驟1. 先用Matlab語言程序?qū)崿F(xiàn)上述算法,并標(biāo)準(zhǔn)化為M函數(shù)文件的形式. 現(xiàn)以偽代碼的形式列出客戶價(jià)值細(xì)分算法的核心代碼:
function results = value(indata,num,x)
%value函數(shù)文件輸出價(jià)值細(xì)分的最終結(jié)果,indata客戶價(jià)值數(shù)據(jù),num為需要判斷的客戶數(shù)量,x為客戶的序號(hào)
function [gz,R,lamx,X]= optimize (recset,recz,par)
%optimize函數(shù)文件輸出求解優(yōu)化的結(jié)果,gz臨界客戶價(jià)值數(shù)據(jù)的核半徑,R待檢驗(yàn)客戶價(jià)值數(shù)據(jù)的核半徑,lamx待檢驗(yàn)客戶價(jià)值數(shù)據(jù)與臨界客戶價(jià)值數(shù)據(jù)的核半徑比值,X為判斷異常的客戶價(jià)值數(shù)據(jù);recset以前的客戶集,recz當(dāng)前的客戶集,par計(jì)算參數(shù)
H(i,j)=guasssvkernel(dat(i,:),dat(j,:),par);
%調(diào)用高斯徑向基核函數(shù)求解
X = quadprog(H,f,[],[],Aeq,beq,zeros(datas,1));
%通過調(diào)用工具箱中的quadprog優(yōu)化函數(shù)求解優(yōu)化結(jié)果
步驟2. 啟動(dòng)可視化組件編譯工具COMBuilder,新建一個(gè)組件編譯工程,并完成自定義類的設(shè)置.
步驟3. 將需要編譯的M函數(shù)文件添加到工程中,再點(diǎn)擊COMBuilder的生成組件按鈕,即可生成所定義類的組件.
3)調(diào)用組件
為了能在其他編譯器中調(diào)用該COM組件,還必須在操作系統(tǒng)以及開發(fā)平臺(tái)中手動(dòng)注冊(cè)該DLL文件,然后才可以實(shí)現(xiàn)在ASP.NET中對(duì)Matlab系統(tǒng)的調(diào)用,需要注意的是,二者之間參數(shù)的傳遞方式是引用(ref)方式. 現(xiàn)以偽代碼的形式列出ASP.NET中通過COM組件調(diào)用Matlab的C#代碼:
Using COMIVCRMS; //引用COM組件
COMIVCRMS CIVCRMS = new COMIVCRMS (); //創(chuàng)建COM對(duì)象,COMIVCRMS為自定義的類名
object results = new object(); //接收返回結(jié)果的變量為Object類型
c1.value(1,ref results,matrx_data,i+j,i); // results參數(shù)的傳遞方式是引用(ref)方式
string[]yjresults = results.ToString(); //yjresults數(shù)組輸出客戶價(jià)值細(xì)分模塊中的警情數(shù)據(jù)
4)運(yùn)行結(jié)果
上述程序通過使用COM組件,把ASP.NET頁面從決策數(shù)據(jù)庫中調(diào)用的數(shù)據(jù)傳遞到Matlab系統(tǒng)中進(jìn)行優(yōu)化運(yùn)算,并智能調(diào)用模型庫、方法庫服務(wù)器中相應(yīng)的知識(shí)庫、方法庫組合對(duì)問題進(jìn)行求解,求得的結(jié)果實(shí)時(shí)返回到ASP.NET網(wǎng)頁中進(jìn)行顯示. 決策者只要通過瀏覽器就可以觀察到基于SVDD算法的客戶價(jià)值細(xì)分結(jié)果,如圖4所示.
圖4 客戶價(jià)值細(xì)分結(jié)果實(shí)例
通過引入Matlab COMBuilder組件編程技術(shù)和ASP.NET可視化編程技術(shù),以可視化形式實(shí)現(xiàn)了人工智能技術(shù)在客戶關(guān)系管理系統(tǒng)中的應(yīng)用,大大提高了客戶關(guān)系管理系統(tǒng)解決客戶價(jià)值識(shí)別、客戶購買行為預(yù)測(cè)、客戶價(jià)值細(xì)分等半結(jié)構(gòu)化問題的能力,從而更好地輔助企業(yè)制定滿足客戶需求的市場(chǎng)策略. 目前,IVCRMS系統(tǒng)已經(jīng)應(yīng)用于廣東省某化工企業(yè)的客戶關(guān)系管理實(shí)踐中,并得到了用戶很好的評(píng)價(jià). 本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方法,對(duì)網(wǎng)絡(luò)環(huán)境下的IVCRMS研發(fā)具有一定的參考價(jià)值.
[1] 夏國恩,金煒東. 基于支持向量機(jī)的客戶流失預(yù)測(cè)模型[J]. 系統(tǒng)工程理論與實(shí)踐,2008(1): 71-77.
[2] 趙宇,李兵,李秀,等. 基于改進(jìn)支持向量機(jī)的客戶流失分析研究[J]. 計(jì)算機(jī)集成制造系統(tǒng),2007, 13(1): 1 202-207.
[3] 王素立,高潔,孫新德. Matlab混合編程與工程應(yīng)用[M]. 北京:清華大學(xué)出版社,2008.
[4] 董長(zhǎng)虹,余嘯海. Matlab接口技術(shù)與應(yīng)用[M]. 北京:國防工業(yè)出版社,2004.
[5] 朱幫助,林健. 基于支持向量數(shù)據(jù)描述的無標(biāo)簽數(shù)據(jù)多類分類[J]. 智能系統(tǒng)學(xué)報(bào),2009, 4(2): 131-136.
Design and Realization of IVCRMS-based Matlab Components Programming Technology
ZHU Bang-zhu, LIN Chao-bin
(Institute of Systems Science and Technology, Wuyi University, Jiangmen 529020, China)
The introduction of artificial intelligence and visual programming techniques enables the traditional customer relationship management systems (CRMS) to develop into intelligent & visual CRMS (IVCRMS) systems. Within IVCRMS, artificial intelligence algorithms usually need complex processing; however, visual programming techniques can’t meet this demand. To solve this problem, this paper presents a Matlab-based components programming technology. This method first packages the artificial intelligence algorithms into COM components, then uses visual programming language to invoke the components, thereby forming IVCRMS. Finally, the design and realization processes of IVCRMS are illustrated by an example of customer value segmentation.
visual programming techniques; artificial intelligence; Matlab components; intelligent & visual customer relationship management system (IVCRMS); customer value segmentation
TP316.8
A
1006-7302(2011)01-0037-06
2010-09-06
國家博士后科學(xué)基金一等資助項(xiàng)目(20100470008);廣東省自然科學(xué)基金資助項(xiàng)目(9452902001004060);廣東省科技計(jì)劃項(xiàng)目(粵科技字【2007】173號(hào));江門市科技計(jì)劃項(xiàng)目(江財(cái)【2007】28號(hào))
朱幫助(1979—),男,江蘇宿遷人,副教授,博士,主要從事復(fù)雜系統(tǒng)分析與建模、CRM建模、智能信息處理理論與應(yīng)用研究.