什么叫数据挖掘、神经网络

什么叫数据挖掘、神经网络,第1张

数据挖掘(Data Mining)是指通过大量数据集进行分类的自动化过程,以通过数据分析来识别趋势和模式,建立关系来解决业务问题。换句话说,数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

原则上讲,数据挖掘可以应用于任何类型的信息存储库及瞬态数据(如数据流),如数据库、数据仓库、数据集市、事务数据库、空间数据库(如地图等)、工程设计数据(如建筑设计等)、多媒体数据(文本、图像、视频、音频)、网络、数据流、时间序列数据库等。也正因如此,数据挖掘存在以下特点:

(1)数据集大且不完整

数据挖掘所需要的数据集是很大的,只有数据集越大,得到的规律才能越贴近于正确的实际的规律,结果也才越准确。除此以外,数据往往都是不完整的。

(2)不准确性

数据挖掘存在不准确性,主要是由噪声数据造成的。比如在商业中用户可能会提供假数据;在工厂环境中,正常的数据往往会收到电磁或者是辐射干扰,而出现超出正常值的情况。这些不正常的绝对不可能出现的数据,就叫做噪声,它们会导致数据挖掘存在不准确性。

(3)模糊的和随机的

数据挖掘是模糊的和随机的。这里的模糊可以和不准确性相关联。由于数据不准确导致只能在大体上对数据进行一个整体的观察,或者由于涉及到隐私信息无法获知到具体的一些内容,这个时候如果想要做相关的分析操作,就只能在大体上做一些分析,无法精确进行判断。

而数据的随机性有两个解释,一个是获取的数据随机;我们无法得知用户填写的到底是什么内容。第二个是分析结果随机。数据交给机器进行判断和学习,那么一切的操作都属于是灰箱操作。

神经网络:

神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。

 Oracle 发布了 PL/SQL 和 Java 应用编程接口 (API) 后 市场上才会推出可利用这一新发布的 API 的点击工具或构建器 这一般是最好的做法 利用这一实践 开发人员可将新功能即刻融入其应用程序中以使其企业从中获益

 然而 开发可利用新发布 API 的专门工具需要投入大量精力 因此 理想情况下 从 API 发布直至推出利用该 API 的直观最终用户工具 至少需要数个月 而实际上 这一滞后时间通常为一年或两年 同时 利用 API 可能需要企业使用自己的工具 或更为常见的是利用即席解决方案 例如在报表生成器和电子表格中嵌入对 API 的调用

 一种常用方法是将 API 包装在数个脚本中 然后使用自定义按钮和菜单从电子表格访问这些脚本 但是 这一方法的主要缺点在于如今的电子表格是将单个单元格中的文本和数字作为值来进行处理的 因此它通常不是处理新功能的合适工具

 本文将介绍如何快速将分析和其他 API 整合至一个最终用户可从其中轻松访问新代码的电子表格平台 作为指导性示例 其中还将阐释了如何将Oracle 数据挖掘(PL/SQL) API 重新打包为 Java API 以及如何从电子表格调用的 J Cells 访问该 API J Cells 完全以 Oracle JDeveloper 编写 它不仅可以将文本和数字作为单元格的值 而且还可将 Java 对象作为值进行处理 并可从其单元格直接访问任何 Java API 以即刻进行部署

  电子表格平台

 我使用的是电子表格界面 只是其中允许用户在单元格中创建任何 Java 对象以及使用基元 Java 类型 每个单元格都可用作另一个单元格的变量 用户可以选择在单元格中直接编写 Java 代码 或使用其他格式 将电子表格界面和对象(而不仅是常规电子表格中的数字和文本)使用相结合是自动进行的 J Cells 为每个适合单元格的对象计算指示值 这一指示值给予用户有关显示对象的充足线索 此外 还会实施一个完整的值系统 可根据需要(例如 当用户双击给定单元格时)以各种其他格式显示对象 即使在电子表格中 因为公式可能定义比较复杂 所以系统还需识别要创建的对象是否具有相关的向导 向导通常是一个特定于某个对象类型的图形化代码生成器 稍后本文示例将说明如何在 J Cells 中使用向导

 图 显示了本文示例的电子表格界面

 

 图 J Cells 的电子表格界面

  数据挖掘 API

 Oracle 支持两种兼容的 API 以访问数据库中的数据挖掘功能 第一种是 PL/SQL API 其中包括 DBMS_DATA_MINING 程序包 另一种也是 Java API 称为 Oracle 数据挖掘 Java API 因为 J Cells 目前最适合访问 Java API 所以需要以可直接从 Java 对其进行访问的方式打包 PL/SQL API 两个主要的 Oracle 数据挖掘概念是设置和模型 设置概念基本围绕带有两列(setting_name 和 setting_value)的设置表构建;其中 setting_name 是挖掘算法使用的属性名 而 setting_value 是与该属性相对应的值

 DBMS_DATA_MINING 程序包包含若干过程 包括 CREATE_MODEL 和 APPLY CREATE_MODEL 过程根据设置表(作为过程的参数之一提供)中的值为给定挖掘函数和数据集创建挖掘模型 该过程简单且易于使用 实际上 由用户来为要创建的模型 要使用的挖掘函数 包含要使用的数据的表 要建模的列以及设置表提供名称 这一方法的优点在于所有不同算法都可以类似的方法调用 每种算法的微调都整合至设置表中 但在很多情况下 各种设置系数可由算法本身自动决定 设置表中条目的复杂性根据用户的专业技术背景和算法而有所不同 许多专业用户可能希望手动设置所有可能的系数 而我们中的多数人更可能乐意系统自动给出适用设置 Oracle 提供了一个要用作设置键的常量列表 以及命名为常量或数字间隔的值

 表 algo_name(算法名)设置键的值

 

 Oracle 的算法名 (algo_name) 键的常量值如上所示 对于其中的每一个值 使用了可能键和值的不同集等 以下(图 )显示了向导函数是如何将这些键映射到树结构 并允许用户通过操纵该设置树定义设置表的

 作为 Oracle 数据库中创建的挖掘模型 DBMS_DATA_MINING APPLY 过程用于将该模型应用到新数据集 而且 这是一个易于使用的过程 要求只输入挖掘模型名 包含新数据集的表名 用于识别新数据集中行的列以及结果数据集名 Java 类 OracleMiningModel (below) 在调用预测 评分或 apply 方法时 都会利用该 APPLY 过程 此外 DBMS_DATA_MINING 程序包包含若干根据类型将各个模型详细信息作为结果集或以 XML 格式返回的函数 这些细节函数也可通过使用 OracleMiningModel 类的实例(代表数据库中的不同模型)进行访问

 此处可通过创建一个称为 OracleModelSettings 的 Java 类以 Java 打包 (PL/SQL) 设置概念 该类具有灵活的构造函数和各种签名 包括

       public OracleModelSettings ( String modelSettingsName

 Connection databaseConnection

 String[] keyToValueStringMap)

 throws SQLException

 keyToValueStringMap 只是表单 > 的字符串数组 该数组详细说明了设置表的行 以及负责在数据库中维护设置表的类

 类似地 此处也可通过创建一个称为 OracleMiningModel 的 Java 类以 Java 打包模型概念 该类具有构造函数和各种签名 包括

 public OracleMiningModel ( String modelName

 OracleModelSettings oms

 String[] keyToValueStringMap)

 boolean recreate)

 throws SQLException

 此处使用 keyToValueMappings 数组来确定在 Oracle 数据库中创建数据挖掘模型所需的算法以及其他命名属性 该类的用途就是创建和维护数据挖掘模型 此外 OracleMiningModel 类还定义了用于检索以及将该模型应用到新数据集的方法 这些方法包括以下各项 此处只显示了一小部分

 

       public OracleResultSet infoAprioriAssociationRules(int topn)

 public OracleResultSet infoAprioriFrequentItemsets(int topn)

 public OracleResultSet infoAdaptiveBayesNeork()

 public OracleResultSet infoAIMinimumDescLength()

 public OracleResultSet infoKMeans()

 public OracleResultSet infoNaiveBayes()

 public OracleResultSet infoNonnegativeMatrixFactorization()

 public OracleResultSet infoOCluster()

 public OracleResultSet infoSupportVectorMachines()

 public XMLType infoDecisionTree()

 public Object getPrediction(String[] signature double[] doubleVal)

 public HashMap score(String[] signature double[] doubleVal)

 public OracleResultSet apply( String dataTable

 String caseID

 String resultTable

 String schema

 boolean overwrite)

 除了具有上述签名外 所有的方法可能都会引发 SQL 意外 一旦可以从两个简单类来管理数据挖掘功能后 就可调用该电子表格平台来访问任何可用的数据挖掘算法 以在 Oracle 数据库中建模数据集

  数据挖掘示例

 因此 来看一个在该系统中编写的小数据挖掘模型 该模型可通过访问 Oracle 数据库创建并运行 ODM (Oracle Data Mining) 回归模型 该回归模型的用途是根据输入(例如血压 高度和体重)预测心率 使用 J Cells 可直接访问 Java API 以实例化对象并在对象上调用方法 首先 连接至 Oracle 数据库 DataSource 对象可通过将以下公式

 () = ~ OracleDataSource( agust agust dbVaio vaioFS );

 输入到电子表格的单元格 b 中进行实例化 Tilde 符号 (~) 表示缩写符号 允许 J Cells 将(右侧)语句转换为构造函数t new cell OracleDataSource( agust agust dbVaio vaioFS ); 使系统能够以用户 agust 的身份访问服务器 vaioFS 上的数据库 dbVaio

 现在 可通过在 DataSource 对象上调用正确的方法(例如在单元格 b 和 b 中分别输入以下公式) 获得数据库连接以及检查数据库中的源数据

 () = b getConnection();

 () = b query( select from pulse_clinical );

 第一个语句将向单元格 b 中返回一个 java sql Connection 对象 第二个语句将向单元格 b 中返回一个 java sql ResultSet 对象 只需通过双击单元格 (b ) 就可检查结果集 该操作会将结果表显示在表格框架中以便查看

 迄今为止 我只在该电子表格中创建了几个简单的数据对象 现在 可以调用数据挖掘 API 来定义一个设置对象 然后创建一个简单的数据挖掘模型 首先 通过在单元格 b 中输入以下语句来创建一个设置对象

      () = new cell odm OracleModelSettings( xyz_settings b

 new String[]{

  algo_name > algo_support_vector_machines

  svms_kernel_function > svms_linear } );

   立刻我发现该公式中的问题是最终用户友好的 因此 注册一个带有 J Cells 的向导 在提示用户后自动生成该公式 可能是个不错的办法 一般 电子表格在用户创建复杂公式时都会给予帮助 因此用户可以期望在实例化对象时获得指导

 部署的向导如图 所示

 

 图 典型的向导界面

 同样 数据挖掘模型通过使用向导或输入公式来创建 在这两种情况中 结果模型都是在直接指定 API 调用的单元格 b 中进行实例化

       ()= new cell odm OracleMiningModel( xyz_model b

 new String[]{

  data_table_name > pulse_clinical

  mining_function > regression

  target_column_name > pulse

  case_id_column_name > subject }

 false );

 使用该公式结果实例化数据挖掘模型将在 Oracle 数据库中生成标准的 Oracle 数据挖掘模型 该模型可通过双击单元格 b 进行查看 模型的完整值如图 所示

 

 图 查看单元格 b 中的模型

 使用上述的 OracleMiningModel 方法 可将该模型应用到 Oracle 数据库中的数据集 作为一个简单的交互式评分模型(一般适用于电子表格应用程序) 用户可能希望输入血压 高度和体重值 让数据库使用刚才定义的模型预测心率 这个在模型对象上定义的 Java API 方法 getPrediction 非常适合这一用途 在单元格 e e e 以及 e 中(以单元格 b 中签名数组指定的顺序)键入输入值后 通过输入以下公式可进行评分

 () = b getPrediction(b new double[]{e e e e });

 同样 该公式将直接访问 Java API 以获取并在单元格 e 中显示评分结果 如图 所示

 

 图 将模型应用到输入值

  电子表格优点

 电子表格在最终用户之间的流行多少有些令人费解 一方面 当今最常用的电子表格系统长期以来令许多开发人员气馁 他们习惯于更为灵活 强大的系统 而另一方面 对于非开发人员而言 使用电子表格系统具有以下一些明显优点 无须构建图形化用户界面 单独构建和测试每个公式(代码)以及隐藏公式 看到的是更为简单的计算结果 这些优点只存在于当今流行的电子表格中 使用公式可将数字或文本返回到单元格 而许多系统主要受限于此 此处演示了如何移除这一限制并创建更为强大的工具 然后用它来直接访问 Oracle 的数据挖掘模型功能以及其他 API

  结论

lishixinzhi/Article/program/Oracle/201311/17437

数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

数据挖掘流程:

定义问题:清晰地定义出业务问题,确定数据挖掘的目的。

数据准备:数据准备包括:选择数据–在大型数据库和数据仓库目标中 提取数据挖掘的目标数据集;数据预处理–进行数据再加工,包括检查数据的完整性及数据的一致性、去噪声,填补丢失的域,删除无效数据等。

数据挖掘:根据数据功能的类型和和数据的特点选择相应的算法,在净化和转换过的数据集上进行数据挖掘。

结果分析:对数据挖掘的结果进行解释和评价,转换成为能够最终被用户理解的知识。

数据挖掘的技术,可粗分为:统计方法、机器学习方法、神经网络方法和数据库方法。统计方法,可细分为:回归分析(多元回归、自回归等)、判别分析(贝叶斯判别、CBR、遗传算法、贝叶斯信念网络等。神经网络方法,可细分为:前向神经网络(BP算法等)、自组织神经网络(自组织特征映射、竞争学习等)等。数据库方法主要是基于可视化的多维数据分析或OLAP方法,另外还有面向属性的归纳方法。

云计算:就是个炒得很热的商业概念,其实说白了就是将计算任务转移到服务器端,用户只需要个显示器就行了,不过服务器的计算资源可以转包。当然,要想大规模商业化,这里还有些问题,特别是隐私保护问题。

大数据:说白了就是数据太多了。如今几兆的数据在20年前也是大数据。但如今所说的大数据特殊在哪呢?如今的问题是数据实在是太多了,这已经超过了传统计算机的处理能力(区别与量子计算机),所以对于大数据我们不得不用一些折衷的办法(比如数据挖掘),就是说没必要所有数据都需要精确管理,实际上有效数据很有限,用数据挖掘的方法把这些有限的知识提取出来就行了。·此外,数据抽样,数据压缩也是解决大数据问题的一些策略。

数据挖掘:从数据中提取潜在知识,这些知识可以描述或者预测数据的特性。有代表性的数据挖掘任务包括关联规则分析、数据分类、数据聚类等,这些你在任一本数据挖掘教材都可以了解。下面我说说和大数据的区别:数据挖掘只是大数据处理的一个方法。马云所说的大数据,或者如今商业领域所说的大数据,实际上指的就是数据挖掘,其实真正所谓大数据,或者Science杂志中提到的大数据,或者奥巴马提出的大数据发展战略,我的理解是,这些都远远大于数据挖掘的范畴,当然数据挖掘是其中很重要的一个方法。真正目的是如何将大数据进行有效管理。

机器学习:这个词很虚,泛指了一大类计算机算法。重点是学习这个词,如果想让计算机有效学习,目前绝大多数方法都采用了迭代的方法。所以在科研界,只要是采用了这种迭代并不断逼近的策略,一般都可以归到机器学习的范畴。此外,所谓学习,肯定要知道学什么,这就是所谓训练集,从训练集数据中计算机要学到其中的某个一般规律,然后用一些别的数据(即测试集)来看看学得好不好,之后才能用于实际应用。所以,选取合适的训练集也是个学问。

模式识别:意思就是模式的识别。模式多种多样,可以是语言,可以是图像,可以是事物一些有意义的模块,这些都算。所以总体来说,模式识别这个词我是觉得有点虚,倒是具体的人脸图像识别、声音识别等,这些倒是挺实在的。也许是我不太了解吧。

另外说说你的其他问题。

传统分析方法不包括数据挖掘。对于数据分析这块我不是很了解,不过可以肯定的是,传统分析都有一定的分析方向,比如我就想知道这两个商品的关联情况,那我查查数据库就行了。数据挖掘虽说有些历史,不过也挺时髦的,它是自动将那些关联程度大的商品告诉你,这期间不需要用户指定数据分析的具体对象。

如果想应对大数据时代,数据挖掘这门课是少不了的。此外对数据库,特别是并行数据库、分布式数据库,最好了解点。至于机器学习和模式识别,这些总的来说和数据挖掘关系不太大,除了一些特殊的领域外。

总之,概念挺热,但大数据还很不成熟,无论从研究上还是商业化上。我目前在作大数据背景下的算法研究,说实话,目前基本没有拓展性非常强的算法,所以未来大数据的发展方向,我也挺迷茫。

PS:将数据挖掘应用于商业,最最重要的就是如何确定挖掘角度,这需要你对具体应用的领域知识非常了解,需要你有非常敏锐的眼光。至于数据挖掘的具体算法,这些就交给我们专门搞研究的吧!(对算法的理解也很重要,这可以把算法拓展到你的应用领域)

企业级的一般说的都是部署在服务器上的,采取B/S架构的,能够处理大数据的工具,传统的SPSS,MATLAB,Excel目前都还是单机客户端版的,使用起来没有那么方便,现在开源的工具包很多,比如spark、python、R 都能做数据挖掘,但是没有系统的管理,比较零散,国内的厂商亿信华辰的豌豆DM,永洪BI等,在这些开源项目的基础上,做了大量封装,有可视化操作界面,完善的权限管理,数据的安全性也更有保障,能够更好的 满足企业级的使用。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 什么叫数据挖掘、神经网络

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情