改进的算法
1. 如何改进SVM算法,最好是自己的改进方法,别引用那些前人改进的算法
楼主对于这种问题的答案完全可以上SCI了,知道答案的人都在写论文中,所以我可以给几个改进方向给你提示一下:
1 SVM是分类器对于它的准确性还有过拟合性都有很成熟的改进,所以采用数学方法来改进感觉很难了,但是它的应用很广泛 SVMRank貌似就是netflix电影推荐系统的核心算法,你可以了解下
2 与其他算法的联合,boosting是一种集成算法,你可以考虑SVM作为一种弱学习器在其框架中提升学习的准确率
SVM的本身算法真有好的改进完全可以在最高等级杂志上发论文,我上面说的两个方面虽然很简单但如果你有实验数据证明,在国内发表核心期刊完全没问题,本人也在论文纠结中。。
2. 改进值怎么算
使用残差网络来计算,从神经网络来讲,经典信号分析与神经网络的结合,是一种常见的算法改进思路。
3. C语言 简单改进一个算法
一般不会有人研究你的算法的,太复杂,思路也不同。
最好的办法就是你找一个别人的实现,然后对比一下效率慢慢改进自己的
4. Floyd算法的改进
判断连通可以在输入时作一下预处理
Floyd已经是DP的思想了.
可以有些小优化.但求一个图中任意两点的最短路径目前只有o(n^3)的算法
5. 什么是改进的chahine算法
Chahine 迭代算法是矩阵算法中的一种,这种算法的特点是收敛的速度很快,经过一定次数的迭代之后,就能得到一个较稳定的解。Chahine 非线性迭代算法迭代公式简便,收敛速度快,主要缺点是对噪声过于敏感。Ferri 提出的修正 Chahine 算法,在稳定性方面有改进,但收敛速度降低了。这两种算法对初值的选取要求很高,当初始值与实际分布相差远时,算法导致计算失败。
6. 排序算法使用(改进的)冒泡排序算法。
#i nclude <stdlib.h>
#i nclude <time.h>
void maopao(int source[],int n)
{
int start=0,end=n-1;
int i;
while(start<=end)/*如果还有元素没有确定其位置*/
{
for(i=start;i<end;i++)/*寻找剩余元素的最大数*/
if(source[i]>source[i+1])
{
int t;
t=source[i];
source[i]=source[i+1];
source[i+1]=t;
}
end--;/*找到最大数*/
for(i=end;i>start;i--)/*寻找剩余元素的最小元素*/
if(source[i]<source[i-1])
{
int t;
t=source[i];
source[i]=source[i-1];
source[i-1]=t;
}
start++;/*找到一个最小数*/
}
}
void output(int data[],int n)
{
int i;
for(i=0;i<n;i++)
{
if(i%10==0)
printf("\n");
printf("%4d",data[i]);
}
}
int check(int data[],int n)
{/*检查结果数据是否已升序排列*/
int i;
for(i=0;i<n-1;i++)
if(data[i]>data[i+1])
return 0;
return 1;
}
void main()
{
int data[500];
int i;
srand(time(NULL));
for(i=0;i<500;i++)
data[i]=random(500);
printf("\nThe original data is:\n");
output(data,500);
maopao(data,500);
printf("\nAfter sort:\n");
output(data,500);
printf("\n");
if(check(data,500)==1)
printf("\nRight.");
else
printf("\nWrong.");
}
7. A*算法如何改进
十万火急:此改进的模糊C-此函数实现遗传算法,用于模糊C-均值聚类 %% A=farm(:,Ser(1)); B=farm(:,Ser(2)); P0=unidrnd(M-1); a=[
8. 鲍威尔方法的基本算法与改进算法的区别
鲍威尔基本算法的问题在于,可能发生退化问题,具体而言就是可能在某一环迭代中出现基本方向组线性相关的情况,这种情况下按新方向替代第一个方向的方法进行替换,就会导致搜索在降维的空间中进行,无法得到原本n维空间的函数极小值,计算将失败。
而改进的方法和原来方法本质区别在于替换方向的规则不同。改进的方法,能够保证每轮迭代中搜索方向都线性无关,而且随着迭代的延续,共轭的程度会逐渐增加。
具体展开比较复杂,简单来说就是每次产生了新生方向,都要判断一下这个方向好不好,如果不好就不换进来;如果觉得这个方向好,就看一下旧方向中哪个函数下降量最大,把这个下降量最大的方向替换掉。
9. 改进计算方法
在早期油气资源评价中,通常应用评价模型,对各参数仅取一个固定值进行简单的运算,所得结果也是一个值。实际上,对于地下评价对象,其大多数参数具有时空变化性,用一个固定值,不管是统计所得均值还是其他值,都很难代表该参数,更无法准确刻画该参数的时空非均质性。在这种情况下,很显然应用单值运算得到的结果很难反映地下评价对象的客观实际。因此,为提高评价质量和结果可信性,必须改进计算方法。
14.4.1 应用网格化方法逼近资源分布
这种方法的基本思路是:
(1)根据大量观测点数据,编制各单一参数的平面分布图,通常为平面等值线图,如生油岩等厚图等,个别为分区等级图,如演化程度图。以这些平面分布图简化表示各参数空间变化,主要是把各参数的垂向变化,用平均值简化为非变化的固定值,如所谓生油岩有机质丰度等值线图,即是把各点垂向上有机质丰度变化简化为非变化的固定值。(2)在平面上建立固定的网格,其网格一般是按均匀法设置,但也可用非均匀网格,网格的多少视各变量平面变化快慢、计算机速度和容量而定。原则上是网格越多、越细就越准确地刻画参数平面变化情况。
(3)以同一网格在各参数分布图上读取网格结点(或网格中点)上参数具体数值。
(4)针对每一个网格结点(或网格中点),按照资源评价模型,分别计算生烃量、排烃量等,然后编制生烃量、排烃量等值线图。
(5)依据各等值线间距所占面积,计算该间距所占的生烃量、排烃量等,再累加得全区生烃量、排烃量。乘以相应运聚系数即得全区资源量。
14.4.2 蒙特卡洛法
所谓蒙特卡洛法是一种数值计算方法,其含义是利用随机抽样方法在各参数分布曲线取定数值,然后根据评价模型进行运算,结果得到一定值,反复如上过程成千上万次,结果就有成千上万个定值,再将这些定值进行统计,得到结果分布曲线。该方法已广泛应用于油气资源评价,其优点是:以一个分布曲线来逼近地下评价对象及较可能值、最可能值。这更加符合人们对地下评价对象的认识过程和局限性、不确定性。
该方法的计算步骤如下:
(1)通过资料处理解释、分析化验、图件读取等方法,产生和采集、整理各参数的数据,原则上是越多越好。同时剔除奇异点。
(2)根据整理的数据,统计建立各参数概率分布曲线。当数据较多,如多于几十个时,统计分布曲线代表性强、可靠性高。但当数据少到只几个或十余个时,可依据该参数的分布概型(一般是经验已知的分布模型,如正态分布、对数正态分布等),构造实际的分布曲线。但当数据少到只几个且其分布概型也不确定时,最好用均匀分布或三角分布代替其分布。
(3)利用计算机产生随机数,其中最简单最基本的是均匀分布随机数。要求随机数产生后必须经过严格的检验(如均匀性检验、独立性检验、组合规律性检验、连续性检验等),性质符合要求时方可投入使用。随机数个数越多越好,最好成千上万。随机数值区间为0~1。
(4)以随机数值为概率入口值,用插值法在某一参数分布取该概率所对应的参数值(图14-1)。再用另一个随机数值在另一参数分布曲线上求取该参数值(图14-2)。以此类推。再将所求取的各参数的值(一个参数只一个值)按评价模型相乘除或加减,得到一个结果(图14-3)。反复此过程,得到成千上万个结果。
图14-1 抽样计算过程示意图
(5)再将所得结果进行数理统计,得到结果概率分布图(图14-3)。一般而言,蒙特卡洛计算所用参数概率分布可以是各种各样,但其结果分布一般都是正态分布或对数正态分布。
图14-2 多参数抽样计算过程示意图
图14-3 蒙特卡洛计算过程示意图
14.4.3 模糊数学计算方法
在一些研究对象中,不同事物的界线是截然不同的,如水可以有冰、水、汽三种形态,其界限一般是明确的;而在某些对象,不同事物之间的界限是不明确的,例如在石油地质中,储层的“渗透性好”和“渗透性差”是两个截然不同的概念,但有时对于某个具体的对象,要把它归到“渗透性好”或“渗透性差”却不容易。模糊数学用隶属度来描述这种情况,即用数值来表示某对象属于某事物的程度,一个对象可以“属于”两类甚至两类以上事物,分别以两个隶属度描述它属于这两类事物的程度,这样,较合理地解决了这类问题。
当用模糊数学评价圈闭的含油气性时,即用一个向量来表示一个圈闭:
油气资源评价方法与实践
研究对象含k个圈闭,则用集合Ui来表示这个圈闭群:
油气资源评价方法与实践
n个地质因素在评价圈闭的含油气性中起的作用不同,各因素用一个权ai值表示其在评价中的作用大小:
油气资源评价方法与实践
每个地质因素用m个级别来表示其有利程度:
油气资源评价方法与实践
Ci是用整数表示的一种属性,其具体值依m不同而异。
当m=3时,C=[-1 0 1]
当m=5时,C=[-2-1 0 1 2]
当m=7时,C=[-3-2-1 0 1 2 3]
一个圈闭的某个地质因素用它对各属性的隶属度来表示(如表14-1)。
表14-1 地质因素各属性的隶属度表
对一个圈闭用n个变量来描述,每个变量的表述将转变为一个向量,而一个圈闭原来用一个向量表示,将变为用综合评价变换矩阵R表示:
油气资源评价方法与实践
用各地质因素的权和各圈闭的综合评价变换矩阵算出各圈闭的综合评价,这个计算过程称为合成:
油气资源评价方法与实践
式中h是样品号,Rh是第h号样品的综合评价变换矩阵,Bh是n(变量数)个数构成的向量,其各元素为
油气资源评价方法与实践
这里,○表示某种算法,这些算法都是由下列4种基本算法演化出来的(假设a、r为模糊集合中的两元素)。
1)a∨r=max(1,r)
2)a∧r=min(a,r)
3)a·r=ar
4)a⊕r=min(a,1+r)
按照这样合成得出一个样品向量,然后计算综合评价值(综合得分)D:
油气资源评价方法与实践
结果为一个数。各圈闭按其D值排队,就是这些圈闭的优劣排队。每采用一个合成法,就有一个B,相应有一个D值,就有一个排队,因为B的产生方法不同,各变量值所起作用不尽相同,同样的原始数据会有不同的排队结果。
14.4.4 神经网络计算方法
人工神经网络是指由大量与自然神经系统的神经细胞相类似的(人工)神经元互联而成的网络。
神经网络的结构和特性是由神经元的特性和它们之间的连接方式决定的。人工神经元之间通过互联形成网络。互联的方式称为连接模式。神经元之间的连接强度为连接权。当网络的连接权矩阵确定后,网络的连接模式也就确定了。
在人工神经网络中,信息处理过程或存贮知识的改变是通过修改神经元间的连接模式来完成的。这一修改过程称做神经网络的训练或学习。不同的权矩阵调整方式,就是不同的学习方式。
神经网络的学习和神经网络的结构没有一一对应的关系。不同的神经网络可以采用相同的学习算法进行训练;同一神经网络也可以采用不同的学习算法进行训练。
一般采用多层前向神经网络,用误差反传(BP)算法。
对于一个由3层组成的神经网络模型,第一层为输入层,第二层为中间层,第三层为输出层。第一层的神经元数为n,中间层的神经元数为1,第三层的神经元数为1。
第1层为输入层,由M个样品的n个神经元组成,约定第k个样品(圈闭)的输入,即第1层神经元为:xk1,xk2,…,xkn,相应的输出为Tk,其中,k为样品号,k=1,2,3,…,M,n为神经元数,在此可理解为自变量数。
第2层为隐层,其神经元数1是用户设定的,由x与权系数矩阵W2相乘算出,第k个样品的中间层为
油气资源评价方法与实践
F(t)采用S型(Signmoid)压缩函数:
油气资源评价方法与实践
为了能控制u的取值,把第一式改为:x0=-1,w0j=ξ,记
油气资源评价方法与实践
则第二式成为
t的值除与Wij,xi有关外,还与变量数n有关,为了让的值在0~1的范围内,就需要
油气资源评价方法与实践
给一个适当的ξ值。
中间层到输出层的计算与此相仿。只是它用另外一个W(矩阵)。
如果找到合适的W(两个W阵),则由输入的各样品的X算出各样品的y值应与原样品的输出值T相同或很接近。我们的任务就是要求这两个W阵。
油气资源评价方法与实践
开始的W阵是随机产生的。当然它算出各样品的y不会等于T。我们用E(W)来衡量它的偏差:
油气资源评价方法与实践
当E(W)<ε时,学习完成。当E(W)>ε时,就要修改两个W阵,让E(W)逐渐变小,就现在的这个模型(一共有3层,输出层只有一元)来说,修改W分两步,第一步修改由u计算y的W,第二步修改由x计算u的W。
油气资源评价方法与实践
油气资源评价方法与实践
这样,每次根据算出的y来指导修改两层的W阵,直至E(W)<ε,学习完成。
学习完成后,得到两个W阵,把待判样品的x向量按既定的模式计算可得各样品的y值,为具体对象的评价。
10. 如何改进算法,提高程序效率
从根本上了解算法是怎么执行的,这样可以做到一通百通。
一般来说,降低时间复杂度是比较好的方法。 有时候,占用更多的内存可以帮助程序更快的运行。还有就是选用效率高的语言,例如C。