zoukankan      html  css  js  c++  java
  • 机器学习部分算法简介

           机器学习作为数据挖掘、数据分析等领域的一个热点内容。通常,我们需要利用一些常用的算法来解决实际中的各种问题。机器学习中的算法较多,本文主要介绍几种经常用到的算法,同时来加深对此的理解。下面以Optimization、Cluster、Classification and Regression三大类介绍这些算法。


    Optimization

    1. Define

      本篇所提到的优化算法均为启发式的优化算法,这类优化算法并不依赖于具体问题本身。因此,对绝大多数场景都可“即插即用”。也正是因为这一点,这类算法在很多情况下都不是最优的算法。即对于具体问题而言,可能存在着其他更加高效率的算法。比如对于凸优化问题来说,最速下降法、牛顿法、共轭梯度法等经典的非线性最优化方法的效率会更高。

           本篇所提到的优化算法的优势在于,不需要对具体问题有很深入的了解就可以直接进行“暴力”解答。此外,这类算法由于不依赖于具体场景,所以十分适合进行其他机器学习算法的调参工作。

     

    2. Genetic Algorithm

      遗传算法是一种基于生物遗传和进化机制的、适合复杂系统优化的自适应概率的随机搜索算法,非常适应于处理传统搜索算法难以解决的复杂和非线性优化问题。遗传算法的核心思想是:该算法从随机产生的初始种群开始搜索,种群中每一个个体代表问题的一个解,称为染色体。染色体的好坏用适应度值来衡量,根据适应度值从上一代中选择一定数量的优秀染色体;之后通过交叉、变异等算法形成子代染色体。经过若干代的进化后,算法收敛于最好的染色体,即是问题的最优解或次优解。

      遗传算法的优势是:搜索过程从问题解的一个集合开始,而不是单个个体,具有隐含并行搜索特性,可以大幅度提高搜索效率;优化计算时算法不依赖于梯度信息,不要求目标函数连续且可导,更加适用于求解复杂的非线性组合优化问题。

      遗传算法参数优化的主要过程如下:

     

    3. PSO Algorithm

      粒子群算法也是一种仿生物算法,该算法源于对鸟类捕食行为的研究,从鸟类的种群行为特征中得到启发并应用于求解优化问题。粒子群算法的核心思想是:首先在可行解空间中初始化一群粒子,每个粒子用位置、速度和适应度值三项指标来表示该粒子的特征,且每个粒子都代表问题的一个潜在最优解。在搜索过程中,采用适应度函数计算每个粒子所在位置的适应度值;适应度值的好坏代表着粒子的优劣,好的粒子位置将被记忆。每个粒子通过跟踪自身记忆的个体最优位置和种群记忆的全局最优位置,逐渐逼近更优的位置。粒子每更新一次位置,就计算一次适应度值,来更新个体最优位置和群体的全局最优位置。随着迭代次数的增加,各粒子越来越相似,最终收敛于问题的最优解或次优解。

      相比于前面的遗传算法,粒子群算法没有应用复杂的编码技术和诸如交叉、变异等遗传操作,仅仅是在解空间追随最优的粒子进行搜索。其原理更为简单,需要调节的参数也更少,计算效率也相对更高。

      粒子群算法参数优化的主要过程如下:

     

    4. SA Algorithm (Simulated Annealing)

      模拟退火算法是基于物理中固体物质的退火降温过程,与一般组合问题的相似性所提出的一类通用的优化算法。模拟退火算法的核心思想是:通过模拟高温物体退火过程,找到优化问题的全局最优或近似全局最优解。该算法首先产生一个初始解作为当前解,然后在当前解的领域中,以概率1接受更优解,以概率接受更劣解。这就意味着随着优化过程的不断迭代,目标函数偶尔向不利的方向发展,从而保证不会陷入局部最优。随着参数T的调整,越来越低,最终算法以概率1稳定在全局最小或近似全局最小的区域。

      该算法的核心算法是Metropolis抽样算法,其基本算法如下:

      假定目标函数为,则当前解的目标函数值为,经过当前解的变换得到的新解的目标函数值为,,那么Metropolis抽样概率为:

     

      也就是说以概率1接受更优解,以概率接受更劣解。

      模拟退火算法的主要过程如下:

     

     

     

      此外模拟退火算法的Metropolis抽样准则常常用于遗传算法或粒子群算法,来防止陷入局部最优解。

  • 相关阅读:
    美化的滚动条
    网站系统开发参考网址
    正则表达式获取URL参数
    类实例 及 实例化对象 对象引用
    C# 静态方法 静态属性 调用静态方法
    C# 静态方法调用非静态方法
    winform 窗体间传值
    从数据库中读出数据并输出
    数据库链接字符串
    DbHelper
  • 原文地址:https://www.cnblogs.com/yancea/p/8311422.html
Copyright © 2011-2022 走看看