Clementine12中的算法

  最近老有朋友问我Clementine12中都有哪些算法?感觉Clementine12中的算法很多,很齐全并且根据商业目的做了大体的分类(预测的、分类的、细分的、关联的),所以大家只要清楚自己的商业问题是哪类问题、用什么算法能达到自己想要的目的就可以根据Clementine12中的模型划分,迅速的找到自己想要的mode;

  下图是Clementine12中所有数据挖掘的算法:

  

  下面是谢邦昌教授的数据挖掘(Data Mining)十种分析方法,以便于大家对模型的初步了解,不过也是日常挖掘中经常遇到的算法,希望对大家有用!(甚至有数据挖掘公司,用其中的一种算法就能独步天下)

  1、记忆基础推理法(Memory-Based Reasoning;MBR)

  记忆基础推理法最主要的概念是用已知的案例(case)来预测未来案例的一些属性(attribute),通常找寻最相似的案例来做比较。

  记忆基础推理法中有两个主要的要素,分别为距离函数(distance function)与结合函数(combination function)。距离函数的用意在找出最相似的案例;结合函数则将相似案例的属性结合起来,以供预测之用。记忆基础推理法的优点是它容许各种型态的数据,这些数据不需服从某些假设。另一个优点是其具备学习能力,它能藉由旧案例的学习来获取关于新案例的知识。较令人诟病的是它需要大量的历史数据,有足够的历史数据方能做良好的预测。此外记忆基础推理法在处理上亦较为费时,不易发现最佳的距离函数与结合函数。其可应用的范围包括欺骗行为的侦测、客户反应预测、医学诊疗、反应的归类等方面。

  2、市场购物篮分析(Market Basket Analysis)

  购物篮分析最主要的目的在于找出什么样的东西应该放在一起?商业上的应用在藉由顾客的购买行为来了解是什么样的顾客以及这些顾客为什么买这些产品,找出相关的联想(association)

  规则,企业藉由这些规则的挖掘获得利益与建立竞争优势。举例来说,零售店可藉由此分析改变置物架上的商品排列或是设计吸引客户的商业套餐等等。

  购物篮分析基本运作过程包含下列三点:

  (1)选择正确的品项:这里所指的正确乃是针对企业体而言,必须要在数以百计、千计品项中选择出真正有用的品项出来。

  (2)经由对共同发生矩阵(co-occurrence matrix)的探讨挖掘出联想规则。

  (3)克服实际上的限制:所选择的品项愈多,计算所耗费的资源与时间愈久(呈现指数递增),此时必须运用一些技术以降低资源与时间的损耗。

  购物篮分析技术可以应用在下列问题上:

  (1)针对信用卡购物,能够预测未来顾客可能购买什么。

  (2)对于电信与金融服务业而言,经由购物篮分析能够设计不同的服务组合以扩大利润。

  (3)保险业能藉由购物篮分析侦测出可能不寻常的投保组合并作预防。

  (4)对病人而言,在疗程的组合上,购物篮分析能作为是否这些疗程组合会导致并发症的判断依据。

  3、决策树(Decision Trees)

  决策树在解决归类与预测上有着极强的能力,它以法则的方式表达,而这些法则则以一连串的问题表示出来,经由不断询问问题最终能导出所需的结果。典型的决策树顶端是一个树根,底部有许多的树叶,它将纪录分解成不同的子集,每个子集中的字段可能都包含一个简单的法则。此外,决策树可能有着不同的外型,例如二元树、三元树或混和的决策树型态。

  4、基因算法(Genetic Algorithm)

  基因算法学习细胞演化的过程,细胞间可经由不断的选择、复制、交配、突变产生更佳的新细胞。基因算法的运作方式也很类似,它必须预先建立好一个模式,再经由一连串类似产生新细胞过程的运作,利用适合函数(fitness function)决定所产生的后代是否与这个模式吻合,最后仅有最吻合的结果能够存活,这个程序一直运作直到此函数收敛到最佳解。基因算法在群集(cluster)问题上有不错的表现,一般可用来辅助记忆基础推理法与类神经网络的应用。

  5、群集侦测技术(Cluster Detection)

  这个技术涵盖范围相当广泛,包含基因算法、类神经网络、统计学中的群集分析都有这个功能。它的目标为找出数据中以前未知的相似群体,在许许多多的分析中,刚开始都运用到群集侦测技术,以作为研究的开端。

  6、连结分析(Link Analysis)

  连结分析是以数学中之图形理论(graph theory)为基础,藉由记录之间的关系发展出一个模式,它是以关系为主体,由人与人、物与物或是人与物的关系发展出相当多的应用。例如电信服务业可藉连结分析收集到顾客使用电话的时间与频率,进而推断顾客使用偏好为何,提出有利于公司的方案。除了电信业之外,愈来愈多的营销业者亦利用连结分析做有利于企业的研究。

  7、在线分析处理(On-Line Analytic Processing;OLAP)

  严格说起来,在线分析处理并不算特别的一个数据挖掘技术,但是透过在线分析处理工具,使用者能更清楚的了解数据所隐藏的潜在意涵。如同一些视觉处理技术一般,透过图表或图形等方式显现,对一般人而言,感觉会更友善。这样的工具亦能辅助将数据转变成信息的目标。

  8、类神经网络(Neural Networks)

  类神经网络是以重复学习的方法,将一串例子交与学习,使其归纳出一足以区分的样式。若面对新的例证,神经网络即可根据其过去学习的成果归纳后,推导出新的结果,乃属于机器学习的一种。数据挖掘的相关问题也可采类神经学习的方式,其学习效果十分正确并可做预测功能。

  9、区别分析(Discriminant Analysis)

  当所遭遇问题它的因变量为定性(categorical),而自变量(预测变量)为定量(metric)时,区别分析为一非常适当之技术,通常应用在解决分类的问题上面。若因变量由两个群体所构成,称之为双群体 — 区别分析 (Two-Group Discriminant Analysis);若由多个群体构成,则称之为多元区别分析(Multiple Discriminant Analysis;MDA)。

  (1) 找出预测变量的线性组合,使组间变异相对于组内变异的比值为最大,而每一个线性组合与先前已经获得的线性组合均不相关。

  (2) 检定各组的重心是否有差异。

  (3) 找出哪些预测变量具有最大的区别能力。

  (4) 根据新受试者的预测变量数值,将该受试者指派到某一群体。

  10、罗吉斯回归分析(Logistic Analysis)

  当区别分析中群体不符合常态分配假设时,罗吉斯回归分析是一个很好的替代方法。罗吉斯回归分析并非预测事件(event)是否发生,而是预测该事件的机率。它将自变量与因变量的关系假定是S行的形状,当自变量很小时,机率值接近为零;当自变量值慢慢增加时,机率值沿着曲线增加,增加到一定程度时,曲线协率开始减小,故机率值介于0与1之间。

时间: 2024-08-02 18:29:33

Clementine12中的算法的相关文章

提前认识软件开发(14):程序中的算法

算法(Algorithm),是程序的灵魂.著名计算机科学家.图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序.可见,算法在程序中占有非常重要的地位. 在实际的软件开发项目中,不管是有意设计或是无意为之,我们几乎随时在和算法打交道.小到定义一个变量,大到编写一个函数,这些都是算法的实现过程. 本文以作者实际项目工作为背景,介绍算法在C程序中的应用. 1.算法概述 什么是算法呢?先来看一看一些计算机书籍中的定义. 经典书籍<算法导论>(Cormen等著,机械工业出版社)中,作者认为算法是一系

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT. 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如说有Boosting,Bagging等)与决策树相关的算法比较多,这些算法最终的结果是生成N(可能会有几百棵以上)棵树,这样可以大大的减少单决策树带来的毛病,

程序员如何快速准备面试中的算法

我决定写篇短文,即为此文.之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法.尽管在微博上简单梳理过,如下图所示:        但因字数限制,特撰此文着重阐述下:程序员如何快速准备面试中的算法,顺便推荐一些相关的书籍或资料. 备战面试中算法的五个步骤 总体来说,备战面试中的算法,分为五个步骤,如下: 1.首选你得确保自己已经掌握好一门编程语言 如果是C的话,推荐Dennis M. Ritchie & Brian W. Kernighan著的<C程序设计语言>,和

template-c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么

问题描述 c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么 #include <iostream> #include <string> #include <vector> using namespace std; template<typename Init,typename T> Init find(Init begin,Init end,const T& val){ while(begin!=end){ if(val

mfc中的问题-MFC中添加算法的相关内容

问题描述 MFC中添加算法的相关内容 怎样在MFC的程序里面添加一种新的算法?算法写在哪个文件里面? 解决方案 建立一个新的类.h文件 在里面申请算法,在类.app文件中写入具体算法!调用时用类::算法就好了

Java开发中对算法的要求高么,大神进来看看

问题描述 Java开发中对算法的要求高么,本人最近要参加一个叫蓝桥杯的比赛,考核的内容偏重与算法,可能参加了这个比赛可能对自己算法方面有提高,与现在学的框架,web技术好像根本没有关系,况且,报名费就300,给人的感觉不是很好.....不知道算法这个东西在实际工作中用的如何,还望大神指点 解决方案 解决方案二:不管是什么语言,算法都是很重要的解决方案三:蓝桥杯还行吧,虽然比acm水,但还是有一定含金量的.解决方案四:重要,而且算法是通用的,转其他语言也用得到.解决方案五:一个字:很重要解决方案六

c++-关于一个游戏中拦截算法的简单疑问

问题描述 关于一个游戏中拦截算法的简单疑问 在一本人工智能书上看到一个拦截算法 主要代码如图. 书中所述大概过程是: 用追击者和猎物的速度算出相对追击者的速度 然后算出两者之间的位移 再通过位移除以速度求出拦截所需要的时间 最后用猎物速度乘以时间加上它的位置算出即将拦截的位置 最后再通过其他方法让追击者朝着这个拦截的位置去拦截 然而个人理解就是: 追击者要实现拦截 根本问题就是求追击者的速度(准确来说是速度的方向) 然而要实现拦截则需要追击者本身的速度 这成了个矛盾 然后我把这原理用代码在uni

无法输入-请大神们帮帮忙,程序中折半算法怎么不可以输入,直接跳到最后了

问题描述 请大神们帮帮忙,程序中折半算法怎么不可以输入,直接跳到最后了 #include "stdafx.h" #include #define MIX_SIZE 20 using namespace std; typedef struct _Data { int *elem; int lengh; }Data; void Creat(Data &data) { data.elem=(int *)malloc(MIX_SIZE*sizeof(int)); data.lengh=

jsp中DBSCAN算法实现实例

DBSCAN是一种基于密度的聚类算法,它的基本原理就是给定两个参数,ξ和minp,其中 ξ可以理解为半径,算法将在这个半径内查找样本,minp是一个以ξ为半径查找到的样本个数n的限制条件,只要n>=minp,查找到的样本点就是核心样本点,算法的具体描述见参考文件1,下边是这个算法的java实现: 首先定义一个Point类,代表样本点 <!--[endif]--> package com.sunzhenxing; public class Point { private int x; pr