算法

数据结构学习笔记——第一章 基本概念

无人久伴 提交于 2020-01-15 01:59:01
数据结构学习笔记——第一章 基本概念 第一章 基本概念 1.1 什么是数据结构 1.1.1 关于数据组织 1.1.2 关于空间使用 1.1.3 关于算法效率 1.1.4 抽象数据类型 什么是数据结构? 抽象数据类型(Abstract Data Type) 1.2 什么是算法 1.2.1 算法的定义 1.2.2 什么是好的算法 1.2.3 复杂度的渐进表示 1.3 应用实例 第一章 基本概念 1.1 什么是数据结构 1.1.1 关于数据组织 1.1.2 关于空间使用 1.1.3 关于算法效率 1.1.4 抽象数据类型 什么是数据结构? 数据对象 在计算机中的组织方式 逻辑结构 物理存储结构 数据对象必定与一系列加在其上的 操作 相关联 完成这些操作所用的方法就是 算法 抽象数据类型(Abstract Data Type) 数据类型 数据对象集 数据集合相关联的操作集 抽象 :描述数据类型的方法不依赖于具体实现 与存放数据的机器无关 与数据存储的物理结构无关 与实现操作的算法和编程语言均无关 只描述数据对象集和相关操作集“ 是什么 ”,并不涉及“ 如何做到 ”的问题 1.2 什么是算法 1.2.1 算法的定义 算法(Algorithm) 一个有限指令集 接受一些输入(有些情况下不需要输入) 产生输出 一定在有限步骤之后终止 每一条指令必须 有充分明确的目标,不可以有歧义

高维向量快速检索方法Locality Sensitive Hashing之一汉明空间和欧式空间实现

给你一囗甜甜゛ 提交于 2020-01-15 01:14:07
1 高维向量检索问题 高维向量检索主要解决由数据维数增加所引发检索速度急剧下降的的问题。高维空间中数据的特点主要包括以下三个方面: (1) 稀疏性。随着维度增长,数据在空间分布的稀疏性增强; (2) 空空间现象。对于服从正态分布的数据集,当维数大约增加到10时,只有不到1%的数据点分布在中心附近; (3) 维度效应。随着维数的增加,对索引的维护效率急剧下降,并且高维空间中数据点之间的距离接近于相等。 2 树索引方法在高维检索中的缺点 传统的树索引方法,如基于数据划分的索引R-tree、R-tree、SR-tree、k-d tree等和基于空间划分的索引quad-tree、kdb-tree等,在特征维度不高的情况下具有良好的性能,在特征维数足够高的情况下(超过几十维),它们的性能会退化到最原始的顺序查找,这就是所谓的“维度灾难”。树索引方法在高维情况下主要面临着三个困难: (1) 每次划分只使用了特征向量一个维度的信息,在高维情况下这种数据划分方法效率很低; (2) 需要某种形状的覆盖对象来表示某个区域,而固定形状的覆盖对象对区域的描述会有偏差。在高维情况下这个偏差会更明显; (3) 为了获得精确最近邻检索的结果,索引的性能退化到顺序查找的程度。 3 ANN和LSH 由于精确最近邻搜索计算代价高、算法效率低,人们采用近似最近邻搜索方法完成检索的任务。当前

阿里资深专家详解大数据与机器学习的实践方法与行业案例

冷暖自知 提交于 2020-01-15 00:45:51
前言: 大数据方面的书籍可谓琳琅满目,有的讲解理论,有的介绍方法,有的传播理念。但是,大数据从业人员(如数据工程师、数据分析师、业务分析师、算法设计师等)应该掌握哪些知识与技能,如何应用数据解决现实的业务问题呢?恐怕最能给出答案的还是实际的数据从业者。为此,三位作者基于近10年的数据分析与应用经验,融合各自在商业银行、互联网金融和电商领域的切身体验,寓理论于实战,选取多个详实的案例,站在企业实际应用的角度介绍数据分析应用过程并公布源代码,并最终形成本书。本书对于读者开展数据分析工作能够提供直接帮助,为有志于在大数据领域发展的读者启航。 第一部分:数据与平台篇 **第一章:**数据与数据平台 本章首先将从数据的基本形态人手,介绍企业中数据的来源和表现形态;然后介绍与之相关的数据平台,并简单介绍两类应用系统。在着手处理数据之前,让我们先对数据有一个清晰的认识。 第二章:数据体系 数据的流动伴随着形态的变化(回忆数据的三种形态:生产数据、原始数据、分析数据),我们知道数据最终仍然要回归于生产系统(从生产中来,到生产中去),一切离开了生产应用的数据分析和处理都是徒劳无益的。 第三章:实战:打造数据闭环 前面两章已经介绍了数据闭环的各个主要环节和涉及的技术,本章将基于前文提出的理念和技术来实现数据闭环。按照数据的流转过程以及主要负责人的职责,整个数据闭环将由三个环节组成。 第二部分:分析篇

数据结构导论之第一章(概论)

独自空忆成欢 提交于 2020-01-14 22:08:32
一、引言 数据结构(Data structure): 是计算机组织数据和存储数据的方式,是指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该组数据上的一组操作。 数据结构: 数据的逻辑结构+数据的存储结构+数据的基本运算 计算机解决问题的步骤: 1、建立数学模型 2、设计求解算法 3、编程实现算法(运用各种计算机语言实现算法) 1976年瑞士计算机科学家尼克劳斯·维尔特[Niklaus Wirth]提出 :算法+数据结构=程序 二、基本概念和术语 数据(Data): 所有能被计算机处理的符号的集合。实际问题中的数据称为原始数据 数据元素(Data Element): 是数据这个集合中的一个个体即数据的基本单位。 数据项(Data Item): 数据元素常常还可分为若干个数据项,数据项是数据具有意义的最小单位;数据库中,数据项又称为字段/域,它是数据的不可分割的最小标识单位。 1、数据的逻辑结构: 数据的逻辑结构是指数据及数据的组织方式,是一种数学模型;指数据元素之间的结构关系 数据的逻辑结构(D, {R}) 可分为下列几种: D = {d1,d2, …, dn} ◆ 集合: 数据元素同“属于一个集合”。R = { }。任意两个结点之间都没有邻接关系,组织形式松散 ◆ 线性结构: R= {(d1, d2), (d2, d3), …, (dn

CART算法

佐手、 提交于 2020-01-14 21:56:38
CART算法 CART算法 区别于ID3算法的信息增益和C4.5算法的信息增益率,CART算法在分支处理中分支属性的度量指标是Gini指标,基尼指数越小,不确定程度越小,区分力越大。定义如下: G i n i ( S i ) = 1 − ∑ i = 1 m p j 2 Gini(S_i)=1-\sum_{i=1}^mp_j^2 G i n i ( S i ​ ) = 1 − i = 1 ∑ m ​ p j 2 ​ p j = ∣ C j ∣ ∣ S ∣ p_j=\frac{|C_j|}{|S|} p j ​ = ∣ S ∣ ∣ C j ​ ∣ ​ G i n i ( S ) = S 1 S G i n i ( S 1 ) + S 2 S G i n i ( S 2 ) + . . . S i S G i n i ( S i ) Gini(S)=\frac{S_1}{S}Gini(S_1)+\frac{S_2}{S}Gini(S_2)+...\frac{S_i}{S}Gini(S_i) G i n i ( S ) = S S 1 ​ ​ G i n i ( S 1 ​ ) + S S 2 ​ ​ G i n i ( S 2 ​ ) + . . . S S i ​ ​ G i n i ( S i ​ ) 其中, S i S_i S i ​ 是属性 S S S 的 i i i 种取值结果

集成算法之Light GBM

烈酒焚心 提交于 2020-01-14 19:51:04
一、Light GBM Light GBM是和xgboost类似的一种集成算法。xgboost算法的一个瓶颈是针对每个特征,它都需要对每一个可能的分裂点扫描全部的样本来计算基尼系数,这样大大增加了计算量,降低了算法效率。为了解决这种在大样本高纬度数据的环境下耗时的问题,Light GBM算法使用直方图方法在牺牲一定精度的条件下,换取计算速度的提升和内存的消耗;主要使用如下两种方法:一是GOSS(Gradient-based One-Side Sampling, 基于梯度的单边采样),不是使用所用的样本点来计算梯度,而是对样本进行采样来计算梯度;二是EFB(Exclusive Feature Bundling, 互斥特征捆绑) ,这里不是使用所有的特征来进行扫描获得最佳的切分点,而是将某些特征进行捆绑在一起来降低特征的维度,是寻找最佳切分点的消耗减少。这样大大的降低的处理样本的时间复杂度,但在精度上,通过大量的实验证明,在某些数据集上使用Lightgbm并不损失精度,甚至有时还会提升精度。 二、直方图算法(Histogram-based Alogrithm) 直方图优化算法需要在训练前预先把特征值转化为bin,也就是对每个特征的取值做个分段函数,将所有样本在该特征上的取值划分到某一段(bin)中,最终把特征取值从连续值转化成了离散值。 第一个 for

图的应用——最小生成树

*爱你&永不变心* 提交于 2020-01-14 18:04:02
最小生成树 求最小生成树 构造最小生成树的准则 贪心算法(Greedy Algorithm) Prim(普里姆)算法 算法思想 —— 归并顶点 算法设计 KrusKal(克鲁斯卡尔)算法 算法思想 —— 归并边 算法设计 Prim和KrusKal比较 最小生成树 生成树(极小连通子图):含有图中全部n个顶点,但只有n-1条边。并且n-1条边不能构成回路。 生成森林:非连通图每个连通分量的生成树一起组成非连通图的 生成森林 。 求最小生成树 使用不同的遍历图的方法,可以得到不同的生成树 从不同的顶点出发,也可能得到不同的生成树。 按照生成树的定义,n 个顶点的连通网络的生成树有 n 个顶点、n-1 条边。 在网的多个生成树中,寻找一个各边 权值之和最小的生成树 构造最小生成树的准则 必须只使用该 网中的边 来构造最小生成树; 必须使用且仅使用 n-1 条边来联结网络中的 n 个顶点 不能使用产生 回路 的边 贪心算法(Greedy Algorithm) 算法原理:以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪心法不要回溯。 算法优点:因为省去了为寻找解而穷尽所有可能所必须耗费的大量时间,因此算法效率高。 贪婪算法的精神就是“ 只顾如何获得眼前最大的利益 ”,有时不一定是最优解。 Prim(普里姆)算法 算法思想 —— 归并顶点 在图中任取一个 顶点K作为开始点 。

小甲鱼数据结构学习笔记——绪论

跟風遠走 提交于 2020-01-14 14:13:28
绪论 程序设计=数据结构+算法 数据结构就是数据元素相互间一种或多种关系的集合。 逻辑结构和物理结构 传统上,我们把数据结构分为逻辑结构和物理结构,主要研究逻辑结构,而物理结构是次要的。 逻辑结构:指数据对象中数据元素之间的相互关系。 物理结构:指数据的逻辑结构在计算机中的存储形式。 四大逻辑结构 集合结构:集合结构中数据元素之间的相互关系。 线性结构:线性结构中的数据元素之间是一对一的关系,有点像人体蜈蚣。。 树形结构:数据元素之间存在一种一对多的层次关系。 图形结构:数据元素是多对多的关系。按小甲鱼的说法就是杂交,emmmm(疑惑.jpg) 物理结构 研究物理结构就是研究如何把数据元素存储到计算机的存储器中。存储器主要针对内存而言,通常用文件结构来描述。 两种存储形式:顺序存储和链式存储 顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。(不常用)例如数组结构。 链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。 显然链式结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样来通过地址找到相关联数据元素的位置。 算法时间复杂度 定义 :在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级

多模态AI算法

家住魔仙堡 提交于 2020-01-14 12:20:31
让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘 导读: 本篇文章由阿里巴巴新零售淘系技术部出品,内容大纲如下: 1、多模态在视频分类算法中的应用探索 2、视频分类算法中的层次化分类器的设计 3、总结和展望 背景 随着4G的普及和5G的推出,内容消费的诉求越来越受到人们的重视。2019年互联网趋势报告指出在移动互联网行业整体增速放缓的大背景下,短视频行业异军突起,成为“行业黑洞”抢夺用户时间,尽管移动互联网人口红利见顶,新的增长点难以寻觅,但中国短视频人均使用时长及头部短视频平台日均活跃用户均持续增长(如图1所示)。 图一 在淘宝,短视频业务一直以来都是非常重要的业务,是淘宝app从单一的商品导购app走向商品导购+内容消费的多元化app的关键所在。相较于单一的商品导购,商品导购+内容消费的模式有效增加用户粘性,提高用户的停留时长,最终获得GMV的持续增长。不仅如此,2019年视频营销发展趋势白皮书指出目前视频内容的转发量已达到图文的12倍,视频营销已经成为品牌最爱的营销方式,使用视频 来源: CSDN 作者: jwy2014 链接: https://blog.csdn.net/jwy2014/article/details/103970228

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

寵の児 提交于 2020-01-14 12:19:51
一、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地址