机器学习笔记之遗传算法(GA)
遗传算法是一种大致基于模拟进化的学习方法,假设常被描述为二进制串。在遗传算法中,每一步都根据给定的适应度评估准则去评估当前的假设,然后用概率的方法选择适应度最高的假设作为产生下一代的种子。产生下一代的办法有交叉和变异两种方法。
遗传算法和遗传编程是进化计算的两种普遍方法。
遗传算法原理
在遗传算法中各个假设首先表示成二进制位串。用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)的更多相关文章
- 用遗传算法GA改进CloudSim自带的资源调度策略(2)
遗传算法GA的核心代码实现: 最核心: private static ArrayList<int[]> GA(ArrayList<int[]> pop,int gmax,dou ...
- 机器学习笔记:Gradient Descent
机器学习笔记:Gradient Descent http://www.cnblogs.com/uchihaitachi/archive/2012/08/16/2642720.html
- 机器学习笔记5-Tensorflow高级API之tf.estimator
前言 本文接着上一篇继续来聊Tensorflow的接口,上一篇中用较低层的接口实现了线性模型,本篇中将用更高级的API--tf.estimator来改写线性模型. 还记得之前的文章<机器学习笔记 ...
- Python机器学习笔记:使用Keras进行回归预测
Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...
- Python机器学习笔记:sklearn库的学习
网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...
- Python机器学习笔记:不得不了解的机器学习面试知识点(1)
机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...
- 机器学习笔记(4):多类逻辑回归-使用gluton
接上一篇机器学习笔记(3):多类逻辑回归继续,这次改用gluton来实现关键处理,原文见这里 ,代码如下: import matplotlib.pyplot as plt import mxnet a ...
- 【转】机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)
原文链接:https://blog.csdn.net/gwplovekimi/article/details/80288964 本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读 ...
- cs229 斯坦福机器学习笔记(一)-- 入门与LR模型
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Dinosoft/article/details/34960693 前言 说到机器学习,非常多人推荐的学习资 ...
随机推荐
- I.MX6 show battery states in commandLine
#/bin/sh # I.MX6 show battery states in commandLine # 声明: # 在命令行下自动显示电池状态的信息. # # -- # set battery r ...
- H.264学习笔记之一(层次结构,NAL,SPS)
一 H.264句法 1.1元素分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 图1 H.264分层结构由五层组成,分 ...
- Android下二维码的扫描
Android平台下 二维码的扫描一般采用: Zxing:参考地址 Zxing功能比较强大,支持条形码和二维码的扫描,用的人也比较多,但是Zxing太大,一般开发简单的app,用起来比较麻烦. 所以网 ...
- T-SQL查询进阶-10分钟理解游标
转:http://www.cnblogs.com/CareySon/archive/2011/11/01/2231381.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的 ...
- Android-根据ImageView的大小来压缩Bitmap,避免OOM
本文转自:http://www.cnblogs.com/tianzhijiexian/p/4254110.html Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片 ...
- Android -- Support包特性
干货 每一个 Support 包版本后缀 vX 所代表的含义是他能够被使用的最低版本等级.之所以无法在更低版本进行使用的原因,是因为随着版本的升级,在新版本中有很多之前不支持的特性或者 API,因此如 ...
- 分布式发布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个分布式.分区的.多副本的.多订阅者的“提交”日志系统. 我们构建这个系统是因为我们认为,一个实现完好的操作日志系统是一个最基本的基础设施,它可以替代一些系统来作 ...
- linux命令——磁盘管理cd
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录. 1 ...
- 【Python】python读取文件操作mysql
尾大不掉,前阵子做检索测试时,总是因为需要业务端操作db和一些其他服务,这就使得检索测试对环境和数据依赖性特别高,极大提高了测试成本. Mock服务和mysql可以很好的解决这个问题,所以那阵子做了两 ...
- CodeForces 54C-First Digit Law(数位,概率dp)
题意: 给你n个区间,在每个区间里各取一个数(随机取),求这n个数中超过K%的数是首位为1数的概率 分析: dp[i][j]取前i个数,有j个是首位为1的数的概率 易知,dp[i][j]=dp[i-1 ...