遗传算法是一种大致基于模拟进化的学习方法,假设常被描述为二进制串。在遗传算法中,每一步都根据给定的适应度评估准则去评估当前的假设,然后用概率的方法选择适应度最高的假设作为产生下一代的种子。产生下一代的办法有交叉和变异两种方法。

遗传算法和遗传编程是进化计算的两种普遍方法。

遗传算法原理

在遗传算法中各个假设首先表示成二进制位串。用if-then的编码规则将某个属性转换为二进制串。假设一个属性

Outlook可以取Sunny、Overcast和Rain,则该属性可以通过三个二进制位来描述,相应的位表示取某个值的属性。

例子:

(Outlook属性 = Overcast||Rain)&&(Wind属性=Strong)则二进制表示为

Outlook        Wind

011              10

表示了假设以后,再应用下面的迭代函数。

 GA(Fitness,Fitness_threshold,p,r,m)
Fitness:适应度评分函数;
Fitness_threshold:指定终止迭代的门限;
p:群体中假设的数量;
r:每一步通过交叉取代群体成员的比例;
m:变异率;

算法的每一次迭代都从概率的方法选择(具体选择那些个体,与个体的适应度有关)(1-r)p直接进入下一代群体,rp个体通过交叉产生群体进入下一代。然后再从下一代选择mp的成员变异,得到这一轮迭代的下一代群体。

个体选择:适应度比例选择,锦标赛选择和排序选择。

交叉算子:两点交叉,多点交叉和均匀交叉。(可以自定义交叉规则)。

变异算子:从父亲位串中选择一位取反。(当然也可以选择多位)。


      遗传算法实现难题:拥挤问题,群体中某个体适应度大大高于其他个体,因此它迅速繁殖,降低了群体的多样性。解法办法:修改选择函数、适应度共享等。

遗传编程(GP)

遗传编程是遗传算法的一种应用,只不过现在的个体计算机程序,通过GA学习可以得到那种算法的适应性最强。在遗传编程的实现中,GP操作的程序被表示为解析树,然后遗传交叉的时候,交叉解析数的某个子树节点。

进化和学习模型

拉马克进化:如果个体在生命周期内学会了避开某种有毒食物,它能把这种特性遗传给后代。科学证明这种理论冲突,但是它可以提高计算机遗传算法的效率。

鲍德温效应:如果个体具有学习的性能,则个体就会较少地依赖遗传中“基因的不足”,这种个体容易生存下来;如果没有学习能力的个体则单靠遗传的基因,会处于劣势。因此,个体的学习能力间接加速群体适应性进化。Hinton&Nowlan对一个简单的神经网络,运用鲍德温效应进行了实践,即让一些权值固定,另一些权值可以通过样本训练的。实验中,允许学习的时候,群体适应度迅速提高。

并行遗传算法

     GA算法适合并行实现。并行方法把群体细分成相对独立的个体群,每个群成为一个类属(deme),每个类属分配一个计算节点,在这些节点上应用GA算法。类属与类属之间可以通过迁移来复制或交换其他特性,但是将这种概率设置的比类属内部的基因交换概率比低。

机器学习笔记之遗传算法(GA)的更多相关文章

  1. 用遗传算法GA改进CloudSim自带的资源调度策略(2)

    遗传算法GA的核心代码实现: 最核心: private static ArrayList<int[]> GA(ArrayList<int[]> pop,int gmax,dou ...

  2. 机器学习笔记:Gradient Descent

    机器学习笔记:Gradient Descent http://www.cnblogs.com/uchihaitachi/archive/2012/08/16/2642720.html

  3. 机器学习笔记5-Tensorflow高级API之tf.estimator

    前言 本文接着上一篇继续来聊Tensorflow的接口,上一篇中用较低层的接口实现了线性模型,本篇中将用更高级的API--tf.estimator来改写线性模型. 还记得之前的文章<机器学习笔记 ...

  4. Python机器学习笔记:使用Keras进行回归预测

    Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

  5. Python机器学习笔记:sklearn库的学习

    网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...

  6. Python机器学习笔记:不得不了解的机器学习面试知识点(1)

    机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...

  7. 机器学习笔记(4):多类逻辑回归-使用gluton

    接上一篇机器学习笔记(3):多类逻辑回归继续,这次改用gluton来实现关键处理,原文见这里 ,代码如下: import matplotlib.pyplot as plt import mxnet a ...

  8. 【转】机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)

    原文链接:https://blog.csdn.net/gwplovekimi/article/details/80288964 本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读 ...

  9. cs229 斯坦福机器学习笔记(一)-- 入门与LR模型

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Dinosoft/article/details/34960693 前言 说到机器学习,非常多人推荐的学习资 ...

随机推荐

  1. 基于RTP的H264视频数据打包解包类

    from:http://blog.csdn.net/dengzikun/article/details/5807694 最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打 ...

  2. 给Java新手的一些建议----Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  3. 对Spring IoC容器实现的结构分析

    本文的目标:从实现的角度来认识SpringIoC容器. 观察的角度:从外部接口,内部实现,组成部分,执行过程四个方面来认识SpringIoC容器. 本文的风格:首先列出SpringIoC的外部接口及内 ...

  4. angular+rails集成实战

    http://start.jcolemorrison.com/setting-up-an-angularjs-and-rails-4-1-project/ 1. 添加gemgem 'sprockets ...

  5. 【转】STL空间配置器

    STL空间配置器(allocator)在所有容器内部默默工作,负责空间的配置和回收.STL标准为空间配置器定义了标准接口(可见<STL源码剖析>P43).而具体实现细节则由各编译器实现版本 ...

  6. hdu 2457(ac自动机+dp)

    题意:容易理解... 分析:这是一道比较简单的ac自动机+dp的题了,直接上代码. 代码实现: #include<stdio.h> #include<string.h> #in ...

  7. Devexpress GridControl中combobox级联显示 z

    http://minmin86121.blog.163.com/blog/static/4968115720143163533356/ 在 使用GridControl时,可能会有需求要求某2列显示co ...

  8. Delphi读取Word

    Delphi读取Word现在关于往Word中写入数据的方法比较多,现在专门开个贴子,希望大家把自己读取Word内容的心得体会说一下,包括读取word文档中,有几个段落,如何读取第几个段落,读取有拼音的 ...

  9. POJ 1195- Mobile phones(二维BIT)

    题意: 矩阵上的单点更新,范围求和 #include <map> #include <set> #include <list> #include <cmath ...

  10. POJ2976 Dropping tests 01分数规划

    裸题 看分析请戳这里:http://blog.csdn.net/hhaile/article/details/8883652 #include<stdio.h> #include<a ...