PC版
搜索导航
论文网 > 工商管理论文 > 企业研究论文

数据挖掘在企业CRM中的研究

  
  1引言
  
  客户关系管理(Customer Relationship Management)的指导思想就是对客户进行系统化的研究,以便改进对客户的服务水平,提高客户的忠诚度,并因此为企业带来更多的利润。这就要求CRM系统要能够在有效地获取客户的各种信息的同时,对客户的行为方式进行深入地分析,寻找其中的规律,为客户提供更好、更个性化的服务,为企业决策提供支持。然而如何管理和分析大量、庞杂的客户信息,从中找出对企业管理决策有价值的知识则需要有更先进的技术和工具的支持,而数据挖掘等新兴技术的出现,为CRM的实施提供了良好的支持。
  数据挖掘的功能以及方法有多种,如关联分析、分类、聚类和时序模式等,关联分析可以用于交叉营销中的连带销售;聚类一般可以用于数据挖掘前数据的预处理;而分类是CRM中运用最为广泛的一种方式,它可以被用于客户细分、客户获取等方面,本文将使用分类方法为CRM系统实现客户的保持功能,在接下来将重点讨论数据挖掘的CMR中的运用。
  
  2 典型算法分类与选择
  
  目前已经出现了好几种决策树分类算法,如:ID3;C4.5;CHAID;CHART;SLIQ;SPRINT;PUBLIC等,现列出与本课题相关的具有代表性的一些算法。
  ID3算法虽然是比较经典也是最老的一种算法,可是它存在许多的不足:一是它不能处理连续属性值,对于连续值属性,它都要把该属性离散化,这样就大大降低了分类的精确度;二是算法过程不灵活,不能处理有空缺值的样本集合,这就对训练样本集合的质量提出很高的要求。三是生成的决策树太大,因为对于每个离散属性如果作为分裂属性,如果有n个属性值,那么就会长出n个子树。
  SPRINT 算法是一种比较成熟的决策树分类算法,它几乎克服了以往已经提出的算法中的一些缺憾,可是该算法的侧重点在于处理超大形容量的数据。此算法可以不受到机器主存大小的限制,可以把数据在主存与辅存之间来回切换。本人认为在本文所建立的CRM系统中所处理的数据是与客户有关,而象中小型企业这样的客户容量远没有这样的大,所以不建议使用该算法。
  C4.5算法是Quinlan的ID3算法的改进版本,该算法克服了ID3中的缺憾,能够直接处理连续值属性,能够处理有空缺值的样本集合。它从树的根结点处的所有训练样本开始,选取一个属性来区分这些样本。对属性的每一个值产生一个分支,分支属性值的相应样本子集被移到新生成的子结点上,这个算法递归地应用于每个子结点上,直到结点的所有样本都分区到某个类中,到达决策树的叶结点的每条路径表示一个分类规则。这样自顶向下的决策树的生成算法的关键性决策是对结点属性值的选择。该算法简单易懂,而且效率高,这也正是我们所追求的目标。所以本文中,我们选择该算法为CRM实现客户的保持分析功能。
  
  3 基于C4.5算法的改进
  
  C4.5算法虽然添加了对于有连续值的属性的处理方法,可是在每个结点处都要对连续值进行排序,浪费大量CPU时间。本文在C4.5算法的基础上引进了SPRINT算法中对于连续值的处理方法,采用属性列表(attribute lists)的方式对记录集一次性进行排序。在表的数据集中,我们在读入内存的过程中就将其分解为两个属性的列表,然后对有连续值的属性进行一次性的排序。如表(1)所示:
  
  从图中可以看出,连续值属性的值已经从小到大排序,而序号已经变乱,但根据序号可以找到每个记录中属性值的对应关系,也即序号值是属性列表中记录间的联系纽带。
  C4.5算法虽然对ID3算法进行了较大的改进,可是在建树过程中总的流程没有改变。如在Function ID3(R,C,S),其中每次结点的分裂都需要把对应于属性A的值为aj的记录组成的S的子集赋值给{sj|j=1,2,3,…,m};然后再分别构造树:ID3(R-{A},C,sj)。在实际算法中S集合被存放在一个数组中,随着结点的分裂会产生很多的子集数组,内存占用较大,如果遇到较大数据集就不能处理。在本文改进的算法中引用了标志数组的概念,使得所有结点的数据子集都存放在同一个数组中,在每个结点中存放标志信息,在分裂某个结点时只要沿着该结点向上直到根结点的一次浏览就可以确定标志数组的值,从而可以确定出对应与该结点的数据子集。为了达到此目的,我们改C4.5算法原来的深度优先(depth-first)方法为广度优先(breadth-first)。
  PROCEDURE BUILD TREE(S)
  Initialize root node using data set S
  Initialize queue Q to contain root node
  While Q is not empty do
  { Dequeue the first node N in Q
  If node N is not pure
  { For each attribute A
   Evaluate splits on attribute A
  Use best split to split N into N1 and N2
  Append N1 and N2 to Q
  }
   }
  综上所述,对于建树阶段的改进有以下几点:
  对于离散属性,如果其中有s个属性值,C4.5将会产生s个子树,改进的算法中将离散属性值划分为两个子集,通过比较信息熵选择最大值,从而形成为二叉树的方式。
  
  4 算法改进详细过程
  
  4.1数据结构
  首先约定:数组宽度可以根据记录的数量而在内存中临时分配、记录属性也可以由记录情况动态建立。但是为了表述清楚,在本文中应用实际数组宽度。本文所用训练数据记录有10000条,故数组宽度按10000来说明。记录属性也是按训练数据的实际情况建立。
  记录存放数据结构-属性列表数组:
  union col_data{int int_data;
  char str_data[6];};
  struct data{ union col_data col;
   int token ;
   int number;};
  struct data my_data[10000][20];
  以上为一个结构体的二维数组data my_data[ ][ ],其中成员union col_data {int int_data; char str_data;}是一个联合体,如果某属性值是连续的就放在int_data中,如果某属性值是离散的就放在char str_data[6]中;成员token是本条记录的类别属性;
  4.2算法过程
  算法首先从数据库中读入记录值到属性列表中,随即对有连续值的属性进行从小到大排序:
  for(k=0;k属性列表个数;k++)
   {if(data_col[k]==1)
  {……}
   }
  按照广度建树的方法,首先建立根结点并进队列:
  struct tree_node* create_top()
  { struct tree_node* top_node
   =(struct tree_node*)malloc(sizeof(struct tree_node));
  top_node->is_leaf =0;
  top_node->parent_node = NULL;
  top_node->left_node= NULL;
  top_node->right_node =NULL;
  in_queue(top_node);
   return top_node;
   }
  头结点进队列以后,依次出队列分裂该结点建树:
  void creat_tree()
  {…….
  while(head!=rear)
   {……
   p=a=out_queue();
   q=p->parent_node ;
  5 结论
  商品的极大丰富以及产品趋于同质化的特性使得在未来几年CRM将成为推动企业发展的一个重要工具,而中小型企业将是CRM的一个巨大的市场。对中小型企业CRM作针对性的研究将是未来的一个热点。
  本文以企业特点为背景,从建设方案等各方面出发,构建了基于Web的CRM软件平台,设计了各部分的必要功能,并在此基础上引进了数据挖掘技术中的决策树的概念,对决策树的经典算法做了大量的比较和选择,对于被选择的C4.5算法,进行了深入的分析研究并提出改进优化的方法,同时用C语言实现并通过实验证明取得了良好的效果。 最后用改进后的C4.5分类算法为CRM软件实现了客户的保持分析功能。
  

相关论文

数据挖掘数据研究企业CRM
企业财务分析存在的问题及对策探讨
课程思政融入“保险学”教学的路径及
试论企业文化与企业战略的协同管理策
辅导员视角下新闻传播学类专业学生就
人事档案管理信息化建设创新路径研究
试论战略成本会计在企业管理中的应用
河南打造具有国际影响力的黄河文化旅
数字媒体时代辽宁老字号企业品牌运营
企业净资产收益率的提升途径分析——
大数据时代拼多多盈利模式研究