浅析集体智慧的实用性

注:转载请注明原作者及链接,谢谢。

我们知道Web2.0是相对Web1.0的一类新的互联网应用的统称。Web2.0注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。比较有代表性的两个例子是维基百科和Google。维基百科是一个在线的百科全书,它完全是由用户维护的。任何人都可以新建或者编辑网站上的任何一个页面,同时会有为数不多的几名管理员进行监控。而Google则是世界上最为流行的搜索引擎,也是第一个根据其他网页对当前网页的引用数多少来评价网页等级的搜索引擎。维基百科邀请网站的用户为其提供内容,而Google则是从Web内容的创建者对自己网站的操作中提取重要的信息,并利用这些信息为Google的使用者设定各个网站的分值。通过以上两个例子,我们了解到Web2.0的核心就是它利用了集体智慧。

那么什么是集体智慧?集体智慧对于互联网而言又有哪些实用性?如何利用集体智慧来进行数据挖掘呢?

集体智慧的含义通常是指:为了创造新的想法,而将一群人的行为、偏好或思想组合在一起。Google在创立初期还是一家比较小的搜索引擎公司,但后来Google的创立者们采用了一种全新的方法对搜索结果进行排序——利用上百万个Web站点上的链接来决定哪些页面的相关性最大。Google的搜索结果远远优于其他同行,现在已经成为全球最大的搜索引擎公司。那么Google就是采用了先进的算法,将来自不同人群的数据加以组合,进而得出新的结论,并创造出新的商机。像这样利用集体智慧的例子还有很多。

    那么《集体智慧编程》这本书就是以集体智慧为出发点,探讨了各种能让Web2.0程序更为智能的算法及其应用。集体智慧的主要应用有如下几点:

   

该书的所有代码示例都是用Python语言编写的。Python语言是一种优秀的高级程序设计语言,也是一种功能强大而完善的通用型语言。它有着简练、易于阅读、易于扩展、交互性、多范式、多平台和免费等特性。

下面来详细介绍集体智慧在各方面的应用及涉及到的算法:

 

一、个性化推荐

 

个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。类似的例子有热门网站、文章、音乐、影片等的推荐。

下面来介绍一种协作型过滤方法,它的通常做法是对一大群人进行搜索,并从中找出与用户品味相近的一小群人。算法会对这些人所偏爱的其他内容进行考查,并将它们组合起来构造出一个经过排名的推荐列表。大体流程如下:搜集偏好——寻找相近用户——推荐物品。比较有名的例子有豆瓣的图书推荐、八宝盒的音乐推荐等。一个好的推荐系统必须能够基于用户之前的口味和喜好提供相关的精确的推荐,而且这种口味和喜欢的收集必须尽量少的需要用户的劳动。而且推荐的结果必须能够实时计算,这样才能够在用户离开网站之前获得推荐的内容,并且及时的对推荐结果做出反馈。

 

二、聚类分组

 

聚类是一个将数据集划分为若干组或类的过程,并使得同一组内的数据对象具有较高的相似度,而不同组中的数据对象是不相似的。许多领域,包括数据分析、数据挖掘、图像分割、统计学、机器学习甚至计量生物学领域都使用了聚类算法。聚类时常被用于数据量很大的应用中。比如说按照博客用户所讨论的话题,以及他们所使用的特殊词汇进行分组。

这里主要介绍两种不同的聚类算法:分级聚类和K-均值聚类。

分级聚类通过连续不断地将最为相似的群组两两合并,来构造出一个群组的层级结构。在每次迭代的过程中,分级聚类算法会计算每两个群组间的距离,并将距离最近的两个群组合并成一个新的群组。这个过程一直重复下去,直到只剩一个群组时则完成分组。但是由于分级聚类每次都要计算群组间的距离,所以计算量比较大。

K-均值聚类是一种完全不同于分级聚类的方法,它首先会随机确定k个中心位置,然后将各个数据项分配给最近的中心点。等到分配完成之后,聚类中心会发生变化,会转移到分配给该中心的所有节点的平均位置处。然后,整个分配过程重新开始。这样一直持续下去,直到分配过程不再发生变化为止。这有点类同于组合优化中的p-中值问题和p-中心问题。假设有n个数据项,我们要把这n个数据项进行聚类分组,目标是所有数据项到它分配的聚类中心的距离之和最小。那么如何聚类呢?这时候就是p不定的中值问题,我们可以采取遗传算法、变邻域搜索算法等方法去解决。聚类的应用有博客的分组归类、电子商务中对客户的共同特征进行分析等。

 

三、搜索和排名

 

搜索引擎是对互联网上的信息进行搜集整理,并对搜集结果按照一定的规则进行排名,然后供你查询的系统。全文搜索算法是最重要的集体智慧算法之一,人们在这一领域里所产生的新想法已经创造出了大量的财富。比较有名的有Google、百度、雅虎等。Google从一个研究型项目迅速崛起成为世界范围内最受欢迎的搜索引擎,很大程度上要归功于它的PageRank算法。

建立搜索引擎的第一步就是搜集文档,然后为这些文档建立索引,最后一步就是通过查询返回一个经过排序的文档列表了。那么搜索结果如何排序呢?有如下几种度量方法:

1、基于网页内容的度量方法,主要有单词频度、文档位置、单词距离等方法。

2、基于网页外部信息的度量方法,包括简单计数、PageRank算法、利用链接文本等。

PageRank算法是由Google的创始人发明的,该算法为每个网页都赋予了一个指示网页重要程度的评价值。网页的重要性是依据指向该网页的所有其他网页的重要性,以及这些网页中所包含的链接数量来求得的。

对于搜索引擎而言,每一位用户可以通过只点击某条搜索结果,而不选择点击其他内容,向引擎及时提供关于他对搜索结果喜好程度的信息。那么我们通过构造人工神经网络就可以记录用户点击查询结果的情况,并利用这一信息来改进搜索结果的排名。

人工神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。人工神经网络具有自学习和自适应的能力,可以通过预先提供的一批相互对应的输入-输出数据,分析掌握两者之间潜在的规律,最终根据这些规律,用新的输入数据来推算输出结果。

 

四、优化

 

优化广泛存在于我们的日常生活、生产中。我们出行乘坐什么交通工具,走什么路线最省时间且费用最低,大型连锁店建在何处、建几个能使利润尽可能的高,且成本最低等等都是现实中的优化问题。对于很多优化问题,它们的解有很多。优化算法就是通过尝试许多不同题解并给这些题解打分以确定其质量的方式来找到一个问题的最优解。主要有随机搜索、爬山法等经典方法,也有模拟退火、遗传算法等智能算法。

模拟退火算法是通过模拟物理上金属物体的退火过程,综合了物体退火与组合优化之间的相似性.在金属物体加热到一定温度后,它的所有分子以几乎相同的概率停留在不同的能量状态,随着温度的降低,这些分子重新排列,重新分布在不同的能量状态,直到温度降到最低时,这些分子以接近于1的概率停留在最低能量状态。

遗传算法来源于进化论和遗传学理论,通过模拟生物进化的机制来构造人工系统。它通过大量人群的交互而进行修改、进化,是一种极为有趣且类型迥异的集体智慧。遗传算法通过一组种群进行交叉、配对、变异,然后产生子代。我们再从子代种群中选出某些个体再进行交叉、配对、变异。这样,在若干代后,我们总能发现有更优秀的子代出现,直到我们找到我们满意的个体为止。

类似的利用集体智慧的算法还有蚁群算法、粒子群算法等。

其实现实生活中的很多优化问题都可以建立它们的模型,然后我们就可以采用某种合适的智能算法解决它。我曾尝试过用改进的遗传算法以及单亲遗传模拟退火算法来解决集合覆盖问题以及顶点p-中心问题,都得到了很好的结果。

 

五、文档过滤

 

文档分类是机器智能的一个应用,很有实用价值,而且越来越普及。文档过滤最为人们所熟识的要数垃圾邮件的过滤了。当前,网络上的垃圾信息问题已经不仅仅是垃圾邮件等问题了。那么我们如何过滤垃圾信息呢?

早期尝试对垃圾信息进行过滤所用的都是基于规则的分类器,使用时会有人事先设计好一组规则,用以指明某条信息是否属于垃圾信息。但这种过滤方法有一些缺陷,比如说会误将一些正常的信息当成垃圾信息来处理等。那么针对于此,我们可以构造一种不断学习的过滤方法。根据人们提供给它的有关哪些是垃圾信息,哪些不是垃圾信息,不断地学习。通过构造的分类器,我们就可以过滤博客订阅源、电子邮件等。

 

六、构建价格模型

 

价格是一种利用集体智慧来决定商品真实价值的非常好的方法。在一个拥有众多买家和卖家的大型市场中,通常对于交易双方而言,商品的价格最终将会达到一个最优值。与此同时,对价格进行预测也是测试此类算法的一种很好的手段,因为在确定价格时,通常有许多不同的因素需要考虑。不同的因素对价格影响不同。我们可以利用优化技术,确定各个因素的最佳权重,以便更准确地预测价格。

算法通过寻找与当前所关注的商品情况相似的一组商品,对这些商品的价格求均值,进而做出价格预测,这种方法被称为k-最近邻算法。

eBay是一个在线的拍卖网站,也是互联网上最受欢迎的站点之一。它拥有数以百万计的商品名目,还有数以百万计的用户参与竞拍,并一起制定价格,这些都使得eBay成为了集体智慧的一个绝佳的应用案例。

 

七、特征提取

 

在一个人声鼎沸的屋子里,尽管有许多不同的声音混杂在一起涌入我们的耳朵,可我们还是能够从中鉴别出某个声音来。“鸡尾酒宴会”问题就是一个如何在多人谈话时鉴别声音的问题。特征提取就是尝试从数据集中寻找独立的特征,并且告诉我们值得关注的重要信息。

金融市场被认为是集体智慧的一个典型的例子,因为它们拥有众多的参与者,这些参与者们根据掌握的各种信息和行情,彼此独立地采取行动,并产生少量的输出。通过对数据的分析,我们可以找出反映重要交易日的模式,以及潜在因素如何得以驱动多支股票交易量的原因。

还有个典型的例子就是杀毒软件的特征代码法。在采集到的病毒样本中,抽取特征代码。抽取的代码要比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去实用价值。这也是一个自适应学习的过程,是应用集体智慧的表现。

 

综上几点可以看出,利用集体智慧我们可以从众多Web站点处提取到值得关注的重要数据;可以从使用自已应用程序的用户那里搜集信息,并对我们所掌握的数据进行分析和理解。掌握了集体智慧,就可以利用搜集到的信息来编写更为智能的程序。作为新兴的一个领域,集体智慧将会受到越来越多的关注和研究。相信集体智慧在现实中的应用将更加地广泛。

 

 

你可能感兴趣的:(智能算法)