数据预处理没有统一的标准,只能说是根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择相关的数据预处理技术,一般会用到多种预处理技术,而且对每种处理之后的效果做些分析对比,这里面经验的成分比较大,即使是声称数据挖掘专家的人可能在某一个方面研究得很深入,但面对新的应用情况和数据,一开始他也不可能很有把握地说能挖掘出有价值的东西,数据挖掘这个术语原来也叫数据采矿,就好比采矿,需要耐心,需要经验,学要总结。其本身是一个综合学科:人工智能,机器学习,数据库,统计学等学科的大综合。个人认为在挖掘中对某一个具体问题做过多的纠缠是无益的,理论上再适合,但没经过你动手去检验,去比较之前那都是虚的。数据挖掘是一个反复的过程,而不是一劳永逸的一次性处理,比如SPSS的CRISP-DM处理过程模型就是个很好的诠释。
    再就是在挖掘的每个过程中,个人认为采用组件化,模块化的思想会有不错的效果,比如预处理过程你选择那些处理模块(实际上就是处理技术,算法)的组合,挖掘模型中采用那些算法组件[聚类算法有那些,分类算法有那些]的组合,展示的时候采用那些展示组件[直方图,散点图,曲线图等...]进行对比。整个挖掘过程就个搭积木的过程,不同的搭配会有不同的效果,这就需要实验,分析,对比,再分析,再实验,再对比...

主要的数据预处理技术:

一、数据清理
通过填写空缺值,平滑噪声数据,识别删除孤立点,并解决不一致来清理数据,主要是达到如下目标:
格式标准化
异常数据清除
错误纠正
重复数据的清除

(1)数据集压缩处理,主要策略:
数据聚集
维规约
数据压缩
数据规约

(2)空缺值处理,主要策略:
忽略元组
人工填写空缺值
使用固定值
使用属性平均值
使用最有可能值

(3)噪声数据处理,主要策略:
数据平滑技术:
需要做分箱处理
箱的深度:表示不同的箱里有相同个数的数据。
箱的宽度:每个箱值的取值区间是个常数。
平滑方法:
按箱平均值平滑
按箱中值平滑
按箱边界值平滑

聚类技术:
每个簇中的数据用其中心值代替
识别检测并忽略孤立点

计算机和人工检查相结合技术:
先通过聚类等方法找出孤立点。这些孤立点可能包含有用的信息。
人工再审查这些孤立点

回归技术:
通过构造函数来符合数据变化的趋势,这样可以用一个变量预测另一个变量。
线形回归
多线形回归

二、数据集成:
将多个数据源中的数据结合起来并统一存储,建立数据仓库的过程实际上就是数据集成。
实体识别 实体和模式的匹配
冗余:某个属性可以由别的属性推出。
相关分析
重复 同一数据存储多次
数据值冲突的检测和处理

三、数据变换:
平滑
聚集
数据概化
规范化
  最小 最大规范化
  小数定标规范化
  属性构造:由给定的属性构造和添加新的属性,以帮助提高精度和对高维数据结构的理解

四、数据归约:
1、维归约
删除不相关的属性(维)来减少数据量。
属性子集选择
找出最小属性集合,使得数据类的概率分布尽可能地接近使用所有属性的原分布
如何选取?
贪心算法
逐步向前选择
逐步后向删除
向前选择和后向删除相结合
判定树归纳

2、数据压缩
有损,无损
小波变换
将数据向量D转换成为数值上不同的小波系数的向量D’.
对D’进行剪裁,保留小波系数最强的部分
主成分分析

3、数值归约
回归和对数线形模型
线形回归
对数线形模型
直方图
等宽
等深
V-最优
maxDiff
聚类
多维索引树 : 对于给定的数据集合,索引树动态的划分多维空间。
选样
简单选择n个样本,不放回
简单选择n个样本,放回
聚类选样
分层选样

五、离散化和概念分层
离散化技术用来减少给定连续属性的个数,这个过程通常是递归的,而且大量时间花在排序上。
对于给定的数值属性,概念分层定义了该属性的一个离散化的值。

数值数据离散化和概念分层生成方法有:
分箱
直方图分析

分类数据的概念分层生成方法有:
由用户和专家在模式级显式的说明属性的部分序
通过显式的数据分组说明分层结构的一部分
说明属性集,但不说明他们的偏序
只说明部分的属性集

对数据预处理的一点理解[ZZ]的更多相关文章

  1. 关于DM的一点总结[ZZ]

    用IBM的IM做过一段时间的电信客户挖掘由于时间不是很长,做的挖掘模型效果还有待提高应朋友要求简单总结几点(水平有限,也希望经验丰富的朋友给些建议): 1.挖掘工具主要分商业数据产品和集成数据挖掘产品 ...

  2. 【深度学习系列】PaddlePaddle之数据预处理

    上篇文章讲了卷积神经网络的基本知识,本来这篇文章准备继续深入讲CNN的相关知识和手写CNN,但是有很多同学跟我发邮件或私信问我关于PaddlePaddle如何读取数据.做数据预处理相关的内容.网上看的 ...

  3. TensorFlow从1到2(三)数据预处理和卷积神经网络

    数据集及预处理 从这个例子开始,相当比例的代码都来自于官方新版文档的示例.开始的几个还好,但随后的程序都将需要大量的算力支持.Google Colab是一个非常棒的云端实验室,提供含有TPU/GPU支 ...

  4. Alink漫谈(十) :线性回归实现 之 数据预处理

    Alink漫谈(十) :线性回归实现 之 数据预处理 目录 Alink漫谈(十) :线性回归实现 之 数据预处理 0x00 摘要 0x01 概念 1.1 线性回归 1.2 优化模型 1.3 损失函数& ...

  5. R语言--数据预处理

    一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date(), date( ...

  6. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  7. [原创].NET 分布式架构开发实战之三 数据访问深入一点的思考

    原文:[原创].NET 分布式架构开发实战之三 数据访问深入一点的思考 .NET 分布式架构开发实战之三 数据访问深入一点的思考 前言:首先,感谢园子里的朋友对文章的支持,感谢大家,希望本系列的文章能 ...

  8. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  9. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

随机推荐

  1. Extjs4开发中的一些问题

    1.  子frame刷新的问题 一般在jsp里面,要实现界面跳转,有很多方法,最典型的就是window.location.href="href",但是在嵌套有iframe框架的页面 ...

  2. c#查看电脑内存

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  3. linux apache模块的安装

    最近,想使用apache的mod_status来查看一下apache的服务器状态,就自己安装了一下mod_status,以前觉得好像很难的东西其实很简单. 第一步, 去http://httpd.apa ...

  4. 【转】VS 代码行数统计

    [转自]http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2854572.html VS用正则表达式统计代码行数 利用VS2010的查找功能和正则 ...

  5. Android学习笔记(七)两个Fragment简单跳转示例

    在前两篇博文中分别介绍了Fragment得基础和Fragment的生命周期,然而说了这么多Fragment到底怎么用呢以及我们为什么要使用Fragment?本篇博文将主要探讨这两个问题,首先说下在AP ...

  6. nginx简单双机热备:backup参数的使用

    nginx简单双机热备:backup参数的使用 nginx简单双机热备:backup参数的使用

  7. hdoj 1061 Rightmost Digit【快速幂求模】

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. php异步请求模拟多进程

    在A请求页面发起另一个B页面请求 不需要等待B页面执行结束再返回 直接往下执行A页面的请求 A页面代码 <?php $url = 'http://'.$_SERVER['HTTP_HOST']. ...

  9. UVa11526 H(n)

    http://blog.csdn.net/synapse7/article/details/12873437 #include<cstdio> #include<cstring> ...

  10. oracle正则截取字符串的函数

    现在有这么一个需求, 数据库中的一个手输的'籍贯'字段,要按一定的规范截取显示在报表上,比如,如果'籍贯'的内容是:'山东省潍坊市昌乐县', 那么报表里要显示为:'山东昌乐', 如果'籍贯'是山东省潍 ...