如何合理使用科技?
这大概是每个学习《数据结构》学生都会想到的问题,也是值得所有从业者思考的问题。 合理地使用计算机技术(及对应的算法)解决难题的途径大致有三种: ①用优化的思路去解决复杂问题;
②用数据挖掘的方法从海量数据中获取有效信息;
③用人工智能的技术让人类智能与计算机技术完美结合,提高生产力和效率。 我想结合我最近的项目经验跟大家简单聊一聊这三方面的内容。
(1) 以目标为导向,将大问题拆解成小问题 大问题是:如何使用数据结构和算法来解决这个难题呢? 小问题是:已知两个数组怎么来比较它们的大小? 解决这个小问题的思路是:如果直接比较两数组的元素,时间复杂度太高,能不能想一个间接的办法呢? 我们知道数组是一种线性表,而线性表的实现最典型就是双向链表和顺序表。我们可以先构造一个类似于双向链表的容器来存放这两个数组,然后通过比较这两个容器的方式来比较数组A和B。 这样就解决了原来的大问题,同时我们学到了新的知识——双向链表以及容器的数据结构。 这就是把大问题拆解成小问题从而得到解决方案的过程!
(2) 从数据分析到算法实现 因为大数据是目前最为火热的领域之一,因此这里以大数据的相关技术为例来介绍第二种方式的步骤。 第一步:提出问题并收集数据 问题:如何让机器学习快速应用于实际的大数据? 数据:包含文本数据和数字数据的大规模数据集、机器学习的算法库以及相应的参数。
第二步:数据清洗 和关系数据库中的SQL一样,在大数据环境中同样存在各种格式不统一的问题,因此需要对原始数据进行清洗,使得数据能够作为“规范”的数据集提供给下游的用户。
第三步:数据提取 数据清洗之后还需要进一步处理,抽取真正需要的信息供后续算法使用。这一步往往根据用户的需求而定,可以是单条记录,也可以是多条记录。
第四步:特征工程 在大数据的环境中,特征工程的意义更加重要。因为数据量大的原因,很多原本由人工设计的特征需要重新设计和计算。例如对于文本数据,传统的方法是分词+词频统计,但是在大规模数据面前这种情况就难以发挥优势了,我们需要设计更合理的特征。