算法

【转载】AutoML研究分析

自作多情 提交于 2020-02-14 00:56:13
参考简书文章 AutoML研究分析 ,少有改动 文章目录 1. Auto Keras 2. 其它AutoML产品(工具包) 2.1 AutoWEKA 2.2 Auto-sklearn 2.3 H2O AutoML 2.4 Google Cloud AutoML 3. AutoML实现原理分析 3.1 NAS 3.1.1 搜索空间 3.1.2 搜索策略 3.1.3 性能评估策略 3.1.4 NAS未来的方向 3.1.5 NAS的演进 3.2 Hyper-parameter optimization 3.3 Meta-Learning 3.4 算法相关 3.4.1 强化学习 3.4.2 进化算法 3.4.3 贝叶斯优化 4. AutoML应用场景 参考材料 AutoML全称是automated machine learning,下面有一段AutoML不是什么的描述: AutoML is not automated data science. While there is undoubtedly overlap, machine learning is but one of many tools in the data science toolkit, and its use does not actually factor in to all data science tasks.

图论算法-最小生成树

和自甴很熟 提交于 2020-02-14 00:28:29
图论算法-最小生成树 在一个无向图中找出一颗 最小生成树(minimum spanning tree) ,这个问题对有向图也是有意义的,不过找起来更困难。最小生成树存在当且仅当图 G G G 是连通的。在最小生成树中边的条数为 ∣ V ∣ − 1 \left | V \right |-1 ∣ V ∣ − 1 。 Prim算法 在每一步,都要把一个节点当作根并往上边加。在算法的任一时刻,我们都可以看到一个已经添加到树上的顶点集,而其余顶点尚未加到这棵树中,此时,算法在每一阶段都可以通过选择边 ( u , v ) (u,v) ( u , v ) ,使得 ( u , v ) (u,v) ( u , v ) 的值是所有 u u u 在树上但 v v v 不在树上的边值中的最小者,而找出一个新的顶点并把它添加到这棵树中。 代码 这里使用的邻接矩阵。 void Prim ( Graph g ) { VertexType adjver [ VERNUM ] ; WeightType lowcost [ VERNUM ] ; int i , j , k ; WeightType min ; // 初始化,一开始生产树中只有开始的顶点 // 这里开始的顶点的编号为 0 for ( i = 0 ; i < g -> vernum ; i ++ ) { lowcost [ i ] = g -> arc

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

本秂侑毒 提交于 2020-02-14 00:22:31
一、LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。 二、三种工作模式的解析。 1、基于NAT的LVS模式负载均衡 NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。VS/NAT工作模式拓扑结构如图2所示,LVS负载调度器可以使用两块网卡配置不同的IP地址

贪心算法-跳跃游戏二

倖福魔咒の 提交于 2020-02-13 22:39:27
给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 你的目标是到达最后一个下标,并且使用最少的跳跃次数。 例如: A = [ 2 , 3 , 1 , 1 , 4 ],到达最后一个下标的最少跳跃次数为 2。(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步, 到达最后一个下标。一共两次) 输入格式 第一行输入一个正整数 n ( 1 ≤ n ≤ 1 0 0 ) ,接下来的一行,输入 n 个整数,表示数组 A。 输出格式 最后输出最少的跳跃次数。 样例输入 5 3 1 1 1 1 样例输出 2 分析: 通过上面例题分析,类似于贪心算法,每次跳一步后,步数cnt++,然后判断下次跳的最远的距离,直到到达s[n-1]为止,如下图所示: 代码如下: #include<stdio.h> int n,s[10000]={0},ct=0; int bfs(int i) { int k,j=0,l,max=0; if(i>=n-1) return 0; //找到便退出 k=s[i];ct++; if(i+k>=n-1) return 0; //找到便退出 for(l=i+1;l<=i+k;l++) //for()找到下次能跳到最远的距离 { if(max<=l+s[l]) //更新数据 { j=l;max=l+s[l]; } } bfs

【算法】算法的时间复杂度和空间复杂度

怎甘沉沦 提交于 2020-02-13 22:27:10
目录结构: contents structure [-] 时间复杂度的定义 推导大O阶 最优、平均、最差时间复杂度 算法的时间复杂度就是估计一个算法所需的时间,算法的空间复杂度就是估计一个算法所需的内存。算法可以以空间换取时间,也可以以时间换空间。比如,需要求出当前年份是否为闰年,可以写个算法进行计算;也可以预先就把近100年的闰年情况加载到内存中,如果是闰年则为1否则为0,这就是以空间换取时间的栗子。通常情况下“复杂度”都是指的是“时间复杂度”,因此在这篇文章中,笔者也重点介绍时间复杂度。 1.时间复杂度的定义 时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记做T(n)=O(f(n)),它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称为算法的渐进时间复杂度,简称为时间复杂度。可以将算法的时间复杂度理解循环次数。 利用大写O()来体现算法时间复杂度的计法,称为大O计法。 最优算法:一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最优。 2.推导大O阶 推导的一般步骤: 用常数1取代运算中的所有加法常数 在修改后的运行次数中,只保留最高项 如果最高项阶存在且不为1,则去除与这个项相乘的参数 接下来举几个栗子: #include

数据结构与算法整理3——BP算法和KMP算法

核能气质少年 提交于 2020-02-13 17:12:01
数据结构与算法整理3——BP算法和KMP算法 目录 数据结构与算法整理3——BP算法和KMP算法 1、字符串的基本操作 2、模式匹配——BP算法和KMP算法 3、串的操作代码(C语言) 1、字符串的基本操作 1)串的定义:字符串(也就是串)是0个或多个字符序列组成的有限序列。 串就是数据元素为单个字符的特殊线性表。 “qhjkdcbjsb”(隐含结束符\0)就是一个字符串,引号起界定作用,“”表示空串,串长为0 “ ”空格串不是空串,串长为空格数。 2)串的存储类型: 顺序存储 :定长顺序存储结构、堆分配存储结构(动态分配连续内存) 链式存储: 2、模式匹配——BP算法和KMP算法 串的模式匹配:就是指定一个主串S和子串T,求T在S中第一次出现的位置。 (1) 朴素模式匹配(BP算法) 核心思想 :主串S和子串T,S[1]和T[1]比较,S[2]与T[2]比较,直到S[n]与T[n]都是相等的为止,若S[i]与T[i]不相等,则子串向右移动一个(一个字符)继续比较。 时间复杂度 :主串S长度为n,子串T长度为m,最多进行m(m-n+1)次,最坏的时间复杂度为O(mn) 效率不高。 (2) KMP 算法 核心思想 :尽量利用已经得到的“部分匹配”的结果信息,不要让i回溯,加快子串右滑的速度, 问题由子串决定而不是主串决定的 next 数组 :是一个智能数组

F5 基本原理介绍(转)

╄→尐↘猪︶ㄣ 提交于 2020-02-13 13:26:14
原文链接:http://kuaibao.qq.com/s/20180308G1NPIS00?refer=cp_1026 文章来源:企鹅号 - 民生运维 1. 负载均衡的基本单位 目前负载均衡设备的基本处理单位是TCP连接,也就是说当一个TCP连接建立后,在该连接中的所有客户端请求和服务器响应信息都通过这一个TCP连接进行。 只有客户端发起新的连接的时候,才会根据负载均衡算法重新计算,才可能分发到其他服务器上。 2. 基本工作模式 F5支持全代理模式,同时也可以工作在四层转发模式。 全代理模式就是VS配置成standard类型,此模式下客户端和F5建立一个连接,客户端将请求发送给F5,F5再和服务器建立连接,并将请求发送给服务器,服务器返回信息后,F5再将返的回信息送给客户端。在此模式下F5可以查看请求和响应的所有信息,可以根据所有信息进行分发和处理。 四层转发模式就是VS配置成Performance L4类型,此模式下F5只做四层转发,也就是F5只处理四层以下的信息,即端口和IP信息,具体业务数据不做任何处理。客户端发送给F5的数据包,F5只根据需要将IP和端口处理之后就直接发送给服务器,响应信息也类似处理。在此模式下,F5只能查看四层一下信息,不处理业务信息,好处是处理过程简单、速度快。缺点是无法对四层以上的协议数据进行精确处理。 3. 负载均衡算法

Java常用排序算法

徘徊边缘 提交于 2020-02-13 12:15:59
在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。 一般来说外排序分为两个步骤:预处理和合并排序。首先,根据可用内存的大小,将外存上含有n个纪录的文件分成若干长度为t的子文件(或段);其次,利用内部排序的方法,对每个子文件的t个纪录进行内部排序。这些经过排序的子文件(段)通常称为顺串(run),顺串生成后即将其写入外存。这样在外存上就得到了m个顺串(m=[n/t])。最后,对这些顺串进行归并,使顺串的长度逐渐增大,直到所有的待排序的几率成为一个顺串为止。 内排序可以分为以下几类: (1)、插入排序:直接插入排序、折半插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序。 外排序可以分为一下几类(既使用内部存储也使用外部存储,内存不够时建议使用): (4)、归并排序 (5)、基数排序 稳定性:就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。再简单具体一点,如果A i == A j,Ai 原来在 Aj 位置前,排序后 Ai 仍然是在 Aj 位置前。 不稳定:简单选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法 稳定:冒泡排序、直接插入排序、折半插入排序,归并排序和基数排序都是稳定的排序算法。 平均时间复杂度 O(n^2):直接插入排序,简单选择排序

使用D3D渲染YUV视频数据

社会主义新天地 提交于 2020-02-13 09:12:31
源代码下载 在PC机上,对于YUV格式的视频如YV12,YUY2等的显示方法,一般是采用DIRECTDRAW,使用显卡的OVERLAY表面显示。OVERLAY技术主要是为了解决在PC上播放VCD而在显卡上实现的一个基于硬件的技术。OVERLAY的出现,很好的解决了在PC上播放VCD所遇到的困难。早期PC处理能力有限,播放VCD时,不但要做视频解码工作,还需要做YUV到RGB的颜色空间转换,软件实现非常耗费资源,于是,YUV OVERLAY表面出现了,颜色空间转换被转移到显卡上去实现,显卡做这些工作是具有天生优势的。 随着显卡技术的发展,OVERLAY的局限性也越来越充分的暴露出来。一般显卡只支持一个OVERLAY表面,用OVERLAY实现多画面比较困难,视频和文本的叠加也有困难,当然,要实现一些特效就更难了。更重要的是,OVERLAY技术在显卡上是属于2D模块,在高品质3D游戏的推动下,现在的显卡的功能和性能,主要体现在3D模块上,厂商投入最大的,也是在GPU的3D模块上。OVERLAY技术无法利用和发挥显卡GPU的3D性能。微软早就停止了对DIRECTDRAW的支持,鼓励开发人员转向DIRECT3D,所以OVERLAY也无法使用新的API。 早期的3D渲染,主要是使用CPU做的,显卡做的较少。后来,显卡GPU的处理能力越来越强,承担的3D渲染功能也越来越多

常见概率分布图表总结

这一生的挚爱 提交于 2020-02-13 07:40:58
摘要:   1.算法概述   2.算法推导   3.算法特性及优缺点   4.注意事项   5.实现和具体例子   6.适用场合   7.与NB,pLSA比较 内容: 1.算法概述: 先贴一段维基百科中关于主题模型的描述,便于大家理解我们接下来要做什么: 主题模型(Topic Model)在机器学习和自然语言处理等领域是用来在一系列文档中发现抽象主题的一种统计模型。 直观来讲,如果一篇文章有一个中心思想,那么一些特定词语会更频繁的出现。比方说,如果一篇文章是在讲狗的,那“狗”和“骨头”等词出现的频率会高些。如果一篇文章是在讲猫的,那“猫”和“鱼”等词出现的频率会高些。而有些词例如“这个”、“和”大概在两篇文章中出现的频率会大致相等。但真实的情况是,一篇文章通常包含多种主题,而且每个主题所占比例各不相同。因此, 如果一篇文章10%和猫有关,90%和狗有关,那么和狗相关的关键字出现的次数大概会是和猫相关的关键字出现次数的9倍。 一个主题模型试图用数学框架来体现文档的这种特点。 主题模型自动分析每个文档,统计文档内的词语,根据统计的信息来断定当前文档含有哪些主题,以及每个主题所占的比例各为多少。 接下来细化LDA的主题模型表示: 共有m篇文章,一种设计了k(超参数)个主题; 每篇文章都有自己的主题分布(先验的认为是多项分布),该主题分布的参数服从参数为阿勒法的Dirchlet分布;