数据挖掘 订阅
数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。 [1] 展开全文
数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。 [1]
信息
外文名
Data mining
相关领域
人工智能、数据库
别    名
资料探勘、数据采矿
中文名
数据挖掘
应用领域
情报检索、数据分析、模式识别等
所属学科
计算机科学
数据挖掘简介
需要是发明之母。近年来,数据挖掘引起了信息产业界的极大关注,其主要原因是存在大量数据,可以广泛使用,并且迫切需要将这些数据转换成有用的信息和知识。获取的信息和知识可以广泛用于各种应用,包括商务管理,生产控制,市场分析,工程设计和科学探索等。 [2]  数据挖掘是人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库、可视化技术等,高度自动化地分析企业的数据,作出归纳性的推理,从中挖掘出潜在的模式,帮助决策者调整市场策略,减少风险,作出正确的决策。知识发现过程由以下三个阶段组成:①数据准备;②数据挖掘;③结果表达和解释。数据挖掘可以与用户或知识库交互。 [1]  数据挖掘是通过分析每个数据,从大量数据中寻找其规律的技术,主要有数据准备、规律寻找和规律表示三个步骤。数据准备是从相关的数据源中选取所需的数据并整合成用于数据挖掘的数据集;规律寻找是用某种方法将数据集所含的规律找出来;规律表示是尽可能以用户可理解的方式(如可视化)将找出的规律表示出来。数据挖掘的任务有关联分析、聚类分析、分类分析、异常分析、特异群组分析和演变分析等。 [1]  近年来,数据挖掘引起了信息产业界的极大关注,其主要原因是存在大量数据,可以广泛使用,并且迫切需要将这些数据转换成有用的信息和知识。获取的信息和知识可以广泛用于各种应用,包括商务管理、生产控制、市场分析、工程设计和科学探索等。数据挖掘利用了来自如下一些领域的思想:①来自统计学的抽样、估计和假设检验;②人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论。数据挖掘也迅速地接纳了来自其他领域的思想,这些领域包括最优化、进化计算、信息论、信号处理、可视化和信息检索。一些其他领域也起到重要的支撑作用。特别地,需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一起处理时更是至关重要。 [1] 
收起全文
精华内容
参与话题
问答
  • 数据挖掘与数据分析

    万次阅读 多人点赞 2018-05-28 13:58:14
    一、数据挖掘和数据分析概述 数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有很多联系,但是二者的侧重点和实现手法有所区分。 数据挖掘和数据分析的不同之处: 1、在应用工具上,数据挖掘一般要通过...

    一、数据挖掘和数据分析概述

    数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有很多联系,但是二者的侧重点和实现手法有所区分。 
    数据挖掘和数据分析的不同之处: 
    1、在应用工具上,数据挖掘一般要通过自己的编程来实现需要掌握编程语言;而数据分析更多的是借助现有的分析工具进行。 
    2、在行业知识方面,数据分析要求对所从事的行业有比较深的了解和理解,并且能够将数据与自身的业务紧密结合起来;而数据挖掘不需要有太多的行业的专业知识。 
    3、交叉学科方面,数据分析需要结合统计学、营销学、心理学以及金融、政治等方面进行综合分析;数据挖掘更多的是注重技术层面的结合以及数学和计算机的集合 
    数据挖掘和数据分析的相似之处: 
    1、数据挖掘和数据分析都是对数据进行分析、处理等操作进而得到有价值的知识。 
    2、都需要懂统计学,懂数据处理一些常用的方法,对数据的敏感度比较好。 
    3、数据挖掘和数据分析的联系越来越紧密,很多数据分析人员开始使用编程工具进行数据分析,如SAS、R、SPSS等。而数据挖掘人员在结果表达及分析方面也会借助数据分析的手段。二者的关系的界限变得越来越模糊。

    二、数据挖掘

     

    1 数学预备知识 

    概率论:支撑整个数据挖掘算法和机器学习算法的数学基础,要熟悉常见的一些概率分布。 
    矩阵论:线性代数中对数据挖掘最有用的部分,还有一些线性空间相关知识也很重要。 
    信息论:将信息和数学紧密连接在一起并完美的表达的桥梁,需要掌握信息熵、信息增益等相关知识。 
    统计学:数据分析最早的依赖基础,通常和概率论一起应用,现在的机器学习和数据挖掘很多都是基于统计的,常见的均值、方差、协方差等都要熟练掌握。

     

    2 编程基础 

    数据挖掘需要一定的编程基础,因为要实现模型以及数据的处理很多工作都是需要程序来进行的,数据挖掘常用的编程语言如下: 
    SQL:数据库的熟练使用是任何数据挖掘人员必不可少的技能。 
    C++ :有很多的标准模板库以及机器学习模型库进行调用可以方便编程实现。 
    Python:对字符串处理有极大的优势,是解释型语言,实现简单,而且有很多开源的机器学习模型库的支持,可处理大规模数据。 
    Matlab:拥有强大的矩阵运算,也是解释型语言,有很多发展较成熟库可以直接调用,支持数据结果的可视化表示,但是处理数据量有限。 
    R:近年兴起的数据分析编程语言,数据可视化做的比较好,语法简单,学习成本很低,很多非程序设计人员都可以数量掌握。 
    Java:使用范围最广的编程语言,有很多社区进行交流,进行编程实现具有灵活高效的特点,不足之处就是实现功能的代码量较大(相对于其他数据挖掘编程语言)。 
    Scala: 一种具有面向对象风格、函数式风格、更高层的并发模型的编程语言。同时Scala是大数据处理平台Spark的实现语言。

     

    3 数据挖掘的模型知识 

    机器学习和数据挖掘是紧密相关的,要进行数据挖掘需要掌握一些机器学习所用的方法和模型知识,通过模型的训练可以得到处理数据的最优的模型。数据挖掘常用的模型如下:

     

    3.1 监督学习模型 

    就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。

     

    3.1.1决策树: 

    决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。 
    主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。

     

    3.1.2 贝叶斯方法: 

    贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(Tree Augmented Native Bayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。

     

    3.1.3 神经网络 

    神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在这种模型中,大量的节点(称”神经元”)之间相互联接构成网络,即”神经网络”,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。目前,神经网络已有上百种不同的模型,常见的有BP神经网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点。

     

    3.1.4 支持向量机(SVM) 

    支持向量机(SVM,Support Vector Machine)是根据统计学习理论提出的一种新的学习方法,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别。

     

    3.1.5 集成学习分类模型 

    集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。主要采用(加权)投票的方法组合多个基学习器,常见的算法有装袋(Bagging)、提升/推进(Boosting)、随机森林等。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度。

     

    3.1.6 其他分类学习模型 

    此外还有logistics回归模型、隐马尔科夫分类模型(HMM)、基于规则的分类模型等众多的分类模型,对于处理不同的数据、分析不同的问题,各种模型都有自己的特性和优势。

     

    3.2 无监督学习模型 

    在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构,应用场景包括关联规则的学习以及聚类等。常见的聚类算法如下所示:

     

    3.2.1 K-means聚类 

    K-means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

     

    3.2.2 基于密度的聚类 

    根据密度完成对象的聚类。它根据对象周围的密度(如DBSCAN)不断增长聚类。典型的基于密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise):该算法通过不断生长足够高密度区域来进行聚类;它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组“密度连接”的点集。OPTICS(Ordering Points To Identify the Clustering Structure):并不明确产生一个聚类,而是为自动交互的聚类分析计算出一个增强聚类顺序。

     

    3.2.3 层次聚类方法 

    层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。层次凝聚的代表是AGNES算法,层次分裂的代表是DIANA算法。具体又可分为凝聚的,分裂的两种方案。 
    凝聚的层次聚类是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者某个终结条件被满足,绝大多数层次聚类方法属于这一类,它们只是在簇间相似度的定义上有所不同。 
    分裂的层次聚类与凝聚的层次聚类相反,采用自顶向下的策略,它首先将所有对象置于同一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件。

     

    3.2.4 谱聚类 

    谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割, 也可以是分割规模差不多且割边最小的分割。谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。 
    此外常用的聚类方法还有基于网格的聚类、模糊聚类算法、自组织神经网络SOM、基于统计学的聚类算法(COBWeb、AutoClass)等。

     

    3.3 半监督学习 
    3.3.1 半监督学习概述 

    半监督学习算法要求输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

     

    3.3.2 Multi-view algorithm(多视角算法) 

    一般多用于可以进行自然特征分裂的数据集中.考虑特殊情况(每个数据点表征两个特征):每一个数据点看成是两个特征的集合,然后利用协同训练(Co-training algorithm)进行处理.协同训练(co-training)算法,此类算法隐含地利用了聚类假设或流形假设,它们使用两个或多个学习器,在学习过程中,这些学习器挑选若干个置信度高的未标记示例进行相互标记,从而使得模型得以更新。

     

    3.3.3 Graph-Based Algorithms(基于图的算法) 

    基于图的算法是基于图正则化框架的半监督学习算法,此类算法直接或间接地利用了流形假设,它们通常先根据训练例及某种相似度度量建立一个图,图中结点对应了(有标记或未标记)示例,边为示例间的相似度,然后,定义所需优化的目标函数并使用决策函数在图上的光滑性作为正则化项来求取最优模型参数。

     

    **3.4 文本处理模型 
    3.4.1 分词模型** 

    分词模型主要在处理文本过程中使用,在此特指中文分词模型。中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。 
    基于字符串匹配分词: 
    机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。 
    基于理解分词: 
    分词同时进行句法语义分析等模拟人对句子的理解,包括分词子系统,句法语义系统,总控部分。总控部分协调下,分词字系统可以获得有关词,句子等的句法和语义信息对分词歧义进行判断。需要大量的语言知识信息。 
    基于统计分词: 
    相邻的字同时出现的次数越多,越有可能构成一个词语,对语料中的字组频度进行统计,不需要切词字典,但错误率很高。可以考虑:使用基本词典进行关键词分词,使用统计方法识别新词组,两者结合。

     

    3.4.2 TF-IDF模型 

    TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。 
    TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率(另一说:TF词频(Term Frequency)指的是某一个给定的词语在该文件中出现的次数)。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。(另一说:IDF反文档频率(Inverse Document Frequency)是指果包含词条的文档越少,IDF越大,则说明词条具有很好的类别区分能力。)但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.

     

    3.4.3 LDA模型 

    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。 
    LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

     

    4 模型评价指标 
    4.1 模型评价概述 

    建模构建过程中会得出一系列的分析结果、模式或模型。同一个采样数据可以利用多种数据分析方法和模型进行分析,模型评价的目的之一就是从这些模型中自动找出一个最好的模型出来,另外就是要针对业务对模型进行解释和应用。 
    模型效果评价通常分两步,第一步是直接使用原来建立模型的样本数据来进行检验。假如这一步都通不过,那么所建立的决策支持信息价值就不太大了。一般来说,在这一步应得到较好的评价。这说明你确实从这批数据样本中挖掘出了符合实际的规律性。第一步通过后,第二步是另外找一批数据,已知这些数据是反映客观实际的、规律性的。这次的检验效果可能会比前一种差,差多少是要注意的,若是差到所不能容忍程度,那就要考虑第一步构建的样本数据是否具有充分的代表性,或是模型本身是否够完善。这时候可能要对前面的工作进行反思了。若这一步也得到了肯定的结果时,那所建立的数据挖掘模型应得到很好的评价了。

     

    4.2 常用的模型评价方法 
    4.2.1 预测准确率 

    预测准确率又称作精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。取值在0和1之间,数值越接近1,查准率就越高。 
    计算公式:正确率 = 提取出的正确信息条数 / 提取出的信息条数

     

    4.2.2 召回率 

    召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。取值在0和1之间,数值越接近1,查全率就越高。 
    计算公式:召回率 = 提取出的正确信息条数 / 样本中的信息条数

     

    4.2.3 综合指标F值 

    F值为正确率和召回率的调和平均值,能够综合平衡的去表示模型的性能效果。 
    计算公式:F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)

     

    4.2.4 ROC曲线 

    受试者工作特性(Receiver Operating Characteristic,ROC)曲线是一种非常有效的模型评价方法,可为选定临界值给出定量提示。将灵敏度(Sensitivity)设在纵轴,1-特异性(1-Specificity)设在横轴,就可得出ROC曲线图。该曲线下的积分面积(Area)大小与每种方法优劣密切相关,反映分类器正确分类的统计概率,其值越接近1说明该算法效果越好。

     

    4.2.5 数据相似度 

    聚类分群效果可以通过向量数据之间的相似度来衡量,向量数据之间的相似度定义为两个向量之间的距离(实时向量数据与聚类中心向量数据),距离越近则相似度越大,即该实时向量数据归为某个聚类。常用的相似度计算方法有:欧几里得距离法(Euclidean Distance)、皮尔逊相关系数法(Pearson Correlation Coefficient)、Cosine相似度和Tanimoto系数法。

     

    4.2.6 其他的模型评价方法 

    除上述的模型评价方法外,还有一些较为详细的模型评价方法。如可以用相对绝对误差、平均绝对误差、根均方差、相对平方根误差等指标来衡量。此外模型的鲁棒性和容错性以及处理数据的速度、能够处理数据的规模等都是衡量一个模型的重要指标。

    5 数据挖掘开发平台

     

    5.1 单机模型开发平台 

    直接在单机上部署数据挖掘开发环境,比如说安装mysql+python就可以搭建一个数据挖掘环境。

     

    5.2分布式集群开发平台 
    5.2.1 Hadoop集群环境 

    Hadoop 是一个通过分布式集群技术,将多个物理机或虚拟机(VMware等厂商的虚拟化技术在一个物理机上运行多个虚拟机)当作一台机器运行。基于Hadoop的数据挖掘数据挖掘一旦完成,就会生成挖掘结果即模式。

     

    5.4.2 Spark集群环境 

    Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。 
    6 数据挖掘的开发流程 
    6.1 数据获取 
    6.2 数据清洗 
    6.3 数据变换 
    6.4 特征工程 
    6.5 模型训练 
    6.6 模型优化 
    6.7 结果分析

    三、数据分析

    相比于数据挖掘,数据分析更多在于利用一定的工具和一定的专业知识分析数据。最初的数据分析来源于统计学家和经济学家的一些理论,进而结合一定的实际应用场景解决问题。数据分析更多的是偏重于业务层次的,对于大多数非计算机相关专业人士来说,掌握一般的数据分析方法是十分有用的,入门上手也相对简单。

    1 数学和专业的预备知识

    概率论:数据分析的重要数学基础,要熟悉常见的一些概率分布。 
    统计学:数据分析最早的依赖基础,通常和概率论一起应用,数据分析要掌握常见的均值、方差、协方差等。 
    心理学:数据分析往往要结合不同的学科知识进行分析,在数据分析的过程中,分析人员往往要结合用户的心理进行结果的调整和分析。 
    专业知识:一般来说,数据分析人员是对某一特定领域进行分析,这就要求分析人员具备一定的行业的专业知识。

    2 使用数据分析软件

    SPSS:功能非常强大非常专业的数据统计软件,界面友好,输出结果美观漂亮。SPSS软件具有信息的采集、处理、分析进行全面评估和预测等功能。包含广义线性混合模型、自动线性模型、一个统计网页入口portal和直复营销direct marketing功能。 
    SAS: 是一个模块化、集成化的大型应用软件系统,由数十个专用模块构成,功能包括数据访问、数据储存及管理、应用开发、图形处理、数据分析、报告编制、运筹学方法、计量经济学与预测等等。 
    Excel:办公套件中最能胜任数据分析的软件,简单实用。 
    Sql:非计算机专业的数据分析人员要操作数据必备的数据库语言。 
    R: 近年兴起的数据分析编程语言,数据可视化做的比较好,语法简单,学习成本很低,很多非程序设计人员都可以数量掌握。

     

    3 数据分析模型选取 

    数据分析人员可以借助一些现场的分析软件进行分析,这些软件集成了一些良好的分析模型,分析人员可以根据自己的实际应用场景进行合适的模型选择。基本的分析方法有:对比分析法、分组分析法、交叉分析法、结构分析法、漏斗图分析法、综合评价分析法、因素分析法、矩阵关联分析法等。高级的分析方法有:相关分析法、回归分析法、聚类分析法、判别分析法、主成分分析法、因子分析法、对应分析法、时间序列等。

     

    4 分析结果展示 

    数据分析的结果通过一些可视化图形或者报表形式进行展示能够增强对分析结果的理解。常用的的分析结果展示方法有: 
    图表展示:用一些柱状图、饼图、盒图等进行展示。 
    曲线展示:运用走势曲线或者ROC曲线进行展示。 
    文字展示:通过语言文字描述进行结果的分析展示,但是不够直观。

     

    5 数据分析的流程 

    5.1 数据获取 
    5.2 数据清洗 
    5.3 分析工具选取 
    5.4 数据分析模型选择 
    5.5 数据处理 
    5.6 处理结果展示 
    5.7 结果数据分析


    DrugAI
    展开全文
  • 本文主要分析皆来自其他资料,借用较为权威的总结来对我已经学习的这些经典算法做一个极为精简的概述(根据自身经验有一定修改),另外同时附上机器学习实战中作者对各种算法的评价。另外机器学习实战这本书是本人看...

    本文主要分析皆来自其他资料,借用较为权威的总结来对我已经学习的这些经典算法做一个极为精简的概述(根据自身经验有一定修改),另外同时附上机器学习实战中作者对各种算法的评价。另外机器学习实战这本书是本人看了这么多书籍或者资料中唯一一本坚持从头看到尾,看完了的书籍,包括其中的代码皆实践运行过,收获颇多,个人认为虽然这本书时间上已经算是老资料了,但其中作者的各种总结和代码的演练都由浅入深(前提还是要有一点基础的),让我能看懂并能从中学到东西,可能当时很多东西比较熟悉,后来淡忘,但当再次接触或使用它时能很快的重拾,所以如果你需要一门较为优秀的教材作为机器学习的入门资料我会推荐给你《机器学习实战》。

    以下为主要内容:

    国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.

    不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。

     

    1. C4.5

    C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.  C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

    1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
        2) 在树构造过程中进行剪枝;
        3) 能够完成对连续属性的离散化处理;
        4) 能够对不完整数据进行处理。

    C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效(相对的CART算法只需要扫描两次数据集,以下仅为决策树优缺点)。

    2. The k-means algorithm 即K-Means算法

    k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均 方误差总和最小。

    3. Support vector machines

    支持向量机,英文为Support Vector Machine,简称SV机(论文中一般简称SVM)。它是一种監督式學習的方法,它广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更 高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假 定平行超平面间的距离或差距越大,分类器的总误差越小。一个极好的指南是C.J.C Burges的《模式识别支持向量机指南》。van der Walt 和 Barnard 将支持向量机和其他分类器进行了比较。

    4. The Apriori algorithm

    Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。

    5. 最大期望(EM)算法

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然 估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。

     

    6. PageRank

    PageRank是Google算法的重要内容。2001年9月被授予美国专利,专利人是Google创始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。

    PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票, 被链接的越多,就意味着被其他网站投票越多。这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自 学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。

     

    7. AdaBoost

    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器 (强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权 值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。

    8. kNN: k-nearest neighbor classification

    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

    9. Naive Bayes

    在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)。 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以 及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。 但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属 性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。

    10. CART: 分类与回归树

    CART, Classification and Regression Trees。 在分类树下面有两个关键的思想。第一个是关于递归地划分自变量空间的想法(二元切分法);第二个想法是用验证数据进行剪枝(预剪枝、后剪枝)。在回归树的基础上的模型树构建难度可能增加了,但同时其分类效果也有提升。

     

    参考书籍:《机器学习实战》

    参考文章:https://blog.csdn.net/u010983763/article/details/70854469

    展开全文
  • Python数据挖掘简易入门

    千人学习 2020-03-11 14:47:29
    本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决...
  • Python数据分析与挖掘

    万人学习 2018-01-08 11:17:45
    创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘数据价值,它和...
  • 数据挖掘

    万次阅读 多人点赞 2018-05-06 11:02:28
    数据挖掘(Data Mining,DM)又称数据库中的知识发现(Knowledge Discover in Database,KDD) 数据挖掘又称数据库中的知识发现(Knowledge Discover in Database,KDD),是目前人工智能和数据库领域研究的热点...

    数据挖掘(Data Mining,DM)又称数据库中的知识发现(Knowledge Discover in Database,KDD)

      数据挖掘又称数据库中的知识发现(Knowledge Discover in Database,KDD),是目前人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库、可视化技术等,高度自动化地分析企业的数据,做出归纳性的推理,从中挖掘出潜在的模式,帮助决策者调整市场策略,减少风险,做出正确的决策。
    数据挖掘概述

    数据挖掘的定义

      1.技术上的定义及含义

      数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。这个定义包括好几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用;并不要求发现放之四海皆准的知识,仅支持特定的发现问题。

      与数据挖掘相近的同义词有数据融合人工智能商务智能模式识别机器学习知识发现数据分析决策支持等。

      ----何为知识?从广义上理解,数据、信息也是知识的表现形式,但是人们更把概念、规则、模式、规律和约束等看作知识。人们把数据看作是形成知识的源泉,好像从矿石中采矿或淘金一样。原始数据可以是结构化的,如关系数据库中的数据;也可以是半结构化的,如文本、图形和图像数据;甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现的知识可以被用于信息管理,查询优化,决策支持和过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门交叉学科,它把人们对数据的应用从低层次的简单查询,提升到从数据中挖掘知识,提供决策支持。在这种需求牵引下,汇聚了不同领域的研究者,尤其是数据库技术、人工智能技术、数理统计、可视化技术、并行计算等方面的学者和工程技术人员,投身到数据挖掘这一新兴的研究领域,形成新的技术热点。

      这里所说的知识发现,不是要求发现放之四海而皆准的真理,也不是要去发现崭新的自然科学定理和纯数学公式,更不是什么机器定理证明。实际上,所有发现的知识都是相对的,是有特定前提和约束条件,面向特定领域的,同时还要能够易于被用户理解。最好能用自然语言表达所发现的结果。

      2.商业角度的定义

      数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助商业决策的关键性数据。

      简而言之,数据挖掘其实是一类深层次的数据分析方法。数据分析本身已经有很多年的历史,只不过在过去数据收集和分析的目的是用于科学研究,另外,由于当时计算能力的限制,对大数据量进行分析的复杂数据分析方法受到很大限制。现在,由于各行业业务自动化的实现,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集的,而是由于纯机会的(Opportunistic)商业运作而产生。分析这些数据也不再是单纯为了研究的需要,更主要是为商业决策提供真正有价值的信息,进而获得利润。但所有企业面临的一个共同问题是:企业数据量非常大,而其中真正有价值的信息却很少,因此从大量的数据中经过深层分析,获得有利于商业运作、提高竞争力的信息,就像从矿石中淘金一样,数据挖掘也因此而得名。

      因此,数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。

    数据挖掘常用的方法

      利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等, 它们分别从不同的角度对数据进行挖掘。

      ①分类。分类是找出数据库中一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。它可以应用到客户的分类、客户的属性和特征分析、客户满意度分析、客户的购买趋势预测等,如一个汽车零售商将客户按照对汽车的喜好划分成不同的类,这样营销人员就可以将新型汽车的广告手册直接邮寄到有这种喜好的客户手中,从而大大增加了商业机会。

      ②回归分析。回归分析方法反映的是事务数据库中属性值在时间上的特征,产生一个将数据项映射到一个实值预测变量的函数,发现变量或属性间的依赖关系,其主要研究问题包括数据序列的趋势特征、数据序列的预测以及数据间的相关关系等。它可以应用到市场营销的各个方面,如客户寻求、保持和预防客户流失活动、产品生命周期分析、销售趋势预测及有针对性的促销活动等。

      ③聚类。聚类分析是把一组数据按照相似性和差异性分为几个类别,其目的是使得属于同一类别的数据间的相似性尽可能大,不同类别中的数据间的相似性尽可能小。它可以应用到客户群体的分类、客户背景分析、客户购买趋势预测、市场的细分等。

      ④关联规则。关联规则是描述数据库中数据项之间所存在的关系的规则,即根据一个事务中某些项的出现可导出另一些项在同一事务中也出现,即隐藏在数据间的关联或相互关系。在客户关系管理中,通过对企业的客户数据库里的大量数据进行挖掘,可以从大量的记录中发现有趣的关联关系,找出影响市场营销效果的关键因素,为产品定位、定价与定制客户群,客户寻求、细分与保持,市场营销与推销,营销风险评估和诈骗预测等决策支持提供参考依据。

      ⑤特征。特征分析是从数据库中的一组数据中提取出关于这些数据的特征式,这些特征式表达了该数据集的总体特征。如营销人员通过对客户流失因素的特征提取,可以得到导致客户流失的一系列原因和主要特征,利用这些特征可以有效地预防客户的流失。

      ⑥变化和偏差分析。偏差包括很大一类潜在有趣的知识,如分类中的反常实例,模式的例外,观察结果对期望的偏差等,其目的是寻找观察结果与参照量之间有意义的差别。在企业危机管理及其预警中,管理者更感兴趣的是那些意外规则。意外规则的挖掘可以应用到各种异常信息的发现、分析、识别、评价和预警等方面。

      ⑦Web页挖掘。随着Internet的迅速发展及Web 的全球普及, 使得Web上的信息量无比丰富,通过对Web的挖掘,可以利用Web 的海量数据进行分析,收集政治、经济、政策、科技、金融、各种市场、竞争对手、供求信息、客户等有关的信息,集中精力分析和处理那些对企业有重大或潜在重大影响的外部环境信息和内部经营信息,并根据分析结果找出企业管理过程中出现的各种问题和可能引起危机的先兆,对这些信息进行分析和处理,以便识别、分析、评价和管理危机

    数据挖掘的功能

      数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。

      1、自动预测趋势和行为

      数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其它可预测的问题包括预报破产以及认定对指定事件最可能作出反应的群体。

      2、关联分析

      数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。

      3、聚类

      数据库中的记录可被化分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学。80年代初,Mchalski提出了概念聚类技术牞其要点是,在划分对象时不仅考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。

      4、概念描述

      概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法遗传算法等。

      5、偏差检测

      数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。

    数据挖掘常用技术

      1、人工神经网络

      2、决策树

      3、遗传算法

      4、近邻算法

      5、规则推导

    数据挖掘的流程

      1、数据挖掘环境

      数据挖掘是指一个完整的过程,该过程从大型数据库中挖掘先前未知的,有效的,可实用的信息,并使用这些信息做出决策或丰富知识.   数据挖掘环境可示意如下图:

    数据挖掘环境框图.gif

      2、数据挖掘过程图

      下图描述了数据挖掘的基本过程和主要步骤

      Image:数据挖掘的基本过程和主要步骤.gif

      数据挖掘的基本过程和主要步骤

      3、数据挖掘过程工作量

      在数据挖掘中被研究的业务对象是整个过程的基础,它驱动了整个数据挖掘过程,也是检验最后结果和指引分析人员完成数据挖掘的依据和顾问.图2各步骤是按一定顺序完成的,当然整个过程中还会存在步骤间的反馈.数据挖掘的过程并不是自动的,绝大多数的工作需要人工完成.图3给出了各步骤在整个过程中的工作量之比.可以看到,60%的时间用在数据准备上,这说明了数据挖掘对数据的严格要求,而后挖掘工作仅占总工作量的10%.

      Image:数据挖掘过程工作量比例.gif

      图3数据挖掘过程工作量比例

      4、数据挖掘过程简介

      过程中各步骤的大体内容如下:

      (1). 确定业务对象

      清晰地定义出业务问题,认清数据挖掘的目的是数据挖掘的重要一步.挖掘的最后结构是不可预测的,但要探索的问题应是有预见的,为了数据挖掘而数据挖掘则带有盲目性,是不会成功的.

      (2). 数据准备

      1)、数据的选择

      搜索所有与业务对象有关的内部和外部数据信息,并从中选择出适用于数据挖掘应用的数据.

      2)、数据的预处理

      研究数据的质量,为进一步的分析作准备.并确定将要进行的挖掘操作的类型.

      3)、数据的转换

      将数据转换成一个分析模型.这个分析模型是针对挖掘算法建立的.建立一个真正适合挖掘算法的分析模型是数据挖掘成功的关键.

      (3). 数据挖掘

      对所得到的经过转换的数据进行挖掘.除了完善从选择合适的挖掘算法外,其余一切工作都能自动地完成.

      (4). 结果分析

      解释并评估结果.其使用的分析方法一般应作数据挖掘操作而定,通常会用到可视化技术.

      (5). 知识的同化

      将分析所得到的知识集成到业务信息系统的组织结构中去.

      5、数据挖掘需要的人员

      数据挖掘过程的分步实现,不同的步会需要是有不同专长的人员,他们大体可以分为三类.

      业务分析人员:要求精通业务,能够解释业务对象,并根据各业务对象确定出用于数据定义和挖掘算法的业务需求.

      数据分析人员:精通数据分析技术,并对统计学有较熟练的掌握,有能力把业务需求转化为数据挖掘的各步操作,并为每步操作选择合适的技术.

      数据管理人员:精通数据管理技术,并从数据库或数据仓库中收集数据.

      从上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程.这一过程要反复进行牞在反复过程中,不断地趋近事物的本质,不断地优先问题的解决方案。数据重组和细分添加和拆分记录选取数据样本可视化数据探索聚类分析神经网络、决策树数理统计、时间序列结论综合解释评价数据知识数据取样数据探索数据调整模型化评价。

    数据挖掘与传统分析方法的区别

      数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识.数据挖掘所得到的信息应具有先未知,有效和可实用三个特征.

      先前未知的信息是指该信息是预先未曾预料到的,既数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值.在商业应用中最典型的例子就是一家连锁店通过数据挖掘发现了小孩尿布和啤酒之间有着惊人的联系.

    数据挖掘和数据仓库

      大部分情况下,数据挖掘都要先把数据从数据仓库中拿到数据挖掘库或数据集市中(见图1)。从数据仓库中直接得到进行数据挖掘的数据有许多好处。就如我们后面会讲到的,数据仓库的数据清理和数据挖掘的数据清理差不多,如果数据在导入数据仓库时已经清理过,那很可能在做数据挖掘时就没必要在清理一次了,而且所有的数据不一致的问题都已经被你解决了。

      数据挖掘

      数据挖掘库可能是你的数据仓库的一个逻辑上的子集,而不一定非得是物理上单独的数据库。但如果你的数据仓库的计算资源已经很紧张,那你最好还是建立一个单独的数据挖掘库。

      当然为了数据挖掘你也不必非得建立一个数据仓库,数据仓库不是必需的。建立一个巨大的数据仓库,把各个不同源的数据统一在一起,解决所有的数据冲突问题,然后把所有的数据导到一个数据仓库内,是一项巨大的工程,可能要用几年的时间花上百万的钱才能完成。只是为了数据挖掘,你可以把一个或几个事务数据库导到一个只读的数据库中,就把它当作数据集市,然后在他上面进行数据挖掘。

      数据挖掘

    数据挖掘和在线分析处理(OLAP)

      一个经常问的问题是,数据挖掘和OLAP到底有何不同。下面将会解释,他们是完全不同的工具,基于的技术也大相径庭。

      OLAP是决策支持领域的一部分。传统的查询和报表工具是告诉你数据库中都有什么(what happened),OLAP则更进一步告诉你下一步会怎么样(What next)、和如果我采取这样的措施又会怎么样(What if)。用户首先建立一个假设,然后用OLAP检索数据库来验证这个假设是否正确。比如,一个分析师想找到什么原因导致了贷款拖欠,他可能先做一个初始的假定,认为低收入的人信用度也低,然后用OLAP来验证他这个假设。如果这个假设没有被证实,他可能去察看那些高负债的账户,如果还不行,他也许要把收入和负债一起考虑,一直进行下去,直到找到他想要的结果或放弃。

      也就是说,OLAP分析师是建立一系列的假设,然后通过OLAP来证实或推翻这些假设来最终得到自己的结论。OLAP分析过程在本质上是一个演绎推理的过程。但是如果分析的变量达到几十或上百个,那么再用OLAP手动分析验证这些假设将是一件非常困难和痛苦的事情。

      数据挖掘与OLAP不同的地方是,数据挖掘不是用于验证某个假定的模式(模型)的正确性,而是在数据库中自己寻找模型。他在本质上是一个归纳的过程。比如,一个用数据挖掘工具的分析师想找到引起贷款拖欠的风险因素。数据挖掘工具可能帮他找到高负债和低收入是引起这个问题的因素,甚至还可能发现一些分析师从来没有想过或试过的其他因素,比如年龄。

      数据挖掘和OLAP具有一定的互补性。在利用数据挖掘出来的结论采取行动之前,你也许要验证一下如果采取这样的行动会给公司带来什么样的影响,那么OLAP工具能回答你的这些问题。

      而且在知识发现的早期阶段,OLAP工具还有其他一些用途。可以帮你探索数据,找到哪些是对一个问题比较重要的变量,发现异常数据和互相影响的变量。这都能帮你更好的理解你的数据,加快知识发现的过程。

    数据挖掘,机器学习和统计

      数据挖掘利用了人工智能AI)和统计分析的进步所带来的好处。这两门学科都致力于模式发现和预测。

      数据挖掘不是为了替代传统的统计分析技术。相反,他是统计分析方法学的延伸和扩展。大多数的统计分析技术都基于完善的数学理论和高超的技巧,预测的准确度还是令人满意的,但对使用者的要求很高。而随着计算机计算能力的不断增强,我们有可能利用计算机强大的计算能力只通过相对简单和固定的方法完成同样的功能。

      一些新兴的技术同样在知识发现领域取得了很好的效果,如神经元网络决策树,在足够多的数据和计算能力下,他们几乎不用人的关照自动就能完成许多有价值的功能。

      数据挖掘就是利用了统计和人工智能技术的应用程序,他把这些高深复杂的技术封装起来,使人们不用自己掌握这些技术也能完成同样的功能,并且更专注于自己所要解决的问题。

    软硬件发展对数据挖掘的影响

      使数据挖掘这件事情成为可能的关键一点是计算机性能价格比的巨大进步。在过去的几年里磁盘存储器的价格几乎降低了99%,这在很大程度上改变了企业界对数据收集和存储的态度。如果每兆的价格是¥10,那存放1TB的价格是¥10,000,000,但当每兆的价格降为1毛钱时,存储同样的数据只有¥100,000!

      计算机计算能力价格的降低同样非常显著。每一代芯片的诞生都会把CPU的计算能力提高一大步。内存RAM也同样降价迅速,几年之内每兆内存的价格由几百块钱降到现在只要几块钱。通常PC都有64M内存,工作站达到了256M,拥有上G内存的服务器已经不是什么新鲜事了。

      在单个CPU计算能力大幅提升的同时,基于多个CPU的并行系统也取得了很大的进步。目前几乎所有的服务器都支持多个CPU,这些SMP服务器簇甚至能让成百上千个CPU同时工作。

      基于并行系统的数据库管理系统也给数据挖掘技术的应用带来了便利。如果你有一个庞大而复杂的数据挖掘问题要求通过访问数据库取得数据,那么效率最高的办法就是利用一个本地的并行数据库。

      所有这些都为数据挖掘的实施扫清了道路,随着时间的延续,我们相信这条道路会越来越平坦。

    数据挖掘应用

      1、数据挖掘解决的典型商业问题

      需要强调的是,数据挖掘技术从一开始就是面向应用的。目前,在很多领域,数据挖掘(data mining)都是一个很时髦的词,尤其是在如银行、电信、保险、交通、零售(如超级市场)等商业领域。数据挖掘所能解决的典型商业问题包括:数据库营销(Database Marketing)、客户群体划分(Customer Segmentation & Classification)、背景分析(Profile Analysis)、交叉销售(Cross-selling)等市场分析行为,以及客户流失性分析(Churn Analysis)、客户信用记分(Credit Scoring)、欺诈发现(Fraud Detection)等等。

      2、数据挖掘在市场营销的应用

      数据挖掘技术在企业市场营销中得到了比较普遍的应用,它是以市场营销学的市场细分原理为基础,其基本假定是“消费者过去的行为是其今后消费倾向的最好说明”。

      通过收集、加工和处理涉及消费者消费行为的大量信息,确定特定消费群体或个体的兴趣、消费习惯、消费倾向消费需求,进而推断出相应消费群体或个体下一步的消费行为,然后以此为基础,对所识别出来的消费群体进行特定内容的定向营销,这与传统的不区分消费者对象特征的大规模营销手段相比,大大节省了营销成本,提高了营销效果,从而为企业带来更多的利润。

      商业消费信息来自市场中的各种渠道。例如,每当我们用信用卡消费时,商业企业就可以在信用卡结算过程收集商业消费信息,记录下我们进行消费的时间、地点、感兴趣的商品或服务、愿意接收的价格水平和支付能力等数据;当我们在申办信用卡、办理汽车驾驶执照、填写商品保修单等其他需要填写表格的场合时,我们的个人信息就存入了相应的业务数据库;企业除了自行收集相关业务信息之外,甚至可以从其他公司或机构购买此类信息为自己所用。

      这些来自各种渠道的数据信息被组合,应用超级计算机、并行处理、神经元网络、模型化算法和其他信息处理技术手段进行处理,从中得到商家用于向特定消费群体或个体进行定向营销的决策信息。这种数据信息是如何应用的呢?举一个简单的例子,当银行通过对业务数据进行挖掘后,发现一个银行帐户持有者突然要求申请双人联合帐户时,并且确认该消费者是第一次申请联合帐户,银行会推断该用户可能要结婚了,它就会向该用户定向推销用于购买房屋、支付子女学费等长期投资业务,银行甚至可能将该信息卖给专营婚庆商品和服务的公司。数据挖掘构筑竞争优势。

      在市场经济比较发达的国家和地区,许多公司都开始在原有信息系统的基础上通过数据挖掘对业务信息进行深加工,以构筑自己的竞争优势,扩大自己的营业额。美国运通公司(American Express)有一个用于记录信用卡业务的数据库,数据量达到54亿字符,并仍在随着业务进展不断更新。运通公司通过对这些数据进行挖掘,制定了“关联结算(Relation ship Billing)优惠”的促销策略,即如果一个顾客在一个商店用运通卡购买一套时装,那么在同一个商店再买一双鞋,就可以得到比较大的折扣,这样既可以增加商店的销售量,也可以增加运通卡在该商店的使用率。再如,居住在伦敦的持卡消费者如果最近刚刚乘英国航空公司的航班去过巴黎,那么他可能会得到一个周末前往纽约的机票打折优惠卡。

      基于数据挖掘的营销,常常可以向消费者发出与其以前的消费行为相关的推销材料。卡夫(Kraft)食品公司建立了一个拥有3000万客户资料的数据库,数据库是通过收集对公司发出的优惠券等其他促销手段作出积极反应的客户和销售记录而建立起来的,卡夫公司通过数据挖掘了解特定客户的兴趣和口味,并以此为基础向他们发送特定产品的优惠券,并为他们推荐符合客户口味和健康状况的卡夫产品食谱。美国的读者文摘(Reader's Digest)出版公司运行着一个积累了40年的业务数据库,其中容纳有遍布全球的一亿多个订户的资料,数据库每天24小时连续运行,保证数据不断得到实时的更新,正是基于对客户资料数据库进行数据挖掘的优势,使读者文摘出版公司能够从通俗杂志扩展到专业杂志、书刊和声像制品的出版和发行业务,极大地扩展了自己的业务。

      基于数据挖掘的营销对我国当前的市场竞争中也很具有启发意义,我们经常可以看到繁华商业街上一些厂商对来往行人不分对象地散发大量商品宣传广告,其结果是不需要的人随手丢弃资料,而需要的人并不一定能够得到。如果搞家电维修服务的公司向在商店中刚刚购买家电的消费者邮寄维修服务广告,卖特效药品的厂商向医院特定门诊就医的病人邮寄广告,肯定会比漫无目的的营销效果要好得多。

    数据挖掘在企业危机管理中的应用

      危机管理是管理领域新出现的一个热点研究领域,它是以市场竞争中危机的出现为研究起点,分析企业危机产生的原因和过程,研究企业预防危机、应付危机、解决危机的手段和策略,以增强企业的免疫力、应变力和竞争力,使管理者能够及时准确地获取所需要的信息,迅速捕捉到企业可能发生危机的一切可能事件和先兆,进而采取有效的规避措施,在危机发生之前对其进行控制,趋利避害,从而使企业能够适应迅速变化的市场环境,保持长久的竞争优势。但是由于危机产生的原因复杂,种类繁多,许多因素难以量化,而且危机管理中带有大量不确定因素的半结构化问题和非结构化问题,很多因素由于没有历史数据和相应的统计资料,很难进行科学地计算和评估,因此需要应用其它技术和方法来加强企业的危机管理工作。

      随着计算机技术、网络技术、通讯技术、Internet技术的迅速发展和电子商务办公自动化管理信息系统、Internet 的普及等,企业业务操作流程日益自动化,企业经营过程中产生了大量的数据,这些数据和由此产生的信息是企业的宝贵财富,它如实地记录着企业经营的本质状况。但是面对如此大量的数据,传统的数据分析方法,如数据检索、统计分析等只能获得数据的表层信息,不能获得其内在的、深层次的信息,管理者面临着数据丰富而知识贫乏的困境。如何从这些数据中挖掘出对企业经营决策有用的知识是非常重要的,数据挖掘便是为适应这种需要应运而生的。

      数据挖掘是一种新的信息处理技术,其主要特点是对企业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助经营决策的关键性数据,它在企业危机管理中得到了比较普遍的应用,具体可以应用到以下几个方面。

       1.利用Web页挖掘搜集外部环境信息

      信息是危机管理的关键因素。在危机管理过程中,可以利用Web 页挖掘技术对企业外部环境信息进行收集、整理和分析,尽可能地收集政治、经济、政策、科技、金融、各种市场、竞争对手、供求信息、消费者等与企业发展有关的信息,集中精力分析处理那些对企业发展有重大或潜在重大影响的外部环境信息,抓住转瞬即逝的市场机遇,获得企业危机的先兆信息,采取有效措施规避危机,促使企业健康、持续地发展。

       2.利用数据挖掘分析企业经营信息

      利用数据挖掘技术、数据仓库技术和联机分析技术,管理者能够充分利用企业数据仓库中的海量数据进行分析,并根据分析结果找出企业经营过程中出现的各种问题和可能引起危机的先兆,如经营不善、观念滞后、产品失败战略决策失误、财务危机等内部因素引起企业人、财、物、产、供、销的相对和谐平衡体遭到重大破坏,对企业的生存、发展构成严重威胁的信息,及时做出正确的决策,调整经营战略,以适应不断变化的市场需求。

       3.利用数据挖掘识别、分析和预防危机

      危机管理的精髓在于预防。利用数据挖掘技术对企业经营的各方面的风险、威胁和危险进行识别和分析,如产品质量和责任、环境、健康和人身安全、财务、营销、自然灾害、经营欺诈、人员及计算机故障等,对每一种风险进行分类,并决定如何管理各类风险;准确地预测企业所面临的各种风险,并对每一种风险、威胁和危险的大小及发生概率进行评价,建立各类风险管理的优先次序,以有限的资源、时间和资金来管理最严重的一种或某几类风险;制定危机管理的策略和方法,拟定危机应急计划和危机管理队伍,做好危机预防工作。

       4.利用数据挖掘技术改善客户关系管理

      客户满意度历来就是衡量一个企业服务质量好坏的重要尺度,特别是当客户的反馈意见具有广泛效应的时候更是如此。目前很多企业利用营销中心、新闻组、 BBS以及呼叫中心等收集客户的投诉和意见,并对这些投诉和意见进行分析,以发现客户关系管理中存在的问题,如果有足够多的客户都在抱怨同一个问题,管理者就有理由对其展开调查,为企业及时捕捉到发生危机的一切可能事件和先兆,从而挽救客户关系,避免经营危机。

       5.利用数据挖掘进行信用风险分析和欺诈甄别

      客户信用风险分析和欺诈行为预测对企业的财务安全是非常重要的,使用企业信息系统中数据库的数据,利用数据挖掘中的变化和偏差分析技术进行客户信用风险分析和欺诈行为预测,分析这些风险为什么会发生?哪些因素会导致这些风险?这些风险主要来自于何处?如何预测到可能发生的风险?采取何种措施减少风险的发生?通过评价这些风险的严重性、发生的可能性及控制这些风险的成本,汇总对各种风险的评价结果,进而建立一套信用风险管理的战略和监督体系,设计并完善信用风险管理能力,准确、及时地对各种信用风险进行监视、评价、预警和管理,进而采取有效的规避和监督措施,在信用风险发生之前对其进行预警和控制,趋利避害,做好信用风险的防范工作。

      6.利用数据挖掘控制危机

      危机一旦爆发,来势迅猛,损失严重,因此危机发生以后,要采取有力的措施控制危机,管理者可以利用先进的信息技术如基于Web 的挖掘技术、各种搜索引擎工具、E-mail自动处理工具、基于人工智能的信息内容的自动分类、聚类以及基于深层次自然语言理解的知识检索、问答式知识检索系统等快速地获取危机管理所需要的各种信息,以便向客户、社区、新闻界发布有关的危机管理信息,并在各种媒体尤其是公司的网站上公布企业的详细风险防御和危机管理计划,使全体员工能够及时获取危机管理信息及危机最新的进展情况。这样企业的高层管理人员、公关人员、危机管理人员和全体员工就能随时有准备地应付任何复杂情况和危急形势的压力,对出现的危机立即做出反应,使危机的损失降到最低。

      危机就是危险和机遇,企业的每一次危机既包含了导致失败的根源,又蕴藏着成功的种子,发现、培育,进而收获潜在的成功机会,就是危机管理的精髓;而错误地估计形势,并令事态进一步恶化,则是不良危机管理的典型特征。企业应加强危机管理工作,利用先进的数据挖掘技术加强企业的危机管理工作,以便准确及时地获取所需要的危机信息,迅速捕捉到企业可能发生危机的一切事件和征兆,进而采取有效的规避措施,在危机发生之前对其进行控制,趋利避害,从而使企业能够适应迅速变化的市场环境,保持长久的竞争优势,实现可持续发展战略


    来源:http://wiki.mbalib.com/wiki/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98

    展开全文
  • 数据挖掘】金融风控 Task02 数据分析 学习地址:https: //github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl 天池竞赛地址:...


    学习地址:https: //github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl
    天池竞赛地址:https://tianchi.aliyun.com/competition/entrance/531830/introduction


    由于之前已经参与过数据分析的入门教程,一些基础的知识点不在重复记录
    本次组队内容的优点在于其系统性,通过函数实现代码封装 及整体的处理思路都值得日后去借鉴


    1. 探索性数据分析(EDA)概述

    1. 1 探索性数据分析概念

    探索性数据分析所谓探索性数据分析( Exploratory Data Analysis )以下简称EDA,是指对已有的数据( 特别是调查或观察得来的原始数据 )在尽量少的先验假定下进行探索通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。

    1.2 探索性数据分析目的

    • 了解整个数据集的基本情况(缺失值,异常值),对数据集进行验证是否可以进行接下来的机器学习或者深度学习建模。
    • 了解变量间的相互关系,变量与预测值之间的存在关系。
    • 为特征工程做准备

    1.3 探索性数据分析(EDA)与传统统计分析(Classical Analysis)的区别

    • 传统的统计分析方法通常是先假设样本服从某种分布,然后把数据套入假设模型再做分析。但由于多数数据并不能满足假设的分布,因此,传统统计分析结果常常不能让人满意。

    • 探索性数据分析方法注重数据的真实分布,强调数据的可视化,使分析者能一目了然看出数据中隐含的规律,从而得到启发,以此帮助分析者找到适合数据的模型。“探索性”是指分析者对待解问题的理解会随着研究的深入不断变化。

    传统数据分析步骤
    在这里插入图片描述
    在这里插入图片描述


    2. 金融风控实战

    参数表,已根据本节分析所得结果进行描述补充

    变量 含义 数据量及类型 类型
    id 为贷款清单分配的唯一信用证标识 800000 non-null int64 连续型数值特征
    loanAmnt 贷款金额 800000 non-null float64 连续型数值特征
    term 贷款期限(year) 800000 non-null int64 离散型数值特征
    interestRate 贷款利率 800000 non-null float64 连续型数值特征
    installment 分期付款金额 800000 non-null float64 连续型数值特征
    grade 贷款等级 800000 non-null object 类别特征:用A、B、C、D、E、F、G表示的
    subGrade 贷款等级之子级 800000 non-null object 类别特征:每类有五个子类用如A1、A2…A5表示
    employmentTitle 就业职称 799999 non-null float64 连续型数值特征 :用一串编码的数字来表示的
    employmentLength 就业年限(年) 753201 non-null object 类别特征:格式为如2 year
    homeOwnership 借款人在登记时提供的房屋所有权状况 800000 non-null int64 有0、1、2、3、4、5六种
    annualIncome 年收入 800000 non-null float64 连续型数值特征
    verificationStatus 验证状态 800000 non-null int64 有0、1、2三种
    issueDate 贷款发放的月份 800000 non-null object 非数值特征:2014-07-01形式
    isDefault 是否违约 0或者1
    purpose 借款人在贷款申请时的贷款用途类别 800000 non-null int64 离散型数值特征:0~13
    postCode 借款人在贷款申请中提供的邮政编码的前3位数字 799999 non-null float64 连续型数值特征
    regionCode 地区编码 800000 non-null int64 连续型数值特征
    dti 债务收入比 799761 non-null float64 连续型数值特征
    delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数 800000 non-null float64 连续型数值特征
    ficoRangeLow 借款人在贷款发放时的fico所属的下限范围 800000 non-null float64 连续型数值特征
    ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围 800000 non-null float64 连续型数值特征
    openAcc 借款人信用档案中未结信用额度的数量 800000 non-null float64 连续型数值特征
    pubRec 贬损公共记录的数量 800000 non-null float64 连续型数值特征
    pubRecBankruptcies 公开记录清除的数量 799595 non-null float64 连续型数值特征
    revolBal 信贷周转余额合计 800000 non-null float64 连续型数值特征
    revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额 799469 non-null float64 连续型数值特征
    totalAcc 借款人信用档案中当前的信用额度总数 800000 non-null float64 连续型数值特征
    initialListStatus 贷款的初始列表状态 800000 non-null int64 离散型数值特征:0或者1
    applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请 800000 non-null int64 离散型数值特征
    earliesCreditLine 借款人最早报告的信用额度开立的月份 800000 non-null object 非数值型特征:Aug-2001
    title 借款人提供的贷款名称 799999 non-null float64 离散型数值特征:0或1
    policyCode 公开可用的策略_代码=1新产品不公开可用的策略_代码=2 800000 non-null float64 离散型数值特征
    n0 759730 non-null float64 连续型数值特征
    n1 759730 non-null float64 连续型数值特征
    n2 759730 non-null float64 连续型数值特征
    n2.1 759730 non-null float64 连续型数值特征
    n4 766761 non-null float64 连续型数值特征
    n5 759730 non-null float64 连续型数值特征
    n6 759730 non-null float64 连续型数值特征
    n7 759730 non-null float64 连续型数值特征
    n8 759729 non-null float64 连续型数值特征
    n9 759730 non-null float64 连续型数值特征
    n10 766761 non-null float64 连续型数值特征
    n11 730248 non-null float64 离散型数值特征
    n12 759730 non-null float64 离散型数值特征
    n13 759730 non-null float64 连续型数值特征
    n14 759730 non-null float64 连续型数值特征

    2.1 导入所需要的库

    import pandas as pd 
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    import seaborn as sns
    """
    python通过调用warnings模块中定义的warn()函数来发出警告。
    通过下面两行代码来忽略警告
    """
    import warnings
    warnings.filterwarnings('ignore')
    

    2.2 文件读取

    训练集为47列,测试集为48列,具体包含内容见上面

    #导入训练集
    data_train=pd.read_csv('./train.csv')
    data_train.head()
    
    #导入测试集
    data_test_a=pd.read_csv('./testA.csv')
    

    2.2.1 TSV和CSV区别

    • TSV是用制表符(Tab,'\t')作为字段值的分隔符;
    • CSV是用半角逗号(',')作为字段值的分隔符;

    2.2.2 读取大文件

    • 对于较大的文件,可以通过nrows来实现部分读取
    #通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。
    data_train_sample = pd.read_csv("./train.csv",nrows=5)
    
    • 通过chunksize实现分块读取
    #设置chunksize参数,来控制每次迭代数据的大小
    chunker = pd.read_csv("./train.csv",chunksize=100)
    for item in chunker:
        print(type(item))
        #<class 'pandas.core.frame.DataFrame'>
        print(len(item))
        #100
    

    2.2.3 通过os.getcwd()查看当前工作目录

    pandas读取数据时相对路径载入报错时,可使用os.getcwd()查看当前工作目录。


    2.3 数据总体了解

    • 查看数据形状df.shape
    ##查看测试集的shape
    data_test_a.shape
    #(200000, 48)
    
    ##查看训练集的shape 可以发现训练集是测试集的四倍
    data_train.shape   
    #(800000, 47)
    
    • 查看列名df.columns
    data_train.columns
    
    #Index(['id', 'loanAmnt', 'term', 'interestRate', 'installment', 'grade',
           'subGrade', 'employmentTitle', 'employmentLength', 'homeOwnership',
           'annualIncome', 'verificationStatus', 'issueDate', 'isDefault',
           'purpose', 'postCode', 'regionCode', 'dti', 'delinquency_2years',
           'ficoRangeLow', 'ficoRangeHigh', 'openAcc', 'pubRec',
           'pubRecBankruptcies', 'revolBal', 'revolUtil', 'totalAcc',
           'initialListStatus', 'applicationType', 'earliesCreditLine', 'title',
           'policyCode', 'n0', 'n1', 'n2', 'n2.1', 'n4', 'n5', 'n6', 'n7', 'n8',
           'n9', 'n10', 'n11', 'n12', 'n13', 'n14'],
          dtype='object')
    
    • info()查看数据类型
    data_train.info()
    

    在这里插入图片描述

    • 利用describe()粗略的查看一些统计性数据
    #利用describe()粗略的查看数据集的各个特征的一些基本统计量
    data_train.describe()
    

    在这里插入图片描述

    • 使用head()tail()查看前n行和后n行数据
    data_train.head(3).append(data_train.tail(3))
    

    2.4 查看数据中的缺失值,唯一值等

    2.4.1 查看缺失值

    【注意】此处用了format的几种表示形式,注意第一种和python的版本有关系,低于3.7版本的无法使用,可以通过import sys sys.version来查看自己的版本

    #字符串前加f作用相当于format
    #isnull为空显示true不为空显示false
    #any函数用法https://www.cjavapy.com/article/297/ 返回为真的
    print(f'共有 {data_train.isnull().any().sum()}列存在缺失')
    
    #字符串前加f作用相当于format
    #isnull为空显示true不为空显示false
    #any函数用法https://www.cjavapy.com/article/297/ 返回为真的
    print('存在缺失的列的个数为:{}'.format(data_train.isnull().any().sum()))
    
    print('存在缺失的列的个数为:%s' % format(data_train.isnull().any().sum()))
    

    经过上面操作可以发现训练集有22列特征存在缺失值,可以进一步的去统计下那些特征的缺失值大于50%,对于缺失大于50%的特征在后续的处理中我们可以考虑直接舍弃

    #data_train.isnull().sum()统计每列缺失值的个数
    #data_train.isnull().sum()/len(data_train)缺失值个数占总量的多少
    have_null_fea_dict=(data_train.isnull().sum()/len(data_train)).to_dict()
    #创建一个字典来统计
    fea_null_moreThanHalf={}
    #Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组
    for key,value in have_null_fea_dict.items():
        if value>0.5:
            fea_null_moreThanHalf[key]=value
    
    fea_null_moreThanHalf
    

    结果为{},即在本训练集中没有缺失超过50%的特征

    通过可视化直观缺失特征及缺失率

    # nan可视化
    missing=data_train.isnull().sum()/len(data_train) #计算缺失率
    missing=missing[missing>0]  #计算缺失率大于0的,即存在缺失的
    
    #重新排序
    missing.sort_values(inplace=True)
    
    #绘制条形图
    missing.plot.bar()
    

    在这里插入图片描述
    通过条形图我们可以明显的看出缺失率最高的是n11,最高的缺失率在0.08左右
    【注意】

    • 纵向了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。
    • 可以横向比较,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。

    2.4.2 查看唯一值

    通过df.nunique()<=1可以提取出唯一值

    #查看训练集中只有一个值的特征
    ##此处用到了一行for循环
    '''
    一行for循环外面加上[ ],可以让这一行语句作为一个迭代器使用,返回的是一个list类型。
    需要注意的是只是将本来属于最后一行的内容提前
    '''
    one_value_fea=[col for col in data_train.columns if data_train[col].nunique()<=1]
    

    结果为['policyCode']

    #查看测试集中只有一个值的特征
    one_value_fea_test = [col for col in data_test_a.columns if data_test_a[col].nunique() <= 1]
    

    结果为['policyCode']
    经过上面结果可以看出不管训练集还是测试集['policyCode']的值都是唯一的,所以在后续训练中我们可以直接舍弃这个属性

    【总结】

    • 训练集中47列数据中有22列有缺失值,但是没有缺失超过一半以上的(最多为0.08),
    • policyCode 公开可用的策略_代码=1新产品不公开可用的策略_代码=2 这个属性在测试集和训练集中都只有一个值为1

    2.5 查看数值特征与对象类型

    2.5.1 数值特征

    • 特征一般都是由类别型特征数值型特征组成,而数值型特征又分为连续型和离散型
    • 类别型特征有时具有非数值关系,有时也具有数值关系。比如‘grade’中的等级A,B,C等,是否只是单纯的分类,还是A优于其他要结合业务判断。
    • 数值型特征本是可以直接入模的,但往往风控人员要对其做分箱,转化为WOE编码进而做标准评分卡等操作。从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定。

    2.5.1.1 查看数值特征(是数值型还是类别型)

    • 查看数值型
    #查看数值类特征(即选择所有特征排除掉object的)
    #根据数据类型选择特征 select_dtypes(include=['']/exclude=[])
    numerical_fea=list(data_train.select_dtypes(exclude=['object']).columns)
    numerical_fea
    
    

    结果为

    ['id',
     'loanAmnt',
     'term',
     'interestRate',
     'installment',
     'employmentTitle',
     'homeOwnership',
     'annualIncome',
     'verificationStatus',
     'isDefault',
     'purpose',
     'postCode',
     'regionCode',
     'dti',
     'delinquency_2years',
     'ficoRangeLow',
     'ficoRangeHigh',
     'openAcc',
     'pubRec',
     'pubRecBankruptcies',
     'revolBal',
     'revolUtil',
     'totalAcc',
     'initialListStatus',
     'applicationType',
     'title',
     'policyCode',
     'n0',
     'n1',
     'n2',
     'n2.1',
     'n4',
     'n5',
     'n6',
     'n7',
     'n8',
     'n9',
     'n10',
     'n11',
     'n12',
     'n13',
     'n14']
    
    • 查看类别型
    #方法一 利用select选择类型为object的
    category_fea=list(data_train.select_dtypes(include=['object']).columns)
    category_fea
    
    #方法二使用lambda函数
    #filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
    #该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
    category_fea = list(filter(lambda x: x not in numerical_fea,list(data_train.columns)))
    category_fea
    

    结果为

    ['grade', 'subGrade', 'employmentLength', 'issueDate', 'earliesCreditLine']
    

    可以用df.属性名或者df['属性名']进一步查看属性中的各个取值

    2.5.1.2 划分数值型变量中的连续变量和离散型变量

    def get_numerical_serial_fea(data,feas):#data是原始数据,feas是前面已经提取的数值型变量
        numerical_serical_fea=[]#连续型数值变量
        numerical_noserial_fea=[]#no serial 离散型数值变量
        for fea in feas:  
            temp=data[fea].nunique()
            if temp<=10: #如果类别小于等于10便认为是离散型,否则是连续型
                numerical_noserial_fea.append(fea)
                continue
            numerical_serical_fea.append(fea)
        return numerical_serical_fea,numerical_noserial_fea
    
    numerical_serical_fea,numerical_noserial_fea=get_numerical_serial_fea(data_train,numerical_fea)
    

    连续型变量numerical_serial_fea

    ['id',
     'loanAmnt',
     'interestRate',
     'installment',
     'employmentTitle',
     'annualIncome',
     'purpose',
     'postCode',
     'regionCode',
     'dti',
     'delinquency_2years',
     'ficoRangeLow',
     'ficoRangeHigh',
     'openAcc',
     'pubRec',
     'pubRecBankruptcies',
     'revolBal',
     'revolUtil',
     'totalAcc',
     'title',
     'n0',
     'n1',
     'n2',
     'n2.1',
     'n4',
     'n5',
     'n6',
     'n7',
     'n8',
     'n9',
     'n10',
     'n13',
     'n14']
    

    离散型变量numerical_noserial_fea

    ['term',
     'homeOwnership',
     'verificationStatus',
     'isDefault',
     'initialListStatus',
     'applicationType',
     'policyCode',
     'n11',
     'n12']
    

    2.5.1.3 离散型变量分析

    for i in numerical_noserial_fea:
        print('==查看离散型变量【{}】属性的分布=='.format(i))
        print(data_train[i].value_counts(),'\n')
    

    结果为

    ==查看离散型变量【term】属性的分布==
    3    606902
    5    193098
    Name: term, dtype: int64 
    
    ==查看离散型变量【homeOwnership】属性的分布==
    0    395732
    1    317660
    2     86309
    3       185
    5        81
    4        33
    Name: homeOwnership, dtype: int64 
    
    ==查看离散型变量【verificationStatus】属性的分布==
    1    309810
    2    248968
    0    241222
    Name: verificationStatus, dtype: int64 
    
    ==查看离散型变量【isDefault】属性的分布==
    0    640390
    1    159610
    Name: isDefault, dtype: int64 
    
    ==查看离散型变量【initialListStatus】属性的分布==
    0    466438
    1    333562
    Name: initialListStatus, dtype: int64 
    
    ==查看离散型变量【applicationType】属性的分布==
    0    784586
    1     15414
    Name: applicationType, dtype: int64 
    
    ==查看离散型变量【policyCode】属性的分布==
    1.0    800000
    Name: policyCode, dtype: int64 
    
    ==查看离散型变量【n11】属性的分布==
    0.0    729682
    1.0       540
    2.0        24
    4.0         1
    3.0         1
    Name: n11, dtype: int64 
    
    ==查看离散型变量【n12】属性的分布==
    0.0    757315
    1.0      2281
    2.0       115
    3.0        16
    4.0         3
    Name: n12, dtype: int64 
    

    【总结】通过上面查看可以看出

    • policyCode属性无用,因为全是一个值
    • n11,n12属性相差过大,不用再分析(其中一类占到了近90%)

    2.5.1.4 连续型变量分析

    这里使用了pandas.melt来实现数据的逆透视,以及season.FaceGrid实现可视化

    • pandas.melt

    【基本格式】

    pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
    

    【参数解释】

    参数 含义
    frame 要处理的数据集。
    id_vars 不需要被转换的列名。
    value_vars 需要转换的列名,如果剩下的列全部都要转换,就不用写了。
    var_name、value_name 是自定义设置对应的列名。
    col_level 如果列是MultiIndex,则使用此级别。

    相关用法可参考:https://blog.csdn.net/maymay_/article/details/80039677

    • season.FaceGrid
      FacetGrid当您想要在数据集的子集中分别可视化变量的分布或多个变量之间的关系时,该类非常有用。
      基本工作流程是FacetGrid使用数据集和用于构造网格的变量初始化对象。然后,可以通过调用FacetGrid.map()或将一个或多个绘图函数应用于每个子集 FacetGrid.map_dataframe()。最后,可以使用其他方法调整绘图,以执行更改轴标签,使用不同刻度或添加图例等操作
      【基本格式】
    class seaborn.FacetGrid(data, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=True, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None, size=None)
    

    【参数解释】

    参数 含义
    data DataFrame处理后的(“长格式”)dataframe数据,其中每一列都是一个变量(特征),每一行都是一个样本
    row, col, hue strings 定义数据子集的变量,这些变量将在网格的不同方面绘制。
    col_wrap nt, optional这个意思是图网格列维度限制,比如col_wrap =3,那么在这个画布里最多只能画3列。行不限制,这样就限制了列的个数。
    sharex=True, sharey=False 是否共享x轴或者y轴

    相关用法参考:Seaborn学习(一)------- 构建结构化多绘图网格(FacetGrid()、map())详解

    下面通过上面介绍的两个库实现连续型数值数据的可视化

    #每个数字特征得分布可视化,查看了连续性数据的分布
    f = pd.melt(data_train, value_vars=numerical_serical_fea)
    g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False) #先给图占位置
    g = g.map(sns.distplot, "value") #作图,得到的是每个值的概率
    
    #字符串self.data中的列名,用于标识具有要绘制的数据的变量。 每个变量的数据按照调用中指定的顺序传递给`func`。
    

    在这里插入图片描述

    【扩展】

    • 查看某一个数值型变量的分布,查看变量是否符合正态分布,如果不符合正太分布的变量可以log化后再观察下是否符合正态分布。
    • 如果想统一处理一批数据变标准化 必须把这些之前已经正态化的数据提出
    • 正态化的原因:一些情况下正态非正态可以让模型更快的收敛,一些模型要求数据正态(eg. GMM、KNN),保证数据不要过偏态即可,过于偏态可能会影响模型预测结果。

    绘制贷款金额分布

    #Ploting Transaction Amount Values Distribution
    #设置图像大小
    plt.figure(figsize=(16,12))
    plt.suptitle('Transaction Values Distribution', fontsize=22)
    plt.subplot(221)
    sub_plot_1 = sns.distplot(data_train['loanAmnt'])
    sub_plot_1.set_title("loanAmnt Distribuition", fontsize=18)
    sub_plot_1.set_xlabel("")
    sub_plot_1.set_ylabel("Probability", fontsize=15)
    
    #log后的图像
    plt.subplot(222)
    sub_plot_2 = sns.distplot(np.log(data_train['loanAmnt']))
    sub_plot_2.set_title("loanAmnt (Log) Distribuition", fontsize=18)
    sub_plot_2.set_xlabel("")
    sub_plot_2.set_ylabel("Probability", fontsize=15)
    

    在这里插入图片描述

    2.5.1.5 非数值型类别变量分析

    在前面的代码中已经获得了类别变量名并将其保存到了category_fea

    for i in category_fea:
        print('==查看非数值类别变量【{}】属性的分布=='.format(i))
        print(data_train[i].value_counts(),'\n')
    

    结果为

    ==查看非数值类别变量【grade】属性的分布==
    B    233690
    C    227118
    A    139661
    D    119453
    E     55661
    F     19053
    G      5364
    Name: grade, dtype: int64 
    
    ==查看非数值类别变量【subGrade】属性的分布==
    C1    50763
    B4    49516
    B5    48965
    B3    48600
    C2    47068
    C3    44751
    C4    44272
    B2    44227
    B1    42382
    C5    40264
    A5    38045
    A4    30928
    D1    30538
    D2    26528
    A1    25909
    D3    23410
    A3    22655
    A2    22124
    D4    21139
    D5    17838
    E1    14064
    E2    12746
    E3    10925
    E4     9273
    E5     8653
    F1     5925
    F2     4340
    F3     3577
    F4     2859
    F5     2352
    G1     1759
    G2     1231
    G3      978
    G4      751
    G5      645
    Name: subGrade, dtype: int64 
    
    ==查看非数值类别变量【employmentLength】属性的分布==
    10+ years    262753
    2 years       72358
    < 1 year      64237
    3 years       64152
    1 year        52489
    5 years       50102
    4 years       47985
    6 years       37254
    8 years       36192
    7 years       35407
    9 years       30272
    Name: employmentLength, dtype: int64 
    
    ==查看非数值类别变量【issueDate】属性的分布==
    2016-03-01    29066
    2015-10-01    25525
    2015-07-01    24496
    2015-12-01    23245
    2014-10-01    21461
    2016-02-01    20571
    2015-11-01    19453
    2015-01-01    19254
    2015-04-01    18929
    2015-08-01    18750
    2015-05-01    17119
    2016-01-01    16792
    2014-07-01    16355
    2015-06-01    15236
    2015-09-01    14950
    2016-04-01    14248
    2014-11-01    13793
    2015-03-01    13549
    2016-08-01    13301
    2015-02-01    12881
    2016-07-01    12835
    2016-06-01    12270
    2016-12-01    11562
    2016-10-01    11245
    2016-11-01    11172
    2014-05-01    10886
    2014-04-01    10830
    2016-05-01    10680
    2014-08-01    10648
    2016-09-01    10165
                  ...  
    2010-01-01      355
    2009-10-01      305
    2009-09-01      270
    2009-08-01      231
    2009-07-01      223
    2009-06-01      191
    2009-05-01      190
    2009-04-01      166
    2009-03-01      162
    2009-02-01      160
    2009-01-01      145
    2008-12-01      134
    2008-03-01      130
    2008-11-01      113
    2008-02-01      105
    2008-04-01       92
    2008-01-01       91
    2008-10-01       62
    2007-12-01       55
    2008-07-01       52
    2008-08-01       38
    2008-05-01       38
    2008-06-01       33
    2007-10-01       26
    2007-11-01       24
    2007-08-01       23
    2007-07-01       21
    2008-09-01       19
    2007-09-01        7
    2007-06-01        1
    Name: issueDate, Length: 139, dtype: int64 
    
    ==查看非数值类别变量【earliesCreditLine】属性的分布==
    Aug-2001    5567
    Aug-2002    5403
    Sep-2003    5403
    Oct-2001    5258
    Aug-2000    5246
    Sep-2004    5219
    Sep-2002    5170
    Aug-2003    5116
    Oct-2000    5034
    Oct-2002    5034
    Oct-2003    4969
    Aug-2004    4904
    Nov-2000    4798
    Sep-2001    4787
    Sep-2000    4780
    Nov-1999    4773
    Oct-1999    4678
    Oct-2004    4647
    Sep-2005    4608
    Jul-2003    4586
    Nov-2001    4514
    Aug-2005    4494
    Jul-2001    4480
    Aug-1999    4446
    Sep-1999    4441
    Dec-2001    4379
    Jul-2002    4342
    Aug-2006    4283
    Mar-2001    4268
    May-2001    4223
                ... 
    Jun-1952       2
    Aug-1950       2
    Oct-1958       2
    Jul-1959       2
    Nov-1962       2
    Sep-1960       2
    Apr-1955       2
    Oct-1954       1
    Nov-1953       1
    Jun-1958       1
    Dec-1951       1
    Oct-1957       1
    Oct-2015       1
    Mar-1957       1
    Mar-1958       1
    Aug-1958       1
    Aug-1946       1
    Sep-1953       1
    Dec-1960       1
    May-1957       1
    Apr-1958       1
    Nov-1954       1
    Jul-1955       1
    Mar-1962       1
    Aug-1955       1
    Sep-1957       1
    Feb-1960       1
    May-1960       1
    Jan-1944       1
    Jan-1946       1
    Name: earliesCreditLine, Length: 720, dtype: int64 
    

    【总结】
    上面通过value_counts()等函数看了特征属性的分布,但是图表是概括原始信息最便捷的方式。

    同一份数据集,在不同的尺度刻画上显示出来的图形反映的规律是不一样的。


    2.6 变量分布可视化

    2.6.1 单一变量分布可视化

    此处对就业年限进行可视化

    plt.figure(figsize=(8,8))
    #dropna该函数主要用于滤除缺失数据。
    #如果是Series,则返回一个仅含非空数据和索引值的Series,默认丢弃含有缺失值的行
    sns.barplot(data_train['employmentLength'].value_counts(dropna=False)[:20],
               data_train['employmentLength'].value_counts(dropna=False).keys()[:20])
    

    在这里插入图片描述

    2.6.2 根据y值不同可视化x某个特征的分布

    • 查看类别型变量在不同值上的分布
    #违约
    train_loan_fr = data_train.loc[data_train['isDefault'] == 1]
    #没有违约
    train_loan_nofr = data_train.loc[data_train['isDefault'] == 0]
    
    fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 8))
    train_loan_fr.groupby('grade')['grade'].count().plot(kind='barh', ax=ax1, title='Count of grade fraud')
    train_loan_nofr.groupby('grade')['grade'].count().plot(kind='barh', ax=ax2, title='Count of grade non-fraud')
    train_loan_fr.groupby('employmentLength')['employmentLength'].count().plot(kind='barh', ax=ax3, title='Count of employmentLength fraud')
    train_loan_nofr.groupby('employmentLength')['employmentLength'].count().plot(kind='barh', ax=ax4, title='Count of employmentLength non-fraud')
    plt.show()
    

    在这里插入图片描述
    左上图示违约的人,可以看出带看等级为C的人违约最多
    右上图是没有违约的人,可以看出B等级人最多
    左下图示违约的人,可以看出工作19年以上的人违约的最多
    右下角是没有违约的人,工作十年的人没有违约的最多

    • 连续型变量在不同y值上的分布
    fig, ((ax1, ax2)) = plt.subplots(1, 2, figsize=(15, 6))
    data_train.loc[data_train['isDefault'] == 1] \
        ['loanAmnt'].apply(np.log) \
        .plot(kind='hist',#画直方图
              title='Log Loan Amt - Fraud',
              color='r',
              xlim=(-3, 10),
             ax= ax1)
    data_train.loc[data_train['isDefault'] == 0] \
        ['loanAmnt'].apply(np.log) \
        .plot(kind='hist',
              title='Log Loan Amt - Not Fraud',
              color='b',
              xlim=(-3, 10),
             ax=ax2)
    

    在这里插入图片描述

    total = len(data_train)
    total_amt = data_train.groupby(['isDefault'])['loanAmnt'].sum().sum() #计算出了贷款总和
    
    
    plt.figure(figsize=(12,5))
    plt.subplot(121)##1代表行,2代表列,所以一共有2个图,1代表此时绘制第一个图。
    plot_tr = sns.countplot(x='isDefault',data=data_train)#data_train‘isDefault’这个特征每种类别的数量**
    plot_tr.set_title("Fraud Loan Distribution \n 0: good user | 1: bad user", fontsize=14)
    plot_tr.set_xlabel("Is fraud by count", fontsize=16)
    plot_tr.set_ylabel('Count', fontsize=16)
    for p in plot_tr.patches:
        height = p.get_height()
        plot_tr.text(p.get_x()+p.get_width()/2.,
                height + 3,
                '{:1.2f}%'.format(height/total*100),
                ha="center", fontsize=15) 
        
    percent_amt = (data_train.groupby(['isDefault'])['loanAmnt'].sum())
    percent_amt = percent_amt.reset_index()
    plt.subplot(122)
    plot_tr_2 = sns.barplot(x='isDefault', y='loanAmnt',  dodge=True, data=percent_amt)
    plot_tr_2.set_title("Total Amount in loanAmnt  \n 0: good user | 1: bad user", fontsize=14)
    plot_tr_2.set_xlabel("Is fraud by percent", fontsize=16)
    plot_tr_2.set_ylabel('Total Loan Amount Scalar', fontsize=16)
    for p in plot_tr_2.patches:
        height = p.get_height()
        plot_tr_2.text(p.get_x()+p.get_width()/2.,
                height + 3,
                '{:1.2f}%'.format(height/total_amt * 100),
                ha="center", fontsize=15)     
    
    

    在这里插入图片描述

    2.7 时间数据处理及查看

    • 转化为datetime格式
    #训练集转化为时间格式 issueDate特征表示数据日期离集中日期最早的日期
    data_train['issueDate'] = pd.to_datetime(data_train['issueDate'],format='%Y-%m-%d')
    data_train['issueDate']
    
    • 计算离数据集中最早日期的日期(2007-06-01)的天数
    #计算离数据集中最早日期的日期(2007-06-01)的天数
    import datetime
    startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')
    from IPython.core.interactiveshell import InteractiveShell
    InteractiveShell.ast_node_interactivity = "all"
    startdate
    data_train['issueDateDT'] = data_train['issueDate'].apply(lambda x: x-startdate).dt.days
    data_train['issueDateDT']
    

    在这里插入图片描述

    测试集转化成时间格式
    data_test_a['issueDate'] = pd.to_datetime(data_train['issueDate'],format='%Y-%m-%d')
    startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')
    data_test_a['issueDateDT'] = data_test_a['issueDate'].apply(lambda x: x-startdate).dt.days
    
    • 查看训练集和测试集的时间分布
    plt.hist(data_train['issueDateDT'],label='train')
    plt.hist(data_test_a['issueDateDT'],label='test')
    plt.legend()
    plt.title('Distribution of issueDateDT dates');
    #train 和 test issueDateDT 日期有重叠 所以使用基于时间的分割进行验证是不明智的
    

    在这里插入图片描述
    由于train 和 test issueDateDT 日期有重叠 所以使用基于时间的分割进行验证是不明智的


    2.7 透视图

    #透视图 索引可以有多个,
    #“columns(列)”是可选的,
    #聚合函数aggfunc最后是被应用到了变量“values”中你所列举的项目上。
    pivot = pd.pivot_table(data_train, index=['grade'], columns=['issueDateDT'], values=['loanAmnt'], aggfunc=np.sum)
    pivot
    

    在这里插入图片描述

    2.8 使用pandas_profiling生成数据报告

    安装失败orz 具体跑出来的结果等我安好了再放上

    import pandas_profiling
    
    pfr = pandas_profiling.ProfileReport(data_train)
    pfr.to_file("./example.html")
    
    展开全文
  • 选取部分数据预测训练得到预测结果作为新特征,带入剩下的数据中预测。 stacking 将若干基学习器获得的预测结果,将预测结果作为新的训练集来训练一个学习器。如下图 假设有五个基学习器,将数据带入五基学习器中...
  • 金融风控Task1赛题理解 赛题以金融风控中的个人信贷为背景,要求选手贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,...数据包含47列变量信息,可以通过Pandas的info()查看数据类型与及数据
  • Link: 数据挖掘实践(金融风控) 文章目录Task1 赛题理解 2天赛题要求赛题数据字段表评测标准提交结果个人理解思路比赛流程参考代码比赛指标Task2 EDA 3天Task3 特征工程 3天Task4 建模与调参 3天Task5 模型融合 3天...
  • 数据挖掘之金融风控 Task01 赛题理解1.赛题介绍1.1赛题概况1.2 数据概况1.3 预测指标1.3.1 混淆矩阵1.3.2 准确率、精确率、召回率、F1 Score1.3 P-R曲线1.4 ROC曲线1.4 AUC面积1.5 金融风控常见评估指标1.4 赛题流程...
  • 数据挖掘——分类

    万次阅读 2018-10-10 21:52:21
    分类:一种数据分析形式,它提取刻画重要数据类的模型。这种模型叫分类器,进而预测分类的(离散的、无序的)类标号。 相关概念解释 训练集:由数据库元组和与它们相关联的类标号组成。 元组X用n维属性向量...
  • 第三版 25页 数据挖掘又称知识发现(KDD:Knowledge Discovery in Database),即“从数据中挖掘知识”。  丰富的数据以及对强有力的数据分析工具的需求,这种情况被描述为“数据丰富,但信息匮乏”。数据挖掘...
  • 数据挖掘的一般过程

    万次阅读 多人点赞 2017-06-15 10:13:58
    数据挖掘的一般过程本文主要参考了一篇文章(最后附),那篇文章不太全面,因此加入了自己一点理解。由于实践经验太少,水平有限,希望大神指正。 1. 数据集选取或构造根据任务的目的,选择数据集。或者从实际中...
  • 大数据、数据分析数据挖掘的区别是,大数据是互联网的海量数据挖掘,而数据挖掘更多是针对内部企业行业小众化的数据挖掘数据分析就是进行做出针对性的分析和诊断,大数据需要分析的是趋势和发展,数据挖掘主要...
  • 从数据中“淘金”,从大量数据(文本)中挖掘出隐含的、未知的、对决策有潜在的关系、模型和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程,这就是数据挖掘。 它是利用...
  • 数据挖掘数据分析的区别

    万次阅读 2018-03-11 18:22:40
    数据分析: 1 概念 2 具体方法 3 分析方法 数据挖掘: 1 概念 2 数据挖掘起源 3 分析方法 4 九大经验 5 十大算法 结论 想尝试自己做一...
  • 数据挖掘:探索性数据分析(EDA)

    千次阅读 多人点赞 2020-02-21 15:48:22
    数据挖掘:探索性数据分析
  • 数据挖掘数据分析的主要区别

    万次阅读 2018-08-14 11:40:25
    百科是这样定义数据挖掘数据分析的。 数据分析:是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。在...
  • 在大数据领域里,经常会看到例如数据挖掘、OLAP、数据分析等等的专业词汇。如果仅仅从字面上,我们很难说清楚每个词汇的意义和差别。大讲台老师通过一些大数据在高校应用的例子,来为大家说明白—数据挖掘、大数据、...
  • 在开始学习python大数据之前,先要搞清楚人工智能、机器学习、深度学习、数据挖掘数据分析都是什么意思。 人工智能大家族包含着丰富的内容,分清楚了每一项都是做什么的,才能选对路线。 人工智能AI 人工...
  • 数据分析数据挖掘的区别

    千次阅读 2014-04-10 13:27:50
    这个问题貌似有点无聊,不过下面的chans ...不谈数据,就无以谈数据分析数据挖掘。由此,上面先说了数据。这里还要说下信息。信息,抽象的说,就是可信的数据。那么这里和数据最大的区别就在于,一个是
  • 数据分析师:基于业务,通过数据分析手段发现和分析业务问题,为决策作支持。 数据挖掘工程师:偏技术,通过建立模型、算法、预测等提供一些通用的解决方案,当然也有针对某业务的。 数据研发工程师:一般也叫数据...
  • 1.数据分析数据挖掘的定义和概念 2.数据分析数据挖掘的层次 3.数据分析数据挖掘的模型框架 1.1数据分析数据挖掘的定义: 数据分析 数据分析是指用适当的统计方法对收集来的大量数据进行分析,提取有用信息 ...
  • 上述系统可统一称为OLTP(在线事务处理),指的就是系统运行了一段时间以后,必然帮助企事业单位收集大量的历史数据。  在数据库中分散、独立存在的大量数据对于业务人员来说,只是一些无法看懂的天书。业务人员所...
  • 不管项目领域是金融、电信、医学或者交通,其实只要项目中涵盖数据分析数据挖掘的应用,项目的步骤大多会有些共通的地方。将这些共性的步骤总结并且归纳为一般性的方法,就变成了数据分析与挖掘的框架。 在真正...
  • 这是《Python数据挖掘课程》系列文章,前面很多文章都讲解了分类、聚类算法,这篇文章主要讲解SVM分类算法,同时讲解如何读取TXT文件数据并进行数据分析及评价的过程。 文章比较基础,希望对你有所帮助,提供些思路...
  • 数据分析可以分为广义的数据分析和狭义的数据分析,广义的数据分析就包括狭义的数据分析数据挖掘,我们常说的数据分析就是指狭义的数据分析数据分析(狭义): (1)定义:简单来说,数据分析就是对数据进行...
  • 大数据催生数据分析师 薪酬比同等级职位高20% 随着大数据在国内的发展,大数据相关人才却出现了供不应求的状况,大数据分析师更是被媒体称为“未来最具发展潜力的职业之一”。大数据分析师是做什么的?阿里巴巴集团...
  • 本人统计渣硕,上半年找实习,陆陆续续面试了十几家公司的数据分析挖掘、算法相关的岗位,在这里把能记得的公司的面试内容回顾总结一下,有些记不得了,印象深刻的尽量回忆写下来。某创业生态型企业,文本挖掘岗位...
  • 大数据行业经过几年的发展和沉淀,大数据项目岗位细分领域已经趋于完善,本文主要探讨在大数据分析这个领域,通过爬虫爬取各个招聘网站的相关数据,对细分岗位进行深入分析,本文的呈现,感谢科多大数据数据分析培训...

空空如也

1 2 3 4 5 ... 20
收藏数 3,072,828
精华内容 1,229,131
关键字:

数据挖掘