机器学习笔记之遗传算法(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 前言 说到机器学习,非常多人推荐的学习资 ...
随机推荐
- linux - 开机启动thunderbird、chromium
cd ~/.config/autostart/(没有autostart,自己 mkdir autostart) vim thunderbird.desktop,输入以下: [Desktop Entry ...
- IOS block 记录
1.需要使用 @property(....,copy) 而不是其他的 2.self.request=[ASIHTTPRequest requestWithURL:[NSURL URLWithStrin ...
- 我喜欢的乐队-Euphoria
来自日本的后摇乐团,001年冬天由森川裕之.佐藤昭太.木下阳辅三人于东京组建,2003年签约日本独立厂牌123Record,并发行首张EP细碟<Floral Dew>.包括EP.Singl ...
- 在这个年纪,打DOTA冲分有那么可笑么?
大学四年,毕业两年,6年dota,总是在最无助的时候让心灵得到一丝安宁的东西,烟和dota. 我不知道dota对别人的意义是什么,一盘dota,在最多不超过1个半小时的时间里,仿佛经历了一个小人生,每 ...
- 如何在 Windows Azure 的虚拟机 ubuntu 上面安装和配置 openVPN(一)
这篇文章,既是写给大伙儿的,也是写给自己的.本文要求读者需要有一定的英文基础和动手能力. 因为有MSDN subscriptions,所以每个月有100$可以使用windows azure,于是想尝试 ...
- 链表回文串判断&&链式A+B
有段时间没有练习了,链表回文串判断用到了栈.链式A+B将没有的项用0补充.链表有没有头节点,及结点和链表的区别,即pNode和pHead. //#include<iostream> //u ...
- Camera图片特效处理综述(Bitmap的Pixels处理、Canvas/paint的drawBitmap处理、旋转图片、裁截图片、播放幻灯片浏览图片<线程固定时间显示一张>)
一种是直接对Bitmap的像素进行操作,如:叠加.边框.怀旧.(高斯)模糊.锐化(拉普拉斯变换). Bitmap.getPixels(srcPixels, 0, width, 0, 0, width, ...
- java开发者最常去的20个英文网站
java开发者最常去的20个英文网站: 1.[http://www.javaalmanac.com] Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的 ...
- 我从其他人的Shell脚本中学到的
我从其他人的Shell脚本中学到的 2013/08/20 | 分类: 程序员 | 2 条评论 | 标签: SHELL, 脚本 分享到:17 本文由 伯乐在线 - 伯乐在线读者 翻译自 Fizer Kh ...
- Python 发送邮件包含附件报表示例
之前需要用Python发送报表邮件,在网上找了下资料,基本上符合要求了. 相关的示例如下,懂python的人应该都知道. from email.mime.text import MIMEText fr ...