2017-08-05 11:20 来源:机器之心 生命科学 /line /基因 选自AnalyticsVidhya 参与:晏奇、黄小天 近日,Analyticsvidhya 上发表了一篇题为《Introduction to Genetic Algorithm & their application in data science》的文章,作者 Shubham Jain 现身说法,用通俗易懂的语言对遗传算法作了一个全面而扼要的概述,并列举了其在多个领域的实际应用,其中重点介绍了遗传算法的数据科学应用。机器之心对该文进行了编译,原文链接请见文末。 简介几天前,我着手解决一个实际问题——大型超市销售问题。在使用了几个简单模型做了一些特征工程之后,我在排行榜上名列第 219 名。 虽然结果不错,但是我还是想做得更好。于是,我开始研究可以提高分数的优化方法。结果我果然找到了一个,它叫遗传算法。在把它应用到超市销售问题之后,最终我的分数在排行榜上一下跃居前列。 没错,仅靠遗传算法我就从 219 名直接跳到 15 名,厉害吧!相信阅读完本篇文章后,你也可以很自如地应用遗传算法,而且会发现,当把它用到你自己正在处理的问题时,效果也会有很大提升。 目录 1、遗传算法理论的由来 2、生物学的启发 3、遗传算法定义 4、遗传算法具体步骤 初始化 适应度函数 选择 交叉 变异 5、遗传算法的应用 特征选取 使用 TPOT 库实现 6、实际应用 7、结语 1、遗传算法理论的由来 我们先从查尔斯·达尔文的一句名言开始: 能够生存下来的往往不是最强大的物种,也不是最聪明的物种,而是最能适应环境的物种。 你也许在想:这句话和遗传算法有什么关系?其实遗传算法的整个概念就基于这句话。 让我们用一个基本例子来解释 : 我们先假设一个情景,现在你是一国之王,为了让你的国家免于灾祸,你实施了一套法案: 你选出所有的好人,要求其通过生育来扩大国民数量。 这个过程持续进行了几代。 你将发现,你已经有了一整群的好人。 这个例子虽然不太可能,但是我用它是想帮助你理解概念。也就是说,我们改变了输入值(比如:人口),就可以获得更好的输出值(比如:更好的国家)。现在,我假定你已经对这个概念有了大致理解,认为遗传算法的含义应该和生物学有关系。那么我们就快速地看一些小概念,这样便可以将其联系起来理解。 2、生物学的启发 相信你还记得这句话:「细胞是所有生物的基石。」由此可知,在一个生物的任何一个细胞中,都有着相同的一套染色体。所谓染色体,就是指由 DNA 组成的聚合体。 传统上看,这些染色体可以被由数字 0 和 1 组成的字符串表达出来。 一条染色体由基因组成,这些基因其实就是组成 DNA 的基本结构,DNA 上的每个基因都编码了一个独特的性状,比如,头发或者眼睛的颜色。希望你在继续阅读之前先回忆一下这里提到的生物学概念。结束了这部分,现在我们来看看所谓遗传算法实际上指的是什么? 3、遗传算法定义 首先我们回到前面讨论的那个例子,并总结一下我们做过的事情。 首先,我们设定好了国民的初始人群大小。 然后,我们定义了一个函数,用它来区分好人和坏人。 再次,我们选择出好人,并让他们繁殖自己的后代。 最后,这些后代们从原来的国民中替代了部分坏人,并不断重复这一过程。 遗传算法实际上就是这样工作的,也就是说,它基本上尽力地在某种程度上模拟进化的过程。 (责任编辑:本港台直播) |