数据处理_数据处理工具 - CSDN
数据处理 订阅
数据(Data)是对事实、概念或指令的一种表达形式,可由人工或自动化装置进行处理。数据经过解释并赋予一定的意义之后,便成为信息。数据处理(data processing)是对数据的采集、存储、检索、加工、变换和传输。数据处理的基本目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据。数据处理是系统工程和自动控制的基本环节。数据处理贯穿于社会生产和社会生活的各个领域。数据处理技术的发展及其应用的广度和深度,极大地影响了人类社会发展的进程。 展开全文
数据(Data)是对事实、概念或指令的一种表达形式,可由人工或自动化装置进行处理。数据经过解释并赋予一定的意义之后,便成为信息。数据处理(data processing)是对数据的采集、存储、检索、加工、变换和传输。数据处理的基本目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据。数据处理是系统工程和自动控制的基本环节。数据处理贯穿于社会生产和社会生活的各个领域。数据处理技术的发展及其应用的广度和深度,极大地影响了人类社会发展的进程。
信息
处理软件
管理数据的文件、数据库系统等
外文名
data processing
领    域
社会生产和社会生活
中文名
数据处理
步    骤
对数据的采集、存储、检索等
目    的
转化为有用信息
数据处理基本信息
处理软件数据处理离不开软件的支持,数据处理软件包括:用以书写处理程序的各种程序设计语言及其编译程序,管理数据的文件系统和数据库系统,以及各种数据处理方法的应用软件包。为了保证数据安全可靠,还有一整套数据安全保密的技术。方式根据处理设备的结构方式、工作方式,以及数据的时间空间分布方式的不同,数据处理有不同的方式。不同的处理方式要求不同的硬件和软件支持。每种处理方式都有自己的特点,应当根据应用问题的实际环境选择合适的处理方式。数据处理主要有四种分类方式①根据处理设备的结构方式区分,有联机处理方式和脱机处理方式。②根据数据处理时间的分配方式区分,有批处理方式、分时处理方式和实时处理方式。③根据数据处理空间的分布方式区分,有集中式处理方式和分布处理方式。④根据计算机中央处理器的工作方式区分,有单道作业处理方式、多道作业处理方式和交互式处理方式。数据处理对数据(包括数值的和非数值的)进行分析和加工的技术过程。包括对各种原始数据的分析、整理、计算、编辑等的加工和处理。比数据分析含义广。随着计算机的日益普及,在计算机应用领域中,数值计算所占比重很小,通过计算机数据处理进行信息管理已成为主要的应用。如测绘制图管理、仓库管理、财会管理、交通运输管理,技术情报管理、办公室自动化等。在地理数据方面既有大量自然环境数据(土地、水、气候、生物等各类资源数据),也有大量社会经济数据(人口、交通、工农业等),常要求进行综合性数据处理。故需建立地理数据库,系统地整理和存储地理数据减少冗余,发展数据处理软件,充分利用数据库技术进行数据管理和处理。
收起全文
精华内容
参与话题
  • 本文比较了用于数据准备的几种方法,它们分别是提取-变换-加载批处理(ETL)、流式获取和数据整理。本文还讨论了数据准备如何与可视化分析相关联,以及不同用户角色(如数据科学家或业务分析人员)应如何共同构建...

    原创 2017-04-27 Kai Wähner
    翻译|谢旭
    审校|张卫滨
    本文比较了用于数据准备的几种方法,它们分别是提取-变换-加载批处理(ETL)、流式获取和数据整理。本文还讨论了数据准备如何与可视化分析相关联,以及不同用户角色(如数据科学家或业务分析人员)应如何共同构建分析模型的最佳实践。
    要点
    ● 在常见的机器学习/深度学习项目里,数据准备占去整个分析管道的60%到80%。
    ● 市场上有各种用于数据清洗和特征工程的编程语言、框架和工具。它们之间的功能有重叠,也各有权衡。
    ● 数据整理是数据预处理的重要扩展。它最适合在可视化分析工具中使用,这能够避免分析流程被打断。
    ● 可视化分析工具与开源数据科学组件之间,如R、Python、KNIME、RapidMiner互为补充。
    ● 避免过多地使用组件能够加速数据科学项目。因此,在数据准备步骤中利用流式获取框架或流式分析产品会是一个不错的选择。
    机器学习和深度学习项目在大多数企业中变得越来越重要。一个完整的项目流程包括数据准备(data preparation)、构建分析模型以及部署至生产环境。该流程是一个洞察-行动-循环(insights-action-loop),此循环能不断地改进分析模型。Forrester把这个完整的流程和其背后的平台称为洞察平台(Insights Platform)。
    当你打算使用机器学习或深度学习技术来构建分析模型时,一个重要的任务是集成并通过各种数据源来准备数据集,这些数据源包括比如文件、数据库、大数据存储、传感器或社交网络等等。此步骤可占整个分析项目的80%。
    本文比较了用于数据准备的几种方法,它们分别是提取-变换-加载(extract-transform-load,ETL)批处理、流式获取(streaming ingestion)和数据整理(data wrangling)。同时借助于先进的分析技术和开源框架(如R、Apache Spark、KNIME、RapidMiner),讨论了各种不同的选择及其折中。本文还讨论了数据准备如何与可视化分析相关联,以及不同用户角色(如数据科学家或业务分析人员)应如何共同构建分析模型的最佳实践。

    数据准备=数据清洗(Data Cleansing)+特征工程(Feature Engineering)

    数据准备是数据科学的核心。它包括数据清洗和特征工程。另外领域知识(domain knowledge)也非常重要,它有助于获得好的结果。数据准备不能完全自动化,至少在初始阶段不能。通常,数据准备占去整个分析管道(流程)的60%到80%。但是,为了使机器学习算法在数据集上获得最优的精确性,数据准备必不可少。
    数据清洗可使数据获得用于分析的正确形状(shape)和质量(quality)。它包括了许多不同的功能,例如:
    ● 基本功能(选择、过滤、去重、…)
    ● 采样(平衡(balanced)、分层(stratified)、…)
    ● 数据分配(创建训练+验证+测试数据集、…)
    ● 变换(归一化、标准化、缩放、pivoting、…)
    ● 分箱(Binning)(基于计数、将缺失值作为其自己的组处理、…)
    ● 数据替换(剪切(cutting)、分割(splitting)、合并、…))
    ● 加权与选择(属性加权、自动优化、…)
    ● 属性生成(ID生成、…)
    ● 数据填补(imputation)(使用统计算法替换缺失的观察值)
    特征工程会为分析选取正确的属性。我们需要借助数据的领域知识来选取或创建属性,这些属性能使机器学习算法正确地工作。特征工程过程包括:
    ● 头脑风暴或特征测试
    ● 特征选择
    ● 验证这些特征如何与模型配合使用
    ● 如果需要,改进特征
    ● 回到头脑风暴/创建更多的特征,直到工作完成
    请注意,特征工程已是建模(构建分析模型)步骤里的一部分,但它也利用数据准备这一功能(例如提取字符串的某些部分)。
    数据清洗和特征工程是数据准备的一部分,也是机器学习和深度学习应用的基础。这二者并不是那么容易,都需要花费功夫。
    数据准备会出现在分析项目的不同阶段:
    ● 数据预处理:从数据源获取数据之后直接处理数据。通常由开发人员或数据科学家实现,它包括初始转换、聚合(aggregation)和数据清洗。此步骤在数据的交互式分析开始之前完成。它只执行一次。
    ● 数据整理:在交互式数据分析和建模期间准备数据。通常由数据科学家或业务分析师完成,以便更改数据集和特征工程的视图。此步骤会迭代更改数据集的形状,直到它能很好地查找洞察或构建良好的分析模型
    不可或缺的数据预处理和数据整理
    让我们看一看典型的用于模型构建的分析流程:
    1. 数据访问
    2. 数据预处理
    3. 探索性数据分析(Exploratory Data Analysis)(EDA)
    4. 模型构建
    5. 模型验证
    6. 模型执行
    7. 部署
    步骤2的重点是在构建分析模型之前进行的数据预处理,而数据整理则用于步骤3和步骤4(在分析数据和构建模型时,数据整理允许交互式调整数据集)。注意,这三个步骤(2、3、4)都可以包括数据清洗和特征工程。
    以下截图是“数据准备”、“数据预处理”和“数据整理”这几个术语的Google搜索趋势。可以看出,数据整理受到了越来越多的关注:
    这里写图片描述
    图1:“数据准备”、“数据预处理”和“数据整理”的Google搜索趋势
    “inline数据整理”(inline data wrangling)是“数据整理”的一种特殊形式。在inline数据整理里,你可以利用可视化分析工具。这些工具不仅能用于可视化和模型构建,而且还能用于直接交互式整理。inline数据整理有巨大的优势,如下图所示:
    这里写图片描述
    图2:解耦数据预处理(decoupled data preprocessing)与inline数据整理的比较
    分析管道中的数据预处理和数据整理步骤通常由不同类型的用户完成。以下是参与分析项目的各种用户角色:
    ● 业务分析师:具有特定领域知识的商业/行业专家
    ● 数据科学家:数学、统计与编程(数据科学/脚本编写)专家;能够编写底层代码或使用更上层的工具
    ● 平民数据科学家(Citizen Data Scientist):类似于数据科学家,但处于更上层;需要使用更上层的工具而非编写代码;取决于工具的易用性,相关工作甚至可以由业务分析师来完成
    ● 开发者:软件开发专家(企业应用程序)
    这些用户必须密切合作,以便在数据科学项目中取得成功(另见“如何避免分析中的反模式:机器学习的三个要点”,这篇文章能帮你更好地了解这些用户角色)。
    虽然本文重点是介绍数据准备,但一图胜千言,并且人类只能解释直观可见的东西而非那些复杂的非结构化数据集,因此了解数据准备与可视化分析的关系也非常重要。有关更多细节,请参阅文章为什么应该使用可视化分析来做出更好的决策。目前主要的可视化分析工具有Qlik、Tableau和TIBCO Spotfire。
    那么可视化分析是如何与数据整理相关联的呢?RITO研究公司的首席分析师说,“让分析师停下他们手里正在进行的工作,而去切换到另一个工具是令人发狂的。这破坏了他们的工作流程。 他们不得不返回重拾思路,重新开始。这严重影响了他们的生产力和创造力”。
    Kaggle的Titanic数据集
    以下章节给出了数据准备的几种备选方案。我们将用非常著名的Titanic数据集(来自于Kaggle)来演示一些实用的例子。Titanic数据集被分为训练集和测试集,它将用于构建分析模型,这些模型用来预测哪个乘客可能会存活或死亡:
    这里写图片描述
    图3:Kaggle Titanic数据集的元数据
    这里写图片描述
    图4:Kaggle Titanic数据集的数据行示例
    原始数据集不能直接用于构建分析模型。它含有重复、缺失值以及包含各种不同信息的单元格。因此,在应用机器学习算法时,需要先将原始数据集处理好,以便获得最佳结果。以下是一些数据清洗和特征工程的例子:
    ● 通过特征提取(feature extraction)创建新列:获取每位乘客的姓名前缀,从而推断出其性别,例如,先生、夫人、小姐、大师
    ● 通过聚合创建新列,以查看每位乘客的旅行团中有多少人:“家庭大小= 1 + SibSp + Parch”
    ● 通过提取第一个字符来创建新列,以便排序和分析舱室:提取“舱室”列的第一个字符
    ● 删除数据集中的重复项,例如,乘客既在训练集中又在测试集中
    ● 通过填补将数据添加到空单元格,以便能够处理数据缺失的行,例如,年龄:将“不可用”替换为所有乘客的平均年龄或将其离散到对应的箱(bin)中;舱室:用“U”(未知)替换空值;或应用高级填补方法,例如,通过链式方程的多重填补(multiple imputation by chained equations)(MICE)
    ● 利用数据科学功能,例如,缩放、归一化、主成分分析(PCA)或Box-Cox,使所有数据处于“相似形状”,以便能够进行合理的分析
    以下章节阐述了各种编程语言、框架和数据准备工具。请注意,没有哪种方案适用于所有问题。此外,这些方案之间也有很多重叠(overlapping)。因此,根据用户角色和用例,许多问题可以使用不同的方案来解决。
    数据科学的数据预处理
    一些编程语言是专为数据科学项目而设计,或者是对它有非常好的支持,特别是R和Python。它们包含了机器学习算法的各种实现,诸如过滤或提取的预处理功能,以及诸如缩放、归一化或混洗(shuffle)的数据科学功能。数据科学家需要编写相对底层的代码来进行探索性数据分析与准备。与使用Java或C#的传统编程相反,使用R或Python进行数据预处理时,你不需要编写太多的代码;它更多地是让你了解统计概念以及算法的数据和经验,这些数据和经验可用于数据预处理和模型构建。
    这些编程语言是为数据科学家准备数据和构建分析模型而建立,它们并不适用于企业部署(将分析模型部署到具有高规模和高可靠性的新数据中)。因此,市场上提供了商业的enterprise runtime帮助你实现企业部署。通常,它们支持相同的源代码,因此你不需要为企业部署重写任何东西。对于R,你可以使用开源的Microsoft R Open(之前的Revolution R),或TIBCO Enterprise Runtime for R。后者具有不受GPL开源许可证限制的优势,因此你可以使用在任何嵌入式或外部环境里。
    下面的代码摘录于一个不错的R教程,它演示了如何使用基本的R语言来预处理和分析Titanic数据集:
    使用基本的R语言进行数据预处理: 存活是“是/否”
    =>类型转换:没有numeric值和对应的数据处理/分析
    data.combinedSurvived<as.factor(data.combinedSurvived)
    从全称里解析出姓和头衔
    data.combined[1:25, “Name”]
    name.splits <- str_split(data.combinedName,,)name.splits[1]last.names<sapply(name.splits,[,1)last.names[1:10]/+/+1temp.SibSp<c(trainSibSp, testSibSp)temp.Parch<c(trainParch, testParch)data.combinedFamilySize <- as.factor(temp.SibSp + temp.Parch + 1)
    除了对预处理的基本支持外,这些编程语言还提供了许多额外的数据科学软件包。例如,许多数据科学家利用R中非常强大的caret包来简化数据准备和减少代码量。该软件包简化了复杂回归和分类问题的模型准备与训练过程。它为数百个现有的R模型实现(在底层使用了各种各样的API)提供了一个通用接口。以下代码段使用了caret的通用API对Titanic数据集进行预处理:
    使用R caret包进行数据预处理:
    利用caret的preProcess函数对数据做归一化
    preproc.data.combined <- data.combined[, c(“ticket.party.size”, “avg.fare”)]
    preProc <- preProcess(preproc.data.combined, method = c(“center”, “scale”))
    你看到的是相对值而非绝对值(即彼此之间的关系):
    postproc.data.combined <- predict(preProc, preproc.data.combined)
    另一个用于数据预处理的R包是dplyr包。它不像caret包那样强大,并且只专注于操作、清洗和汇总(summarize)非结构化数据。 Dplyr旨在为数据操作的每个基本动作都提供一个函数:
    filter()(和slice())
    arrange()
    select()(和rename())
    distinct()
    mutate()(和transmute())
    summarise()
    sample_n (和sample_frac())
    因此,学习和理解许多数据操作任务变得容易。对于data.table包也是这样。

    数据科学家或开发者的大数据集预处理

    正如你所见的,在R语言里你有许多方法来预处理数据集。
    诸如R或Python这样的编程语言可用于处理小数据集。但是,它们并不是为处理真正的大数据集而创建;与此同时,我们经常需要分析几个GB、TB甚至PB级别的数据。类似于Apache Hadoop或Apache Spark的大数据框架则是为处于边缘的(即数据所在位置)弹性扩展(elastic scalability)和数据预处理而创建。
    这些大数据框架侧重于“底层”编码,并且配置起来比R或Python环境要复杂得多。商业软件,如Hortonworks、Cloudera、MapR或Databricks可以帮助解决此问题。通常,数据科学家与开发人员相互合作来完成大数据项目。后者负责集群配置、部署和监控,而数据科学家则利用R或Python API编写用于数据预处理和构建分析模型的代码。
    源代码通常看起来与仅使用R或Python的代码非常相似,但数据预处理是在整个集群上并行完成的。下面的示例演示了如何使用Spark的Scala API对Titanic数据集进行预处理和特征工程:
    使用Scala和Apache Spark API进行数据预处理:
    特征工程:创建家庭大小特征
    (兄弟姐妹/配偶+父母/孩子+1)
    val familySize: ((Int, Int) => Int) = (sibSp: Int, parCh: Int) => sibSp + parCh + 1
    val familySizeUDF = udf(familySize)
    val dfWithFamilySize = df.withColumn(“FamilySize”, familySizeUDF(col(“SibSp”), col(“Parch”)))
    // 为年龄列填充空值
    val avgAge = trainDF.select(“Age”).union(testDF.select(“Age”))
    .agg(avg(“Age”))
    .collect() match {
    case Array(Row(avg: Double)) => avg
    case _ => 0
    }
    当然,你可以使用Spark的Java或Python API做同样的事情。

    平民数据科学家的数据预处理

    通常,你想要敏捷并且快速得到结果。这常常需要在准备和分析数据集时大量地试错。你可以利用现存的各种快捷易用的数据科学工具。这些工具提供了:
    ● 开发环境和运行/执行服务器
    ● 使用拖放与代码生成的可视化“编码”
    ● 集成各种数据科学框架,如R、Python或更强大的(诸如Apache Hadoop、Apache Spark或底层的H2O.ai)大数据框架
    数据科学家可以使用这些工具来加速数据预处理和模型建立。此外,该类工具还帮助解决了数据预处理和机器学习算法的实现,因此没有太多项目经验的平民数据科学家也可以使用它们。一些工具甚至能够提出建议,这些建议有助于用户预处理、显示和分析数据集。这些工具在底层人工智能的驱动下变得越来越智能。
    下面的例子展示了如何使用两个开源数据科学工具KNIME和RapidMiner来预处理Titanic数据集:
    这里写图片描述
    图:使用KNIME来预处理Titanic数据集
    这里写图片描述
    图:使用RapidMiner来预处理Titanic数据集
    你可以使用可视化IDE来配置预处理,而非如前所述的用R或Scala编写源代码。对大多数用户来说,这使得数据准备和分析变得更容易,并且数据的维护和移交也变得更容易。

    业务分析师或平民数据科学家的数据整理

    数据整理(有时也称为data munging)是一种使用图形工具的数据准备方法,该方法简单直观。这些工具侧重于易用性和敏捷的数据准备。因此,它不一定由开发人员或数据科学家完成,而是所有的用户都可以(包括业务分析师或平民数据科学家)。DataWrangler和Trifacta Wrangler是数据整理的两个示例。
    这里写图片描述
    图:用于数据整理的Trifacta
    请注意,这些工具没有数据预处理框架那么强大,因此它们经常用于数据准备的最后一公里。它们不会替换其它的集成选项,如ETL(提取-变换-加载)工具,或使用R、Python、KNIME、RapidMiner等进行的数据预处理。
    如引言中所讨论,因为数据整理与实际数据分析相互解耦,所以数据整理自身的工具可能会存在一些不足之处。可视化分析工具中的数据整理允许在数据的探索性分析期间进行inline数据整理。单个的用户使用单一的工具就能够完成它。例如,请参阅TIBCO Spotfire示例,它结合了可视化分析与inline数据整理(以及其它的数据科学功能来构建分析模型):
    这里写图片描述
    图:可视化分析工具TIBCO Spotfire中的inline数据整理
    数据整理工具和带有inline数据整理的可视化分析工具可以被每种用户角色使用:业务分析师、(平民)数据科学家或开发人员,这些工具能够加速数据准备和数据分析。
    本文重点介绍了用于建立机器学习模型的数据准备。你可以使用编程语言(如R或Python)、数据科学工具(如KNIME或RapidMiner)、数据整理(使用DataWrangler或Trificata)或inline数据整理(通过TIBCO Spotfire)。通常,在开始这一切之前,你需要能够访问你拥有的所有数据,这些数据存储于各种或多或少整理过的数据源中(如关系数据库、数据仓库、大数据集群)。因此,在以下两部分,我们将简要介绍用于数据获取(data ingestion)的ETL和流式分析工具,通常数据获取还包括数据准备的某些部分,特别是数据聚合和数据清洗。

    开发者的ETL(提取-变换-加载)和DQ(数据质量,Data Quality)

    ETL工具是为开发者集成各种数据源而设计的,它包括了许多遗留和专有(proprietary)接口(如Mainframe或EDIFACT接口),这些接口具有十分复杂的数据结构。它还包括了数据清洗(在上下文中通常被称为“数据质量”工具),并将重点放在易用性和使用可视化编码的企业部署上(类似于如KNIME或RapidMiner的数据科学工具,但是专注于ETL和数据质量)。它们还支持大数据框架,如Apache Hadoop和Apache Spark。此外,它们还为质量改进提供了开箱即用(out-of-the-box )的支持,例如,地址验证。ETL和DQ通常在长时间运行的批处理进程中实现,因此如果你需要使用实时数据构建模型,那么这有时可能会产生负面影响。
    ETL和DQ工具的例子是一些开源工具,如Pentaho或Talend,或专有供应商Informatica。市场正在向更简单易用的Web用户界面转移,这些简单易用的界面能够让其他用户角色也执行一些基本的任务。

    开发者的数据获取与流式分析

    数据获取与流式分析工具可用于在流(stream)中添加和预处理数据。这些框架允许批量地或实时地预处理数据。下图展示了一个典型的流式分析流程,它包括数据获取、预处理、分析、处理和输出:
    这里写图片描述
    图:流式分析流程的步骤
    目前市场上有各种各样的框架和工具。它们都以这种或那种方式支持类似Hadoop或Spark的大数据框架。举几个例子:
    ● 数据获取开源框架(仅关注数据获取和预处理步骤):Apache NiFi、StreamSets、Cask Hydrator
    ● 流式处理开源框架(完整的流式分析流程):Apache Storm、Apache Flink、Apache Apex
    ● 流式处理商业软件(完整的流式分析流程):Software AG Apama、IBM Streams、TIBCO StreamBase
    使用这些工具(包括ETL)的巨大优势是,你可以使用同一套工具或框架(对历史数据)进行数据预处理,以及(对新数据)进行实时处理(以便在变化的数据里使用分析模型)。这将会是一个不错的选择,用户不仅可以保持小而精的工具集,而且还能通过一套工具同时获得ETL/获取和实时处理。下图是一个使用TIBCO StreamBase对Titanic数据集进行预处理的例子:
    这里写图片描述
    图:Titanic数据集的流式预处理
    对于数据获取和ETL工具,流式分析的市场正在转向更简单的Web用户界面,这些简单的用户界面让其他用户角色也能执行一些基本的任务。但这不会取代现有的工具在更高级别用例里的使用,而是为分析师或数据科学家提供了新的选择。在没有开发人员的帮助下,他们能够更容易和更直接地部署一些规则、关联或分析模型。

    数据准备是机器学习项目成功的关键

    使用机器学习或深度学习技术构建分析模型并不容易。数据准备占去整个分析管道的60%到80%。市场上有各种用于数据清洗和特征工程的编程语言、框架和工具。它们之间的功能有重叠,也各有权衡。
    数据整理是数据预处理的重要扩展(add-on)。它最适合在可视化分析工具中使用,这能够避免分析流程被打断。可视化分析工具与开源数据科学组件(component)之间,如R、Python、KNIME、RapidMiner互为补充。
    避免过多地使用组件能够加速数据科学项目。因此,在数据准备步骤中利用流式获取框架或流式分析产品会是一个不错的选择。我们只需要编写一次预处理的步骤,然后将其用于历史数据的批处理中,从而进行分析模型的构建,同时,还可以将其用于实时处理,这样就能将我们构建的分析模型用到新的事件中。
    作者介绍
    Kai Wähner,TIBCO软件的技术传播者和社区管理者,TIBCO软件是市场上领先的集成和分析中间件提供商。他主要的专业领域包括大数据、高级分析、机器学习、集成、SOA、微服务、BPM、云、物联网和编程语言(如Java EE、Groovy或Golang)。他经常在其博客网站上撰写关于新技术的博客、文章和会议演讲。

    展开全文
  • 数据处理基本过程

    万次阅读 多人点赞 2018-05-06 13:50:47
    把一些基本知识,总体架构记录一下,感觉坑很多,要学习的东西也很多,先简单了解一下基本知识什么是大数据:大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理数据集合,是需要新...

    刚接触大数据一个月,把一些基本知识,总体架构记录一下,感觉坑很多,要学习的东西也很多,先简单了解一下基本知识

    什么是大数据:大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),百度随便找找都有。 

    大数据处理流程:


        1.是数据采集,搭建数据仓库,数据采集就是把数据通过前端埋点,接口日志调用流数据,数据库抓取,客户自己上传数据,把这些信息基础数据把各种维度保存起来,感觉有些数据没用(刚开始做只想着功能,有些数据没采集,  后来被老大训了一顿)。

        2.数据清洗/预处理:就是把收到数据简单处理,比如把ip转换成地址,过滤掉脏数据等。

        3.有了数据之后就可以对数据进行加工处理,数据处理的方式很多,总体分为离线处理,实时处理,离线处理就是每天定时处理,常用的有阿里的maxComputer,hive,MapReduce,离线处理主要用storm,spark,hadoop,通过一些数据处理框架,可以吧数据计算成各种KPI,在这里需要注意一下,不要只想着功能,主要是把各种数据维度建起来,基本数据做全,还要可复用,后期就可以把各种kpi随意组合展示出来。

        4.数据展现,数据做出来没用,要可视化,做到MVP,就是快速做出来一个效果,不合适及时调整,这点有点类似于Scrum敏捷开发,数据展示的可以用datav,神策等,前端好的可以忽略,自己来画页面。

    数据采集:

        1.批数据采集,就是每天定时去数据库抓取数据快照,我们用的maxComputer,可以根据需求,设置每天去数据库备份一次快照,如何备份,如何设置数据源,如何设置出错,在maxComputer都有文档介绍,使用maxComputer需要注册阿里云服务,https://help.aliyun.com/product/27797.html,链接是maxComputer文档。

        2.实时接口调用数据采集,可以用logHub,dataHub,流数据处理技术,DataHub具有高可用,低延迟,高可扩展,高吞吐的特点。

    高吞吐:最高支持单主题(Topic)每日T级别的数据量写入,每个分片(Shard)支持最高每日8000万Record级别的写入量。

    实时性:通过DataHub ,您可以实时的收集各种方式生成的数据并进行实时的处理,

    设计思路:首先写一个sdk把公司所有后台服务调用接口调用情况记录下来,开辟线程池,把记录下来的数据不停的往dataHub,logHub存储,前提是设置好接收数据的dataHub表结构,https://help.aliyun.com/document_detail/47448.html?spm=a2c4g.11186623.3.2.nuizA4,这是dataHub文档,下图是数据监控,会看到数据会不停流入

    3.前台数据埋点,这些就要根据业务需求来设置了,也是通过流数据传输到数据仓库,如上述第二步。

    数据处理:

    数据采集完成就可以对数据进行加工处理,可分为离线批处理,实时处理。

        1.离线批处理maxComputer,这是阿里提供的一项大数据处理服务,是一种快速,完全托管的TB/PB级数据仓库解决方案,编写数据处理脚本,设置任务执行时间,任务执行条件,就可以按照你的要求,每天产生你需要的数据,https://help.aliyun.com/document_detail/30267.html?spm=a2c4g.11174283.3.2.0aBtdh,链接dataworks为文档。下图是检测任务实例运行状态


        2.实时处理:采用storm/spark,目前接触的只有storm,strom基本概念网上一大把,在这里讲一下大概处理过程,首先设置要读取得数据源,只要启动storm就会不停息的读取数据源。Spout,用来读取数据。Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。stream,用来传输流,Tuple的集合。Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。可以在里边写业务逻辑,storm不会保存结果,需要自己写代码保存,把这些合并起来就是一个拓扑,总体来说就是把拓扑提交到服务器启动后,他会不停读取数据源,然后通过stream把数据流动,通过自己写的Bolt代码进行数据处理,然后保存到任意地方,关于如何安装部署storm,如何设置数据源,网上都有教程,这里不多说。


    数据展现:做了上述那么多,终于可以直观的展示了,于前端技术不行,借用了第三方展示平台datav,datav支持两种数据读取模式,第一种,直接读取数据库,把你计算好的数据,通过sql查出来,需要配置数据源,读取数据之后按照给定的格式,进行格式化就可以展现出来,https://help.aliyun.com/document_detail/30360.html,链接为datav文档。可以设置图标的样式,也可以设置参数,


    第二种采用接口的形式,可以直接采用api,在数据区域配置为api,填写接口地址,需要的参数即可,这里就不多说了。

    这次先记录这么多,以后再补充,内容为原创,若是有不对的地方还请评论纠正。

    展开全文
  • 数据预处理_数据清理

    万次阅读 2018-01-11 15:49:21
    1、概述 实际的数据库极易受噪声、缺失值和不一致数据...- - 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。 - - 数据归约:可以通过如聚集、删除冗余特征或聚类来降低数据的规模。 - - 数

    1、概述

    实际的数据库极易受噪声、缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源。低质量的数据将会导致低质量的挖掘结果。有大量的数据预处理技术:
    - - 数据清理:可以用来清楚数据中的噪声,纠正不一致。
    - - 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。
    - - 数据归约:可以通过如聚集、删除冗余特征或聚类来降低数据的规模。
    - - 数据变换:(例如,规范化)可以用来把数据压缩到较小的区间,如0.0到1.0。

    这可以提高设计距离度量的挖掘算法的准确率和效率。这些技术不是排斥的,可以一起使用。

    1.1、数据质量 数据如果能满足其应用的要求,那么它是高质量的。数据质量涉及许多因素,包括:准确率、完整性、一致性、时效性、可信性和可解释性。

    2、数据清理

    现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失的值、光滑噪声并识别离群点、纠正数据中的不一致。

    2.1、缺失值

    如何处理缺失的属性?我们来看看下面的方法:
    1- - - 忽略元组:当缺少类标号时通常这样做(假设挖掘任务设计分类)。除非元组有多个属性缺少值,否则更改方法不是很有效。当每个属性缺失值的百分比变化很大时,他的性能特别差。采用忽略元组,你不能使用该元组的剩余属性值。这些数据可能对手头的任务是有用的。
    2- - - 人工填写缺失值:一般来说,该方法很费事,并且当数据集很大、缺失很多值时该方法可能行不通。
    3- - - 使用一个全局填充缺失值:将缺失的属性值用同一个常量(如:“Unknow”或-∞)替换。如果确实的值都如“Unknow”替换,则挖掘程序可能误认为他们形成了一个有趣的概念,因为他们都具有相同的值 – “Unknow”。因此,尽管该方法简单,但是并不十分可靠。
    4- - - 使用属性的中心度量(如均值或中位数)填充缺失值:对于正常的(对称的)数据分布而言,可以使用均值,而倾斜数据分布应该使用中位数。
    5- - - 使用与给定元组属同一类的所有样本的属性均值或中位数:
    6- - - 使用最可靠的值填充缺失值:可以用回归、贝叶斯形式化方法的基于推理的工具或决策树归纳确定。

    方法3~方法6使数据有偏,可能填入的数据不准确。然而,方法6是最流行的策略。与其他方法(可能方法2除外)相比,它使用已有数据的大部分信息来预测缺失值。

    需要注意的是,在某些情况下,缺失值并不意味着数据有错误。理想情况下,每个属性都应当有一个或多个空值条件的规则。这些规则可以说明是否允许空值,并且/或者说明这样的空值应该如何处理或转换。如果在业务处理的稍后步骤提供值,字段也可能故意留下空白。因此,尽管在得到数据后,我们可以尽我们所能来清理数据,但好的数据库和数据输入设计将有助于在第一现场把缺失值或者错误的数量降至最低。

    2.2、噪声数据
    噪声(noise)是被测量的变量的随机误差或方差。我们可以使用基本的数据统计描述技术(例如,盒图或者散点图)和数据可视化方法来识别可能代表噪声的离群点。

    1- - - 分箱(bining):分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序的数据值。这些有序的值被分布到一些“捅”或箱中。由于分箱方法考察近邻的值,因此它进行局部的光滑。
    这里写图片描述

    如上图所示,数据首先排序并被划分到大小为3的等频的箱中。对于用箱均值光滑,箱中每一个值都被替换为箱中的均值。类似的,可以使用用箱中位数光滑或者用箱边界光滑等等。

    2- - - 回归(regression):可以用一个函数拟合数据来光滑数据。这种技术称之为回归。线性回归涉及找出拟合两个属性(或变量)的“最佳”直线,使得一个属性可以用来预测另一个。多元线性回归是线性回归的扩充,其中涉及的属性多余两个,并且数据拟合到一个多维曲面。

    3- - - 离群点分析(outlier analysis):可以通过如聚类来检测离群点。聚类将类似的值组织成群或“簇”。直观地,落在簇集合之外的值被视为离群点。
    这里写图片描述

    2.3、数据清理作为一个过程

    数据清理过程第一步是偏差检测(discrepancy detection)。导致偏差的因素可能有多种,包括具有很多可选字段的设计糟糕的输入表单、人为的输入错误、有意的错误(例如,不愿意泄露个人隐私),以及数据退化(例如,过时的地址)。偏差也可能源于不一致的数据表示和编码的不一致使用。记录数据的设备的错误和系统错误是另一种偏差源。当数据(不适当地)用于不同于当初的目的时,也可能出现错误。数据集成也可能导致不一致(例如,当给定的属性在不同的数据库中具有不同的名称时)。

    那么,如何进行偏差检测呢?首先,我们明确一个概念,”关于数据的数据“称作元数据。例如,每个属性的数据类型是定义域是什么?每个属性可接受的值是什么?对于把握数据趋势和识别异常,数据的基本统计描述是有用的。例如,找出均值、中位数和众数。数据是对称的还是倾斜的?值域是什么?所有的值都在期望的区间内吗?每个属性的标准差是多少?远离给定属性均值超过两个标准差的值可能标记为可能的离群点。属性之间存在已知的依赖吗?在这一步,可以编写程序或使用稍后我们讨论到的工具。由此,你可能发现噪声、离群点和需要考察的不寻常的值。

    1- - - 编码格式:警惕编码使用的不一致和数据表示的不一致问题(例如,日期“2015/12/08”和”08/12/2015”);
    2- - - 字段过载:开发者将新属性的定义挤进已经定义的属性的未使用(位)部分(例如,使用一个属性未使用的位,该属性取值已经使用了32位中的31位)。

    1- - - :唯一性规则:给定属性的每个值都必须不同于该属性的其他值。
    2- - - :连续性规则:属性的最低值和最高值之间没有缺失的值,并且所有的值还必须是唯一的(例如,检验数).
    3- - - :空值规则:说明空白、问号、特殊符号或指示空值条件的其他串的使用(例如,一个给定属性的值何处不能用),以及如何处理这样的值。

    1- - - 数据清洗工具(data scrubbing tools):使用简单的领域知识(邮政地址知识和拼写检查),检查并纠正数据中的错误。在清理多个数据源的数据时,这些工具依赖分析和模糊匹配技术。
    2- - - 数据审计工具(data auditing tools):通过分析数据发现规则和联系,并检测违反这些条件的数据来发现偏差。
    3- - - 数据迁移工具(data migration tools):允许说明简单的变换,如将串”gender”用“sex”替换。
    4- - -ETL(extraction/transformation/loading,提取/变换/装入)工具:允许用户通过图形用户界面说明变换。
    通常,这些工具只支持有限的变换,因此我们可能需要为数据清理过程的这一步编写定制的程序。

    偏差检测和数据变换(纠正偏差) 迭代执行这两步过程。通常,需要多次迭代才能使用户满意。

    新的数据清理方法强调加强交互性。例如,Potter’s Wheel是一种公开的数据清理工具,它集成了偏差检测和数据变换。



    预处理阶段
    预处理阶段主要做两件事情:
    一是将数据导入处理工具。通常来说,建议使用数据库,单机跑数搭建MySQL环境即可。如果数据量大(千万级以上),可以使用文本文件存储+Python操作的方式。
    二是看数据。这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。
    第一步:缺失值清洗
    缺失值是最常见的数据问题,处理缺失值也有很多方法,我建议按照以下四个步骤进行:
    1、确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略,可用下图表示:
    2、去除不需要的字段:这一步很简单,直接删掉即可……但强烈建议清洗每做一步都备份一下,或者在小规模数据上试验成功再处理全量数据,不然删错了会追悔莫及(多说一句,写SQL的时候delete一定要配where!)。
    3、填充缺失内容:某些缺失值可以进行填充,方法有以下三种:
    • 以业务知识或经验推测填充缺失值
    • 以同一指标的计算结果(均值、中位数、众数等)填充缺失值
    • 以不同指标的计算结果填充缺失值

    前两种方法比较好理解。关于第三种方法,举个最简单的例子:年龄字段缺失,但是有屏蔽后六位的身份证号,so……
    4、重新取数:如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。

    以上,简单的梳理了缺失值清洗的步骤,但其中有一些内容远比我说的复杂,比如填充缺失值。很多讲统计方法或统计工具的书籍会提到相关方法,有兴趣的各位可以自行深入了解。
    第二步:格式内容清洗
    如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题,简单来说,格式内容问题有以下几类:
    1、时间、日期、数值、全半角等显示格式不一致
    这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。
    2、内容中有不该存在的字符
    某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。
    3、内容与该字段应有内容不符
    姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。
    格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了,so……)。因此,请各位务必注意这部分清洗工作,尤其是在处理的数据是人工收集而来,或者你确定产品前端校验设计不太好的时候……
    第三步:逻辑错误清洗
    这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。主要包含以下几个步骤:
    1、去重
    有的分析师喜欢把去重放在第一步,但我强烈建议把去重放在格式内容清洗之后,原因已经说过了(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人,去重失败)。而且,并不是所有的重复都能这么简单的去掉……
    我曾经做过电话销售相关的数据分析,发现销售们为了抢单简直无所不用其极……举例,一家公司叫做“ABC管家有限公司“,在销售A手里,然后销售B为了抢这个客户,在系统里录入一个”ABC官家有限公司“。你看,不仔细看你都看不出两者的区别,而且就算看出来了,你能保证没有”ABC官家有限公司“这种东西的存在么……这种时候,要么去抱RD大腿要求人家给你写模糊匹配算法,要么肉眼看吧。
    上边这个还不是最狠的,请看下图:
    你用的系统里很有可能两条路都叫八里庄路,敢直接去重不?(附送去重小tips:两个八里庄路的门牌号范围不一样)
    当然,如果数据不是人工录入的,那么简单去重即可。
    2、去除不合理值
    一句话就能说清楚:有人填表时候瞎填,年龄200岁,年收入100000万(估计是没看见”万“字),这种的就要么删掉,要么按缺失值处理。这种值如何发现?提示:可用但不限于箱形图(Box-plot).
    3、修正矛盾内容
    有些字段是可以互相验证的,举例:身份证号是1101031980XXXXXXXX,然后年龄填18岁,我们虽然理解人家永远18岁的想法,但得知真实年龄可以给用户提供更好的服务啊(又瞎扯……)。在这种时候,需要根据字段的数据来源,来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。
    逻辑错误除了以上列举的情况,还有很多未列举的情况,在实际操作中要酌情处理。另外,这一步骤在之后的数据分析建模过程中有可能重复,因为即使问题很简单,也并非所有问题都能够一次找出,我们能做的是使用工具和方法,尽量减少问题出现的可能性,使分析过程更为高效。

    第四步:非需求数据清洗
    这一步说起来非常简单:把不要的字段删了。
    但实际操作起来,有很多问题,例如:
    • 把看上去不需要但实际上对业务很重要的字段删了;
    • 某个字段觉得有用,但又没想好怎么用,不知道是否该删;
    • 一时看走眼,删错字段了。

    前两种情况我给的建议是:如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删。第三种情况,请勤备份数据……
    第五步:关联性验证
    如果你的数据有多个来源,那么有必要进行关联性验证。例如,你有汽车的线下购买信息,也有电话客服问卷信息,两者通过姓名和手机号关联,那么要看一下,同一个人线下登记的车辆信息和线上问卷问出来的车辆信息是不是同一辆,如果不是(别笑,业务流程设计不好是有可能出现这种问题的!),那么需要调整或去除数据。
    严格意义上来说,这已经脱离数据清洗的范畴了,而且关联数据变动在数据库模型中就应该涉及。但我还是希望提醒大家,多个来源的数据整合是非常复杂的工作,一定要注意数据之间的关联性,尽量在分析过程中不要出现数据之间互相矛盾,而你却毫无察觉的情况。
    以上,就是我对数据清洗过程的一个简单梳理。由于能力所限,难免挂一漏万,请各位不吝赐教,感谢。

    二、数据分析之前的各项准备工作

    数据分析团队各成员确定之后,将进行下一项工作,就是找到有价值的数据进行分析了。数据是分析的基础,因此数据的质量、数据的相关度、数据的维度等会影响数据分析的结果影,其中GIGO(垃圾进垃圾出)对于数据分析结果影响最大。

    1数据源选择

    数据分析团队面对大量的数据源,各个数据源之间交叉联系,各个数据域之间具有逻辑关系,各个产品统计口径不同,不同的时间段数值不同等。这一系列问题多会影响数据分析结果,因此确定数据源选择和数据整理至关重要。

    DBA可以基于数据分析需要,找到相关数据,建立一张数据宽表,将数据仓库的数据引入到这张宽表当中,基于一定的逻辑关系进行汇总计算。这张宽表作为数据分析的基础,然后再依据数据分析需要衍生出一些不同的表单,为数据分析提供干净全面的数据源。宽表一方面是用于集中相关分析数据,一方面是提高效率,不需要每次分析时都查询其他的数据表,影响数据仓库效率。

    2数据抽样选择

    简单的数据分析可以调用全体数据进行分析,数据抽样主要用于建模分析,抽样需考虑样本具有代表性,覆盖各种客户类型,抽样的时间也很重要,越近的时间窗口越有利于分析和预测。在进行分层抽样时,需要保证分成出来的样本比例同原始数据基本一致。

    3数据类型选择

    数据类型分为连续型和离散型,建模分析时需要确定数据类型。进行业务收入趋势分析、销售额预测分析、RFM分析时,一般采用连续型变量。信用评级、分类预测时一般采用离散变量。

    4缺失值处理

    数据分析过程中会面对很多缺失值,其产生原因不同,有的是由于隐私的原因,故意隐去。有的是变量本身就没有数值,有的是数据合并时不当操作产生的数据缺失。

    缺失值处理可以采用替代法(估值法),利用已知经验值代替缺失值,维持缺失值不变和删除缺失值等方法。具体方法将参考变量和自变量的关系以及样本量的多少来决定。

    5异常值检测和处理

    异常值对于某些数据分析结果影响很大,例如聚类分析、线性回归(逻辑回归)。但是对决策树、神经网络、SVM支持向量机影响较小。

    一般异常值是指明显偏离观测值的平均值,例如年龄为200岁,平均收入为10万元时,有个异常值为300万元。第一个异常值为无效异常值,需要删掉,但是第二个异常值可能属于有效异常值,可以根据经验来决定是否保留或删掉。

    6数据标准化

    数据标准化的目的是将不同性质、不同量级的数据进行指数化处理,调整到可以类比的范围。例如在建立逻辑回归模型时,性别的取值是0或以,但是收入取值可能就是0-100万,跨度较大,需要进行标准化。

    一般可以采用最佳/最大标准化(Min-Max标准化法)将数值定在0和1之间,便于计算。Z分数法和小数定标标准化法也可以采用。

    7数据粗分类(Categorization)处理

    归类和分类的目的是减少样本的变量,常有的方法由等间距分类,等频数分类。可以依据经验将自变量分成几类,分类的方法可以不同,建议采用卡方检验来决定采用哪种分类方法。连续型变量可以用WOE变化方法来简化模型,但降低了模型的可解释性。

    8变量选择

    数据分析过程中会面对成百上千的变量,一般情况下只有少数变量同目标变量有关,有助于提高预测精度。通常建模分析时,有意义的变量不会超过10-15个,称他们为强相关变量(聪明变量)。可以利用变量过滤器的方法来选择变量。常见的变量过滤器应用场景如下。

     


    三、数据分析过程

    1向业务部门进行调研,了解业务需要解决的问题,将业务问题映射成数据分析工作和任务

    2调研企业内外部数据,找到分析需要的数据,将数据汇聚到一个特定的区域,数据集市或数据仓库,探索性分析

    3数据清洗,包括检查数据的一致性,处理异常值和缺失值,删除重复数据等

    4数据转换,例如数据分箱(Binning),将字符型变量转化为数字型变量,按照数据所需维度进行汇总

    5建立模型,按照业务需求建立不同模型(例如客户流失预警、欺诈检测、购物篮分析、营销响应等)

    6模型结果解释和评估,业务专家进行业务解释和结果评价

    四、大数据分析场景和模型应用

    数据分析建模需要先明确业务需求,然后选择是描述型分析还是预测型分析。如果分析的目的是描述客户行为模式,就采用描述型数据分析,描述型分析就考虑关联规则、序列规则、聚类等模型。

    预测型数据分析就是量化未来一段时间内,某个事件的发生概率。有两大预测分析模型,分类预测和回归预测。常见的分类预测模型中,目标变量通常都是二元分类变量例如欺诈与否,流失与否,信用好坏等。回归预测模型中,目标变量通常都是连续型变量,常见的有股票价格预测、违约损失率预测(LGD)等。

    生存分析聚焦于将事件的结果和出现这一结果所经历的时间进行分析,源于医疗领域,研究患者治疗后的存活时间。生存分析可也可以用于预测客户流失时间,客户下次购买时间,客户违约时间,客户提前偿还贷款时间,客户下次访问网站时间等。

    常见的数据分析应用场景如下

    1市场营销

    营销响应分析建模(逻辑回归,决策树)

    净提升度分析建模(关联规则)

    客户保有分析建模(卡普兰梅尔分析,神经网络)

    购物蓝分析(关联分析Apriori)

    自动推荐系统(协同过滤推荐,基于内容推荐,基于人口统计推荐,基于知识推荐,组合推荐,关联规则)

    客户细分(聚类)

    流失预测(逻辑回归)

    2风险管理

    客户信用风险评分(SVM,决策树,神经网络)

    市场风险评分建模(逻辑回归和决策树)

    运营风险评分建模(SVM)

    欺诈检测(决策树,聚类,社交网络)

    五、数据模型评价的方法

    1AUC值判别法
     


    AUC小于0.7识别能力很弱

    AUC在0.7-0.8之间识别能力可接受

    AUC在0.8-0.9之间识别能力卓越

    AUC大于0.9模型出现意外

    2KS判别法

    KS值大于0.2就表示具有较好的可预测性

    本文大部分内容来源于BartBaesens所著《AnalysisinaBigDataWorld:TheEssentialGuidetoDataScienceanditsApplications》。中文书名为《大数据分析数据科学应用场景与实践精髓》柯晓燕张纪元翻译

    展开全文
  • 使用Python数据分析流行的库Numpy,Pandas,Matplotlib, Scikit-learn结合真实数据集展开可视化特征分析与机器学习建模和评估。每次课程涉及一个完整的案例,基于案例讲解python库的使用以及如何建立机器学习模型,对...
  • 数据预处理(方法总结)

    万次阅读 2018-11-27 14:34:44
    数据预处理(方法总结) ... 一、概述 在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。...数据预处理的常用流程为:去除唯一属性、处理缺失值、属性编码、数据标准化正...

    数据预处理(方法总结)

    转自-https://www.cnblogs.com/sherial/archive/2018/03/07/8522405.html

    一、概述

    在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。数据预处理的常用流程为:去除唯一属性、处理缺失值、属性编码、数据标准化正则化、特征选择、主成分分析。

     

    二、数据预处理方法

    1. 去除唯一属性

    唯一属性通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些属性即可。

    2. 处理缺失值

    缺失值处理的三种方法:直接使用含有缺失值的特征;删除含有缺失值的特征(该方法在包含缺失值的属性含有大量缺失值而仅仅包含极少量有效值时是有效的);缺失值补全。

    常见的缺失值补全方法:均值插补、同类均值插补、建模预测、高维映射、多重插补、极大似然估计、压缩感知和矩阵补全。

    (1)均值插补

    如果样本属性的距离是可度量的,则使用该属性有效值的平均值来插补缺失的值;

    如果的距离是不可度量的,则使用该属性有效值的众数来插补缺失的值。如果使用众数插补,出现数据倾斜会造成什么影响?

    (2)同类均值插补

    首先将样本进行分类,然后以该类中样本的均值来插补缺失值。

    (3)建模预测

    将缺失的属性作为预测目标来预测,将数据集按照是否含有特定属性的缺失值分为两类,利用现有的机器学习算法对待预测数据集的缺失值进行预测。

    该方法的根本的缺陷是如果其他属性和缺失属性无关,则预测的结果毫无意义;但是若预测结果相当准确,则说明这个缺失属性是没必要纳入数据集中的一般的情况是介于两者之间。

    (4)高维映射

    将属性映射到高维空间,采用独热码编码(one-hot)技术。将包含K个离散取值范围的属性值扩展为K+1个属性值,若该属性值缺失,则扩展后的第K+1个属性值置为1。

    这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值;缺点是计算量大大提升,且只有在样本量非常大的时候效果才好。

    暂时未理解?

    (5)多重插补(MultipleImputation,MI)

    多重插补认为待插补的值是随机的,实践上通常是估计出待插补的值,再加上不同的噪声,形成多组可选插补值,根据某种选择依据,选取最合适的插补值。

    (6)压缩感知和矩阵补全

    (7)手动插补

    插补处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实。在许多情况下,根据对所在领域的理解,手动对缺失值进行插补的效果会更好。

    3. 特征编码

    (1)特征二元化

    特征二元化的过程是将数值型的属性转换为布尔值的属性,设定一个阈值作为划分属性值为0和1的分隔点。

    (2)独热编码(One-HotEncoding)

    独热编码采用N位状态寄存器来对N个可能的取值进行编码,每个状态都由独立的寄存器来表示,并且在任意时刻只有其中一位有效。

    独热编码的优点:能够处理非数值属性;在一定程度上扩充了特征;编码后的属性是稀疏的,存在大量的零元分量。

    4. 数据标准化、正则化

    数据标准化

    数据标准化是将样本的属性缩放到某个指定的范围。

    数据标准化的原因:

    某些算法要求样本具有零均值和单位方差;

    需要消除样本不同属性具有不同量级时的影响:①数量级的差异将导致量级较大的属性占据主导地位;②数量级的差异将导致迭代收敛速度减慢;③依赖于样本距离的算法对于数据的数量级非常敏感。

    min-max标准化(归一化):对于每个属性,设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为:新数据=(原数据 - 最小值)/(最大值 - 最小值)

    z-score标准化(规范化):基于原始数据的均值(mean)和标准差(standarddeviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。新数据=(原数据- 均值)/ 标准差

    均值和标准差都是在样本集上定义的,而不是在单个样本上定义的。标准化是针对某个属性的,需要用到所有样本在该属性上的值。

    正则化

    数据正则化是将样本的某个范数(如L1范数)缩放到到位1,正则化的过程是针对单个样本的,对于每个样本将样本缩放到单位范数。

    设数据集。对样本首先计算Lp范数:

    正则化后的结果为:每个属性值除以其Lp范数:

    参考http://blog.csdn.net/pipisorry/article/details/52247379

    5. 特征选择(降维)

    从给定的特征集合中选出相关特征子集的过程称为特征选择。

    进行特征选择的两个主要原因是:

    减轻维数灾难问题;

    降低学习任务的难度。

    进行特征选择必须确保不丢失重要特征。

    常见的特征选择类型分为三类:过滤式(filter)、包裹式(wrapper)、嵌入式(embedding)。

    过滤式选择:该方法先对数据集进行特征选择,然后再训练学习器。特征选择过程与后续学习器无关。Relief是一种著名的过滤式特征选择方法。

    包裹式选择:该方法直接把最终将要使用的学习器的性能作为特征子集的评价原则。其优点是直接针对特定学习器进行优化,因此通常包裹式特征选择比过滤式特征选择更好,缺点是由于特征选择过程需要多次训练学习器,故计算开销要比过滤式特征选择要大得多。

    嵌入式选择

    常见的降维方法:SVD、PCA、LDA

    SVD参考ttp://blog.csdn.net/u012380663/article/details/36629951

    PCA参考http://blog.csdn.net/u014772862/article/details/52335970

    LAD参考https://www.cnblogs.com/pinard/p/6244265.html

    6. 稀疏表示和字典学习

    字典学习:学习一个字典,通过该字典将样本转化为合适的稀疏表示形式。

    稀疏编码:获取样本的稀疏表达。

     

    转至http://blog.csdn.net/marsjhao/article/details/70213749,有修改

    展开全文
  • 最好的6个大数据处理分析工具

    万次阅读 2017-01-19 13:55:32
    大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,...
  • 1. 大数据处理之一:采集 大数据的采集是指利用多个数据库来接收发自客户端(Web、App或者传感器形式等)的 数据,并且用户可以通过这些数据库来进行简单的查询和处理工作。比如,电商会使用传统的关系型数据库MySQL...
  • 五种大数据处理架构

    万次阅读 多人点赞 2017-12-14 14:12:21
    大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了...
  • 数据处理技术的总结与分析

    千次阅读 2019-05-26 17:29:55
    在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统、12306网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。 一数据分析处理需求分类 1 事务型处理 在我们实际生活中,事务型...
  • 数据处理流程总结

    千次阅读 2020-03-12 15:48:29
    数据分析 1.什么是数据分析? 2.数据分析的分类 3.数据分析的三大作用 现状分析、原因分析、预测分析。 4.数据分析的流程 1.问题的定义:明确目的和思路(具有数据思维) 问正确的问题往往是成功的一半...
  • 数据处理流程

    万次阅读 2019-04-10 12:31:10
    数据处理流程 1. 数据处理流程 网站流量日志数据分析是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处理流程进行。有以下几个大的步骤: 1.1 数据采集 &nbsp;&nbsp;&nbsp;&nbsp;&...
  • 大数据的关键技术

    万次阅读 2012-10-29 15:52:48
    在大数据时代,传统的数据处理方法还适用吗? 大数据环境下的数据处理需求 大数据环境下数据来源非常丰富且数据类型多样,存储和分析挖掘的数据量庞大,对数据展现的要求较高,并且很看重数据处理的高效性和可用性...
  • 数据处理环节下的需求大数据环节下的数据来源是非常多,而且类型也很多花样,存储和数据处理的需求量很大,对于数据展现也非常的高,并且很看重数据处理的高效性和可用性。大数据环境下的数据处理需求大数据环境下...
  • 利用Python处理数据集的缺失值

    万次阅读 2018-08-28 23:17:05
    knn,移动平均,众数,平均数,模型插值等都是缺失值的处理方法
  • 数据预处理之异常值处理

    万次阅读 2017-08-09 19:53:51
    异常值,即在数据集中存在不合理的值,又称离群点。比如年龄为-1,笔记本电脑重量为1吨等,都属于异常值的范围。从集合角度来看,异常值即离群点
  • 海量数据处理分析

    万次阅读 热门讨论 2006-12-06 15:37:00
    海量数据处理分析 北京迈思奇科技有限公司 戴子良 笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面:一、数据量过大,数据中什么情况都可能存在。如果...
  • 数据库设计--数据流图(DFD)

    万次阅读 多人点赞 2020-07-22 20:42:39
    数据流图(DFD)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果...
  • java 对大数据的处理

    万次阅读 2018-01-08 18:08:09
    最近做了一个项目,数据量每次处理在两百万左右,这里记录一下最近开发时处理大量数据的思路,主要思路是将大数据化小,多次处理,不足之处还请指出。 文件读取:首先是一个文件上传,数据入库,10-200万条不等,...
  • RStudio入门教程(二)RStudio数据处理

    万次阅读 2017-12-16 21:28:38
    RStudio功能详解
  • 数据处理必备的十大工具!

    万次阅读 2018-01-18 11:09:52
    下面是用于信息化管理的大数据工具列表:1.ApacheHiveHive是一个建立在hadoop上的开源数据仓库基础设施,通过Hive可以很容易的进行数据的ETL,对数据进行结构化处理,并对Hadoop上大数据文件进行查询和处理等。...
1 2 3 4 5 ... 20
收藏数 4,927,587
精华内容 1,971,034
关键字:

数据处理