随机算法

7天入门机器学习总结

人走茶凉 提交于 2019-11-28 09:44:39
初识机器学习 机器学习的概念 机器学习是一种从数据当中发现复杂规律,并且利用规律对未来时刻、未知状况进行预测和判定的方法。机器学习是一种从数据当中发现复杂规律,并且利用规律对未来时刻、未知状况进行预测和判定的方法。 机器学习的类型 按学习方式分为三大类 监督学习(Supervised learning):从给定的训练数据集(历史数据)中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集需要包括输入和输出,也可以说是特征和目标/Label。训练集中的目标是由人标注的。 非监督学习(Unsupervised learning):与监督学习相比,输入的数据没有人为标注的结果,模型需要对数据的结构和数值进行归纳。 强化学习(Reinforcement learning):输入数据可以刺激模型并且使模型做出反应。反馈不仅从监督学习的学习过程中得到,还从环境中的奖励或惩罚中得到。 机器学习的一般过程 机器学习是一个由数据建立模型的过程。 首先是对训练数据进行数据处理,选择算法进行建模和和评估,再对算法进行调优,最后得到一个模型。 数据处理到算法调优这个过程是一个不断完善、循环往复的过程,这个过程相当于做实验,直到得出一个在接受度范围内的模型,但是这个过程是可以被一些先验经验指导的,需要识别问题、识别场景、算法原理掌握等等。 机器学习中的数据处理 样本级数据处理

机器学习(十四):深度学习梯度优化算法(SGD \\ SGD-M \\ NAG \\ AdaGrad \\ RMSProp \\ Adam )

耗尽温柔 提交于 2019-11-28 05:08:56
1.随机梯度下降算法(Stochastic Gradient Descent, SGD) 2.使用动量的随机梯度下降算法(Stochastic Gradient Descent - Momentum, SGD-M) 3.使用Nesterov动量的随机梯度下降算法(Nesterov Accelerated Gradient, NAG) 4.AdaGrad算法 5.RMSProp算法 6.Adam算法 ———————————————— 来源: https://www.cnblogs.com/pengfeiz/p/11393125.html

理解分布式系统常用的负载均衡算法

拈花ヽ惹草 提交于 2019-11-27 22:48:15
分布式系统常用的负载均衡算法 最近在做的系统上使用ES比较多,出于对ES的学习,在了解了ES的负载均衡算法之后,也相应的了解了其它的负载均衡算法,在这里做一个分享。 1:轮询法: 轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的性能代价也是相当大的。为了保证pos变量的并发互斥,引入了重量级悲观锁synchronized,将会导致该轮询代码的并发吞吐量明显下降。 2:随机法: 通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。由概率统计理论得知,随着调用量的增大,其实际效果越来越仅仅与平均分配流量到后台的每一台服务器,也就是轮询法的效果。 3:随机轮询法: 随机轮询,就是将随机法和轮询法结合起来,在轮询节点时,随机选择一个节点作为开始位置的index,此后每次选择下一个节点来处理请求,即(index+1)%size。 这种方式只是在选择第一个节点使用了随机方法,其他与轮询法无异,缺点和轮询一样。 4:源地址哈希法: 源地址哈希的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。采用源地址哈希法进行负载均衡,相同的ip客户端

游戏开发中的噪声算法

好久不见. 提交于 2019-11-27 06:22:22
目录 噪声 随机性 哈希性 平滑性 柏林噪声 原理 实现(二维) Simplex噪声 原理 实现(二维) Value噪声 原理 实现(二维) 可平铺的噪声 分形噪声 结语 噪声 噪声是游戏编程的常见技术,广泛应用于地形生成,图形学等多方面。 那么为什么要引入噪声这个概念呢?在程序中,我们经常使用直接使用最简单的rand()生成随机值,但它的问题在于生成的随机值太“随机”了,得到的值往往总是参差不齐,如下图使用随机值作为像素点的黑白程度: 而使用噪声,我们得到的值看起来虽然随机但平缓,这种图也看起来更自然和舒服: 而根据wiki,现在噪声类型已经有很多种类: 类别 名称 基于晶格的方法(Lattice based) Perlin噪声,Simplex噪声,Wavelet噪声,Value噪声 基于点的方法(Point based) Worley噪声 本文主要说明Perlin噪声,Simplex噪声,Value噪声这三种常见的噪声。 随机性 随机性是噪声的基础,不必多说。 哈希性 在《Minecraft》里,由于世界是无限大的,它以“Chunk”区块(25×25×100格子)为单位,只加载玩家附近的区块。也就是说,当玩家在移动时,它会卸载远离的区块,然后加载靠近的区块。 一个问题是,当玩家离开一个区块时,进入第二个区块,然后又回到第一个区块,此时玩家期望看到的第一个区块和之前看到的保持一致

机器学习系列 | 线性回归模型(简单线性回归、局部线性回归、非线性关系)

爷,独闯天下 提交于 2019-11-26 15:50:54
1.什么是线性回归? 线性回归是试图在一堆数据中训练得到自变量x和因变量y中一组线性关系,如 y = w x + b y=wx+b y = w x + b 。例如把人脚底板长度作为自变量,身高作为因变量,那么在这两种数据之间就可以做一个简单线性回归,可以得到脚底板长度和身高的关系式。 维基百科:线性回归 在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。 周志华:机器学习 基于均方误差最小化来进行模型求解的方法称为“最小二乘法”,线性回归中最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。 2. 线性回归的目标函数 要想求得这组线性关系,即求得相应的回归系数的值。那么先讲解一下线性回归的目标函数。 假设一堆数据中因变量为y,自变量为 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x 1 ​ , x 2 ​ , . . . , x n ​ ,对其进行线性回归,求得结果会如下所示: y = w 0 + w 1 x 1 + w 2 x 2 + . . . + w n x n = ∑ i = 0 n w i x i = w T x y=w_0+w_1x_1+w_2x_2+...+w_nx_n=\sum_{i=0}^nw_ix_i=w^Tx y = w 0 ​ + w 1 ​

常用的集成学习方法

夙愿已清 提交于 2019-11-26 00:45:37
集成学习是构建一组基学习器,并将它们综合作为最终的模型,在很多集成学习模型中,对基学习器的要求很低,集成学习适用于机器学习的几乎所有的领域: 1、回归 2、分类 3、推荐 4、排序 集成学习有效的原因 多样的基学习器可以在不同的模型中取长补短 每个基学习器都犯不同的错误,综合起来犯错的可能性不大 但是想同的多个基学习器不会带来任何提升 集成学习示例: 例如在上图中每个线性模型都不能成功将该数据集分类 但是三个线性模型的简单综合即可将数据集成功分类,每个模型犯不同的错,但是在综合时能够取长补短,使得综合后的模型性能更好。 那么如何构建不同的基学习器?如何将基学习器综合起来? 如何构建不同的学习器 1、采用不同的学习算法 2、采用相同的学习算法,但是使用不同的参数 3、采用不同的数据集,其中采用不同的样本子集,在每个数据集中使用不同的特征 如何综合不同的基学习器 1、投票法 每个基学习器具有相同的权重 2、有权重的投票 可用不同的方法来确定权重 3、训练一个新模型来确定如何综合 stacking 我们一般偏好简单的模型(线性回归) 主要的集成学习模式有以下几种 1、bagging random forest(随机森林) 2、boosting adaboost GBDT 3、stacking bagging 在集成算法中,bagging

分布式系统常见负载均衡算法及其nginx实现

情到浓时终转凉″ 提交于 2019-11-25 18:48:03
一、概要 随着系统日益庞大、逻辑业务越来越复杂,系统架构由原来的单一系统到垂直系统,发展到现在的分布式系统。分布式系统中,可以做到公共业务模块的高可用,高容错性,高扩展性,然而,当系统越来越复杂时,需要考虑的东西自然也越来越多,要求也越来越高,比如服务路由、负载均衡等。此文将针对负载均衡算法进行讲解,不涉及具体的实现。 二、负载均衡算法 在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,消费者通过查询服务配置中心,获取到服务到地址列表,需要选取其中一台来发起RPC远程调用。如何选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。负载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法、Latency-Aware等,应根据具体的使用场景选取对应的算法。 1、轮询(Round Robin)法 轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的代价性能也是相当大的。为了保证pos变量的并发互斥,引入了重量级悲观锁synchronized,将会导致该轮询代码的并发吞吐量明显下降。 轮询法适用于机器性能相同的服务,一旦某台机器性能不好,极有可能产生木桶效应