浅谈对算法收敛性以及收敛速度的理解

最近在看资料时,遇到了这样的说法“某某算法具有收敛快的优点”,于是便有点疑惑:收敛不是函数或者数列才有的概念吗?用到算法上是代表什么意思呢?遂查阅资料,将一点理解记录如下。

 

算法收敛性

算法的收敛性就是指某个算法能否在迭代时间趋于无穷的假设下,最终找到问题的全局最优解。这里有一点要明确:算法收敛性是迭代法中的一个概念,所以主要针对跟迭代相关的算法,如进化算法。对于能够一次求解的直接法,就不在算法收敛的讨论范围之内了。

 

算法收敛速度

知道了算法收敛性的含义,再来理解算法收敛速度就比较容易了。百度百科对算法收敛速度是这样解释的:

数值分析中, 一个收敛序列向其极限逼近的速度称为收敛速度(Rate of convergence). 该概念多用于最优化算法中; 其被定义为一个迭代序列向其局部最优值逼近 (假设计算过程收敛, 并能达到最优值) 的速度, 是评价一个迭代法于该问题中发挥的性能的一个重要指针。

说白了,算法收敛速度就是指算法需要经过多少次迭代才能得到最优解。很明显,有些算法的收敛性好,有些算法的收敛性差,所谓收敛性好就是收敛得快,快速收敛的意义就是使用较少的迭代次数便可得到相对精确的值,或者说是在允许的时间内得到满意结果。因此,能以较快速度收敛于最优解的算法,才能称得上一个好算法。

 

最后再贴一段关于收敛性的论述来帮助理解:

仅仅知道算法是收敛的还远远不够,收敛性的结论是建立在无穷迭代时间基础上的,而实际应用中的计算迭代时间是有限的。收敛性研究只能回答进化算法在迭代无穷次后最终会不会找到全局最优解,而不能回答算法实际究竟要花多长时间(迭代多少次)才能找到最优解,很难在实践中用于指导算法设计和改进。

 

关于如何证明一个算法的收敛性以及对收敛速度的分析,有兴趣的可以看以下资料:

1.https://xueshu.baidu.com/usercenter/paper/show?paperid=f70e65d2b08ddb59a2602e9ff1593033&site=xueshu_se

2.https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&dbname=CDFD1214&filename=1013320373.nh&v=Mdg9jxBMyFAAVIXJAHoc4RLlqgHadtKNiNI9aJBOO6JygAqnN6SovcLK56hCzkrY

3.https://blog.csdn.net/q__y__L/article/details/51834694?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

 

参考资料:

  1. https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&dbname=CDFD1214&filename=1013320373.nh&v=Mdg9jxBMyFAAVIXJAHoc4RLlqgHadtKNiNI9aJBOO6JygAqnN6SovcLK56hCzkrY
  2. https://baike.baidu.com/item/%E6%94%B6%E6%95%9B%E9%80%9F%E5%BA%A6/8853577?fr=aladdin
  3. https://bbs.csdn.net/topics/360149144?utm_medium=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control
  4. https://blog.csdn.net/q__y__L/article/details/51834694?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

 

几篇有关算法收敛性的文献分享:链接:https://pan.baidu.com/s/1QkyiKEzlFF7LF9JsaQOG7w      提取码:egef 

  • 45
    点赞
  • 199
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: K-means算法是一种常用的聚类算法,用于将数据集划分成K个不同的簇。该算法收敛性证明包括两个方面:目标函数的收敛和质心的收敛。 首先,我们来看目标函数的收敛性证明。K-means算法的目标函数是最小化每个数据点与其所属簇的质心之间的欧氏距离的总和。具体而言,我们定义目标函数为J,它等于所有数据点到其所属簇的质心的总距离。在训练过程中,我们不断更新簇的质心以最小化目标函数J。由于每一次迭代都会减小目标函数的值,所以目标函数会在有限的迭代次数内收敛到一个局部最小值。 其次,我们来看质心的收敛性证明。在每一次迭代中,我们根据每个数据点与当前质心的距离来更新质心的位置。在有限的迭代次数内,质心会向着使目标函数最小化的方向进行调整。当质心不再发生明显变化时,可以认为它们已经收敛到最优解了。 需要注意的是,K-means算法只能收敛到一个局部最优解,而不一定是全局最优解。这是因为初始质心的选择会影响算法的最终结果。为了克服这个问题,我们可以多次运行K-means算法并选择最优的结果。 综上所述,K-means算法在每次迭代中不断更新目标函数和质心,通过限定迭代次数来保证算法收敛性。然而,初始质心的选择会影响最终结果,所以需要多次运行算法来选择最优解。 ### 回答2: kmeans算法是一种常用的聚类算法,用于将数据集划分为若干个簇。其收敛性证明是通过证明算法的迭代过程最终会达到停止条件来完成的。 首先,kmeans算法的迭代过程包括两个主要步骤:选择初始的聚类中心和通过计算样本和聚类中心之间的距离将样本分配到最近的簇中。然后,根据分配的结果重新计算每个簇的聚类中心。接着,根据新的聚类中心,再次进行样本的分配和聚类中心的更新。这个过程不断重复直到满足停止条件,一般是簇中心不再发生明显的变化或者到达预定的迭代次数。 为了证明该算法收敛性,需要证明两个条件:1)每次迭代后,目标函数的值都会减小或保持不变;2)目标函数的值在有限的迭代次数内会达到最小值或稳定值。 第一个条件可以通过计算两次迭代之间的目标函数值,即簇内样本之间的距离之和,来验证。在每次迭代中,通过重新计算聚类中心的位置,可以使得样本和聚类中心之间的距离最小化,从而减小目标函数的值。 第二个条件可以通过设置最大迭代次数来保证,在有限次迭代后,算法会停止并达到最小值或稳定值。 因此,根据这两个条件,可以证明kmeans算法收敛的。需要注意的是,kmeans算法对于不同的初始聚类中心可能会收敛到不同的局部最优解,所以在使用kmeans算法时,选择合适的初始聚类中心很重要,以避免陷入局部最优解的情况。 ### 回答3: k-means算法是一种常见的聚类算法,其目标是将一组数据点分成k个簇,使得每个数据点与其所属簇的中心点的距离最小化。在每次迭代中,算法会将每个数据点分配到最近的簇,并更新簇的中心点。 k-means算法收敛性证明包括两个方面:目标函数的单调性和算法的终止条件。 首先,目标函数是每个数据点与其所属簇的中心点的距离的总和,其被定义为一个非负实数。在k-means算法中,每次迭代分配数据点到最近的簇,同时更新簇的中心点,这会减小目标函数的值。因此,目标函数在每次迭代中是单调递减的。当目标函数的值不再减小时,算法达到了一个局部最优解或全局最优解。 其次,k-means算法的终止条件是算法收敛的必要条件。在每次迭代后,可以计算两个相邻迭代之间目标函数的变化量,当变化量小于某个预定的阈值时,算法可以停止迭代。这是因为k-means算法通过每次迭代减小目标函数的值,当目标函数的变化量很小时,表示数据点与簇的中心点的距离不再发生显著变化,即算法已经收敛到一个局部最优解或全局最优解。 综上所述,k-means算法收敛性证明包括了目标函数的单调性和算法的终止条件。在每次迭代中,算法通过减小目标函数的值来不断优化聚类结果,当目标函数的变化量足够小时,算法停止迭代,达到了收敛的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值