结构化数据和非结构化数据之间有什么区别? 这种差异如何影响各自的数据挖掘方法?
答案 0 :(得分:4)
我熟悉的术语是结构化和非结构化数据(与Q中的内容相同,但后缀除外)。
我在机器学习中处理两种类型的数据,我不知道任何正式的定义;但是,我怀疑几乎所有工作需要区分这两种数据的人都可以毫不费力地区分它们。
结构化数据示例:发送电子邮件的日期/时间;是否有附件或电子邮件发件人。非结构化数据:电子邮件的正文。
是否有稳定的规则或规则集来区分这两类数据?我认同。首先,如果您可以为数据元素构建 解析器 ,那么它就是结构化的。
另一个经验法则是查看数据库中存储数据所需字段的 数据类型 。如果是文本类型 - 用于MySQL,Tintext,Text,Mediumtext或Longtext。或者不太可能,VARCHAR(255) - 然后该数据可能未编译。
这种区分对于数据挖掘的主要意义可能是:结构化数据一旦从文档中提取并被解析,就可以用作统计/机器学习模型中的变量。然而,非结构化数据需要进一步解析 - 即,在您可以在建模中使用它之前,首先必须将其分解为一组结构化数据元素 - 例如,单词数量等。
例如,假设您要为制作在线MMORPG的公司内的服务器组构建知识管理(KM)系统。您可以从该组成员之间交换的大量电子邮件消息开始。
因此,您为此来源创建数据模型 - 例如,包括“发件人”,“收件人”,“发送日期/时间”,收件人和发件人是否都是服务器组的员工,是否消息被复制到其他人等。数据库的行是各个电子邮件。
然后,您编写一个由一组解析器组成的脚本,以从每封电子邮件中提取每个字段。对于许多字段,这很简单,例如,对于'cc:'字段,您编写一个解析器来扫描电子邮件的那部分并检查它是否为空 - 如果是,那么数据库中的那个字段为行可能会填充'False'(表示没有人被复制),否则为'True'。同样,数据/时间,可能是某种形式,如:2011年3月16日18:45:39.0319(UTC)。提取和解析这些数据同样很简单;事实上,你的脚本语言几乎肯定有一个模块可以做到这一点。
但是当你到达电子邮件的正文时,虽然从电子邮件的其余部分中提取起来并不困难,但解析它并不简单。您的数据模型可能包含“NumberOfWords”,“Keywords”等字段,并且构建解析器以填充这些字段很简单。但是,最有用的信息更难处理 - 即电子邮件是否对收件人有帮助?主题是什么?它具有权威性吗?
答案 1 :(得分:1)
非结构化数据的数据挖掘通常属于“文本挖掘”类别。对此有两种不同的看法。一种观点认为,您需要专门的工具来执行自然语言处理(NLP),因为这是您可以获得语义含义的唯一方法。另一种方法是将非结构化数据转换为单词矩阵,然后使用标准统计技术进行数据挖掘(“词袋”)。在这种情况下,一切都变成数据,单词的顺序并不重要。
-Ralph Winters
答案 2 :(得分:0)
结构化数据
结构化数据可以被视为数据数据库。在结构化数据中,每个特征(字段)都有详细记录。例如,bank_transaction
数据集或class_attendance
数据集可视为结构化数据集。
----------------------------------------------------------------------
| student_id | student_name | student_attendance |
|----------------------|---------------------|-----------------------|
| 2123 | Jo | 45 |
|----------------------|---------------------|-----------------------|
| 2175 | Mark | 10 |
|---------- -----------|---------------------|-----------------------|
非结构化数据
数据类型 - 例如图像,音频/视频剪辑,文本等 - 被认为难以被计算机解释的称为非结构化数据。通常情况下,非结构化数据也称为Raw data
。计算机很难可视化这种数据。