基于遗传编程(Genetic Programming)的符号回归(Symbolic Regression)简介
来源:互联网 发布:淘宝店铺客服上班时间 编辑:程序博客网 时间:2024/06/10 10:53
本学期加入了数学代数系统Mathumu协会的内核开发部。
Mathmu这个项目,简单地说,就是开发清华人(中国人)自己的Mathematica。
以Mathematica为目标可能显得有些不自量力。达到甚至超越Mathematica不可能是我们这几十个学生在段时间内就能够做到的,但谁知道呢?Linus Torvalds当初(1991)写Linux的时候难道也预计到如今Linux得到如此广泛的应用吗?
我加入协会的第一项工作,结合了我自己的兴趣和项目的愿景,是为Mathmu开发一个基于遗传编程(Genetic Programming)的符号回归(Symbolic Regression)模块。
这里有两个各位可能觉得陌生的术语:遗传编程和符号回归。
遗传编程,简而言之,就是让计算机程序,像生物一样,变异、交配、繁殖,最终演化成符合特定的需求的程序。
Wikiepedia是这样介绍的:“In artificial intelligence, genetic programming (GP) is an evolutionary algorithm-based methodology inspired by biological evolution to find computer programs that perform a user-defined task. It is a specialization of genetic algorithms (GA) where each individual is a computer program. It is a machine learning technique used to optimize a population of computer programs according to a fitness landscape determined by a program's ability to perform a given computational task.”
符号回归,是相对于“数值”回归(Numerical Regression)而言的,即统计中的回归分析,比如我们熟悉的线性回归。回归分析通常要首先假设问题所服从的函数的形式及其参数,然后根据数据求得最符合的一组参数,从而最终确定函数。可以看到,应用回归分析的人员需要对问题领域有比较深入的了解,这样才能给出一个“合理”的函数形式。而当问题很复杂或者研究人员对其认识程度有限时这往往是难以做到的。
这时符号回归就可以派上用处了。符号回归是遗传编程最早的一类应用之一。符号回归的终结符集合(terminal set)主要由运算符(比如+, -, *, /, sin, cos, log等等),随机数和变量(x0, x1, .., xn)组成。这里,演化的程序就是一串终结符(代表函数y=f(x0, x1, x2, ..., xn))。我们希望最终得到的程序,即y=f(x0, x1, ..., xn),能够尽量符合给定的数据集。注意,与回归分析不同的是符号回归完全没有假定函数的形式,实际上,符号回归(包括遗传编程,甚至整个计算智能(Computational Intelligence)和演化计算(Evolutionary computing)领域)的目标就是全自动地发现知识、模式和规律。
参考文献:
- A field guide to genetic programming:一本入门的书,09年新出,基本介绍之后总结了该领域20多年的主要进展、方向和应用。
- Genetic Programming系列:John Koza写的,他是这个领域的鼻祖级人物,目前已经出版4本。
网络资源:
- Symbolic Regression:A Overview:对符号回归的一个简短的介绍
- Example Run of Genetic Programming:John Koza书上的一个很好的例子,给你对遗传编程的直观感觉
- 基于遗传编程(Genetic Programming)的符号回归(Symbolic Regression)简介
- Eureqa Formulize从实验数据中自动筛选函数关系的symbolic regression符号回归软件
- H.264 无参考视频质量评价方法 (使用了基于遗传编程方法的符号回归)
- 简单的遗传算法(Genetic Algorithm)源代码
- Genetic Programming
- 【scala】【spark】基于随机梯度下降的简单线性回归编程实现:Linear Regression - SGD
- 【Breeze】【Scala】基于梯度下降的简单逻辑回归编程实现 Logistic Regression - GD
- 遗传算法 Genetic Algorithm
- 遗传算法--genetic algorithm
- 遗传算法(Genetic Algorithm)
- 遗传算法Genetic Algorithm
- 遗传算法(Genetic Algorithm)
- 基于Tensorflow实现基本的线性回归(Linear regression)
- 基于R语言的分位数回归(quantile regression)
- 简单的遗传算法(Genetic algorithms)-吃豆人
- 遗传编程简介链接
- 符号对象(Symbolic Object)的使用
- 遗传算法(Genetic Algorithm,GA)
- 人工神经网络(ANN)
- c#学习总结
- 根据二叉树的前序和中序获得后序,后序和中序获得前序
- C#中pictureBox重绘、Timer控件、选择文件夹、响应键盘
- Linux珍藏系列图书
- 基于遗传编程(Genetic Programming)的符号回归(Symbolic Regression)简介
- Ext.Component 源码阅读笔记
- linux学习笔记
- myeclipse jquery提示spket插件支持
- 没有人际关系你的才能如何发挥
- 初识动态网站
- 我的小日记
- [44.018]Radio Resource Control (RRC) protocol(Release 5) ---- Scope篇
- MyEclipse支持Jquery的自动提示