分类目录归档:algorithm

多模式匹配算法 AC

1 AC 算法概况

AC 算法,即 Aho-Corasick 自动机算法,是两位创始人的名称凑出来的(国际惯例起名法了属于是,但是简称和强化学习里的 Actor-Critic 算法重名,需要注意区分~)

此算法的时间复杂度为O(n),与匹配字符串的数目无关,只跟被匹配字符串长度有关

特性:核心思想和[[1_study/algorithm/字符串类算法/单模式匹配算法 KMP]](建议先看懂这个)是一致的,都通过寻找字符串的内部规律,达到每次失配时的高效跳转,只不过AC算使用前缀

Read more

单模式匹配算法KMP

1 KMP 算法概况

KMP,全称为Knuth-Morria-Pratt,是三位创始人的名称凑出来的

KMP 算法是一种字符串匹配算法,时间复杂度 :O(n+m)

特性:字符串头部和尾部会有重复的部分,利用这部分信息,减少匹配次数

理解字符串的前缀和后缀

  • 把字符串切割成非空的两份,前面那份就是前缀,后面那份就是后缀
  • 所有前缀的可能性组成了前缀集合,所有后缀的可能性组成了后缀集合,比如”Harry”的前缀集合是{”H”, ”Ha”, ”Har”, ”Harr”},而”Potter”的后缀集合是{”otter”,

Read more

蒙特卡洛法

1 蒙特卡洛法

蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。

蒙特卡洛方法的名字来源于摩纳哥的一个城市蒙特卡洛,该城市以赌博业闻名,而蒙特卡洛方法正是以概率为基础的方法。与它对应的是确定性算法。

蒙特卡洛方法的原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬

Read more

模拟退火法

1 基本概念

模拟退火算法(Simulated Annealing,SA)的思想最早是由Metropolis等提出的。物理中固体物质的退火过程与一般的组合优化问题之间的相似性,SA是一种由物理退火过程启发的通用优化算法

模拟退火法的物理过程:

  • 加温过程:其目的是增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态
  • 等温过程:对于与周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行的,当自由能达到最小时,系统达到平衡状态
  • 冷却过程:使粒子热运动减弱,系

Read more

遗传算法

遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

遗传算法的关键要素:

  • 种群(population)代表问题可能潜在的解集的一个开始的
  • 一个种群由经过基因(gene)编码的定数目的个体(individua)组成

核心过程:

  1. 编码:实现从表现型到基因型的映射,同时构建初代种群
  2. 选择:在每一代,根据问题域中个体的适应度(fitness)选择个体
  3. 变异:借助于遗传学算子(genetic operators)进行组合交叉和变异,产生代表新解集的种群
  4. 演化:按照适者生存和优胜

Read more

最小二乘法

1 最小二乘法

狭义上的最小二乘法,主要针对线性回归问题,以残差平方和的总和最小为原则,化一般情况下,运用矩阵运算寻找最优的系数解,具体实现可参考1 线性回归的求解过程。

广义上的最小二乘法,增加了针对非线性问题的处理,围绕均方误差构建损失函数,使用迭代优化策略(比如梯度下降法)解决最小化优化问题

狭义最小二乘法的算法分析:

  • 求解方便,不需要迭代优化,可以直接通过矩阵运算求出解析解
  • 仅能处理线性回归问题,当特征维度高时矩阵求逆的运算成本偏高

Read more

支持向量机

支持向量机(support vector machine,简称为SVM)

  • 作为经典的有监督学习算法,常用于分类与回归分析问题中
  • 支持向量机有着完备而优雅的数学理论,并且计算成本低效果好
  • 在集成学习与深度学习流行前,SVM 在很多领域都是非常主流的算法

SVM 算法图解:

  • SVM 核心思想在于通过寻找一个超平面,尽可能的分隔不同类别间的样本
  • 支持向量(support vector):用于确定超平面边缘的部分样本

SVM 借助核技巧将输入隐式映射到高维特征空间中,从而有效地进行非线性分类

常见的核函数:

核函数 表达式 备注
Linear Kerne

Read more

树算法族

1 决策树

决策树通过树结构存储判断流程和规则,实现复杂规则的有效记录

一般来说,树的非叶节点存储了判断逻辑,并通过树分支表达多个判断结果 通过自上而下的多层逻辑判断,最终在叶节点输出预测的分类结果

决策树示例:

1.1 决策树ID3算法

ID3算法主要利用信息增益进行特征的选择,并通过递归方法构建特征

  • 从根节点开始,计算所有特征的信息增益
  • 选择信息增益最大的特征作为此节点的判断逻辑,并构建子节点
  • 对子节点递归地调用以上方法,直到最大信息增益过低或没有特征停止递归

Read more

集成算法

1 集成学习概述

核心思想:三个臭皮匠顶个诸葛亮

集成学习三步走

  1. 特征抽取
  2. 反复建模(弱学习器)
  3. 模型集成(强学习器)

1.1 模型集成的策略

1.1.1 平均法

最终的预测输出 = 若干个弱学习器的预测输出的平均

1.1.2 投票法

最终的预测输出 = 若干个弱学习器的预测输出的投票结果

  • 常见的几种投票法
  • 相对多数投票法:少数服从多数

Read more

回归算法族

1 线性回归

面对$N$个形式为$(x_i,y_i)$样本组成的样本集,线性回归就是为了寻找形式为$y_{N\times1}=X_{N \times d}\theta_{d\times 1}$的线性方程,使其能最大程度拟合样本,而第一步便是建立线性回归的损失函数/目标函数: $$Loss(\theta)= (y-X\theta)^T(y-X\theta) $$

其中$y$表示真实值,$X\theta$表示的预测值,所以损失函数$Loss(\theta)$表示的便是真实

Read more