
正文
最小内积java代码 java 最小内存
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
数据流详细资料大全
数据流(data stream)是一组有序,有起点和终点的位元组的数据序列。包括输入流和输出流。
数据流最初是通信领域使用的概念,代表传输中所使用的信息的数字编码信号序列。这个概念最初在1998年由Henzinger在文献87中提出,他将数据流定义为“只能以事先规定好的顺序被读取一次的数据的一个序列”。
基本介绍 中文名 :数据流 外文名 :data stream 概念提出人 :Henzinger 提出时间 :1998年 释义 :以规定顺序被读取一次的数据序列 发展原因 :2个 数据模式 :4个 计算类型 :可分为两类:基本计算和复杂计算 产生背景,细节数据,复杂分析,区别特征,分类,输入流与输出流,缓冲流,模型描述,形式化,数据集合,数据属性,计算类型,相关思路,简介,随机采样,构造略图,直方图,小波变换,新动向,小说流派, 产生背景 数据流套用的产生的发展是以下两个因素的结果: 细节数据 已经能够持续自动产生大量的细节数据。这类数据最早出现于传统的银行和股票交易领域,后来则也出现为地质测量、气象、天文观测等方面。尤其是网际网路(网路流量监控,点击流)和无线通信网(通话记录)的出现,产生了大量的数据流类型的数据。我们注意到这类数据大都与地理信息有一定关联,这主要是因为地理信息的维度较大,容易产生这类大量的细节数据。 复杂分析 需要以近实时的方式对更新流进行复杂分析。对以上领域的数据进行复杂分析(如趋势分析,预测)以前往往是(在数据仓库中)脱机进行的,然而一些新的套用(尤其是在网路安全和国家安全领域)对时间都非常敏感,如检测网际网路上的极端事件、欺诈、入侵、异常,复杂人群监控,趋势监控(track trend),探查性分析(exploratory *** yses),和谐度分析(harmonic *** ysis)等,都需要进行在线上的分析。 在此之后,学术界基本认可了这个定义,有的文章也在此基础上对定义稍微进行了修改。例如,S. Guha等[88]认为,数据流是“只能被读取一次或少数几次的点的有序序列”,这里放宽了前述定义中的“一遍”限制。 为什么在数据流的处理中,强调对数据读取次数的限制呢?S. Muthukrishnan[89]指出数据流是指“以非常高的速度到来的输入数据”,因此对数据流数据的传输、计算和存储都将变得很困难。在这种情况下,只有在数据最初到达时有机会对其进行一次处理,其他时候很难再存取到这些数据(因为没有也无法保存这些数据)。 区别特征 与传统的关系数据模式区别 B.Babcock等[90]认为数据流模式在以下几个方面不同于传统的关系数据模式: 1. 数据在线上到达; 2. 处理系统无法控制所处理的数据的到达顺序; 3. 数据可能是无限多的; 4. 由于数据量的庞大,数据流中的元素被处理后将被抛弃或存档(archive)。以后再想获取这些数据将会很困难,除非将数据存储在记忆体中,但由于记忆体大小通常远远小于数据流数据的数量,因此实际上通常只能在数据第一次到达时获取数据。 三个 特点 我们认为,当前所研究的数据流计算之所以不同于传统的计算模式,关键在于这些数据流数据本身具有如下三个特点: 数据的到达—快速 这意味着短时间内可能会有大量的输入数据需要处理。这对处理器和输入输出设备来说都是一个较大的负担,因此对数据流的处理应尽可能简单。 酷睿2处理器 数据的范围—广域 这是指数据属性(维)的取值范围非常大,可能取的值非常多,如地域、手机号码、人、网路节点等。这才是导致数据流无法在记忆体或硬碟中存储的主要原因。如果维度小,即使到来的数据量很大,也可以在较小的存储器中保存这些数据。例如,对于无线通信网来说,同样的100万条通话记录,如果只有1000个用户,那么使用1000个存储单位就可以保存足够多和足够精确的数据来回答“某一用户的累计通话时间有多长”的问题;而如果共有100000个用户,要保存这些信息,就需要100000个存储单位。数据流数据的属性大多与地理信息、IP位址、手机号码等有关,而且往往与时间联系在一起。这时,数据的维度远远超过了记忆体和硬碟容量,这意味着系统无法完整保存这些信息,通常只能在数据到达的时候存取数据一次。 数据到达的时间—持续 数据的持续到达意味着数据量可能是无限的。而且,对数据进行处理的结果不会是最终的结果,因为数据还会不断地到达。因此,对数据流的查询的结果往往不是一次性而是持续的,即随着底层数据的到达而不断返回最新的结果。 以上数据流的特点决定了数据流处理的特点一次存取,持续处理,有限存储, 近似结果,快速回响。 近似结果是在前三个条件限制下产生的必然结果。由于只能存取数据一次,而且只有相对较小的有限空间存储数据,因此产生精确的计算结果通常是不可能的。而将对结果的要求从过去的“精确”改为“近似”后,实现数据流查询的快速回响也就成为了可能。 分类 数据的性质、格式不同,则对流的处理方法也不同,因此,在Java的输入/输出类库中,有不同的流类来对应不同性质的输入/输出流。在java.io包中,基本输入/输出流类可按其读写数据的类型之不同分为两种:位元组流和字元流。 输入流与输出流 数据流分为输入流(InputStream)和输出流(OutputStream)两类。输入流只能读不能写,而输出流只能写不能读。通常程式中使用输入流读出数据,输出流写入数据,就好像数据流入到程式并从程式中流出。采用数据流使程式的输入输出操作独立与相关设备。 输入流可从键盘或档案中获得数据,输出流可向显示器、印表机或档案中传输数据。 缓冲流 为了提高数据的传输效率,通常使用缓冲流(Buffered Stream),即为一个流配有一个缓冲区(buffer),一个缓冲区就是专门用于传输数据的记忆体块。当向一个缓冲流写入数据时,系统不直接传送到外部设备,而是将数据传送到缓冲区。缓冲区自动记录数据,当缓冲区满时,系统将数据全部传送到相应的设备。 当从一个缓冲流中读取数据时,系统实际是从缓冲区中读取数据。当缓冲区空时,系统就会从相关设备自动读取数据,并读取尽可能多的数据充满缓冲区。 模型描述 我们试图从数据集合、数据属性和计算类型三个不同方面对数据流的模型进行归纳和描述。实际上,很多文章提出了各种各样的数据流模型,我们并没有包括所有这些模型,只是将其中比较重要的和常见的进行了归纳和分类。 形式化 以下是对数据流的一个形式化描述。 考虑向量α,其属性的域为[1..n](秩为n),而且向量α在时间t的状态 α(t)=α1(t), ...αi(t), ...αn(t) 在时刻s,α是0向量,即对于所有i,αi(s)=0。对向量的各个分量的更新是以二元组流的形式出现的。即,第t个更新为(i, ct),意味着αi(t)= αi(t . 1) + ct,且对于i. =.i,αi. (t)= αi. (t . 1)。在时刻t发生的查询是针对α(t)的。 数据集合 我们首先考虑在进行数据流计算时,有哪些数据被包含在计算范围之内。关于这个问题,主要有三种不同的模型:分别是数据流模型(data stream model)、滑动视窗模型(sliding window model)和n-of-N模型。 数据流模型(data stream model)在数据流模型中,从某个特定时间开始的所有数据都要被纳入计算范围。此时,s=0,即在时刻0,α是0向量。即这是数据流最初和最普遍的模型。 滑动视窗模型(sliding window model ,计算最近的N个数据)滑动视窗模型是指,从计算时算起,向前追溯的N个数据要被纳入计算范围。此时,s = t . N,即在时刻t . N,α是0向量。换句话说,要计算最近的N个数据。由于数据流的数据是不断涌现的,所以直观的看,这种模式就像用一个不变的视窗,数据随时间的推移经过视窗,出现视窗内的数据就是被计算的数据集合。M. Datar等[91]首先提出这一模式,随后得到了广泛回响[92]。 n-of-N模型(计算最近的n个数据,其中0 n ≤ N) 文献[93] 提出的这种模型建立在滑动视窗模型的基础之上,比滑动视窗模型更为灵活:被纳入计算范围的是从计算时算起,向前追溯的n个数据。此时,s = t . n,即在时刻t . n,α是0向量。注意,其中n ≤ N,而且是可以随查询要求变化的。而在滑动视窗模型中,n = N而且是固定不变的。对于数据流处理系统来说,要能够回答所有长度小于等于N的滑动视窗问题。 数据属性 数据本身的特征: 时间序列(time series model) 数据按照其属性(实际上就是时间)的顺序前来。在这种情况下,i = t,即一个t时刻的更新为(t, ct)。此时对α的更新操作为αt(t)= ct, 且对于i. =.t,αi. (t)= αi. (t . 1)。这种模型适用于时序数据,如某特定IP的传出的数据,或股票的定期更新数据等。 收款机模型(cash register model) 同一属性的数据相加,数据为正。在这种模型中,ct =0。这意味着对于所有的i和t来说,αi(t)总是不小于零,而且是递增的。实际上,这种模型被认为是最常用的,例如可以用于对收款机(收款机模型由此得名),各个IP的网路传输量,手机用户的通话时长的监控等等。 十字转门模型(turnstile model) 同一属性的数据相加,数据为正或负。在这种模型中,ct可以大于0也可以小于0。这是最通用的模型。S. Muthukrishnan[89]称其为十字转门模型起因于这种模型的功能就象捷运站的十字转门,可以用来计算有多少人到达和离开,从而得出捷运中的人数。 计算类型 对数据流数据的计算可以分为两类:基本计算和复杂计算。基本计算主要包括对点查询、范围查询和内积查询这三种查询的计算。复杂计算包括对分位数的计算、频繁项的计算以及数据挖掘等。 点查询(Point query) 返回αi(t)的值。 范围查询(Range query) 对于范围查询Q(f, t),返回 t . αi(t) i=f 内积(Inner product) 对于向量β,α与β的内积 α . β =Σni=1αi(t)βi 分位数(Quantile) 给定一个序号r,返回值v,并确保v在α中的真实排序r.符合以下要求: r . εN ≤ r. ≤ r + εN 其中,ε是精度,N =Σni=1αi(t)。 G. S. Manku等[94]提供了对分位数进行一遍扫描进行近似估计的框架结构,将数据集合看成树的节点,这些节点拥有不同的权重(如节点中包含的数据个数)。认为所有的分位数的估计算法都可以被认为由三个对节点的操作组成产生新节点(NEW) 、合并(COLLAPSE)和输出(OUTPUT)。不同的策略构成了不同类型的树。这个框架结构成为后来很多分位数估计算法的基础。 频繁项(Frequent items)有时也称Heavy hitters,即找出在数据流中频繁出现的项。在这种计算中,实际上令ct =1。这样,αi(t)中保存了截至t时刻,维值等于i的数据到达的频率。对这些数据的查询又可分为两种: 找出头k个最频繁出现的项 找出所有出现频率大于1/k的项 对频率项的研究主要集中在后一种计算[95]。 挖掘对数据流数据进行挖掘涉及更复杂的计算。对这方面的研究包括:多维分析[96],分类分析[97, 98],聚类分析[99–102],以及其他one-pass算法[103]。 相关思路 简介 数据流处理过程中的主要难点在于如何将存储数据所花费的空间控制在一定范围之内。查询回响时间问题虽然也很重要,但相对容易解决。作为研究领域的一个热点,数据流处理问题得到了广泛的研究,出现了很多算法。 解决数据流庞大的数据量与有限的存储空间之间的矛盾的一个思路是使用采样,另一个思路是,构造一个小的、能提供近似结果的数据结构存放压缩的数据流数据,这个结构能存放在存储器中。略图(Sketch)、直方图(histogram)和小波(wavelet)实际上就都是这样的数据结构中最重要的三种。 以上方法实际上大都已用于传统资料库领域,问题在于如何将它们套用于数据流的特殊环境。 随机采样 随机采样(Random sampling)可以通过抽取少量样本来捕捉数据集合的基本特性。一个很常见的简单方法就是一致性采样(uniform sample)。作为一个备选的采样方法分层采样(strati.ed sampling)可以减少数据的不均匀分布所带来的误差。不过,对于复杂的分析,普通的采样算法还是需要太大的空间。 对于数据流的一些特殊计算,已经出现了一些有趣的采样算法。粘采样(Sticky sampling)[95]用于频繁项(frequent items)的计算。粘采样使用的方法是,在记忆体中存放二元组(i,f)所构成的集合S,对于每到来的一个数据,如果其键i已经存在于S,则对应的f加1;否则,以1 r 的机率进行采样,如果该项被选中,在S中增加一组(i,1);每过一段时间,对S中的组进行一遍扫描,对其中的值进行更新。然后增加r的值;结束(或用户要求结果)时,输出所有f.(s-e)N的组。 P. Gibbons提出的distinct sampling[104]用于distinct counting ,即找出数据流中不同值的个数。它使用哈希(hash )函式对每一个到来的不同值以2.(i+1)的机率映射到级别i上;如果i ≥记忆体级别L(L的初始值为0),将其加入记忆体,否则抛弃;记忆体满时,将记忆体中级别为L的值删除,并将L加1;最终对distinct count的估计为记忆体中不同的值乘以2L。distinct counting是资料库处理中的一个老问题,这种算法的优点是,通过设定合适的参数,可套用于带谓词的查询(即对数据流的一个子集进行distinct counting)。 采样算法的缺点是:它们对异常数据不够敏感。而且,即使它们可以很好的套用于普通的数据流模型,但如果要用于滑动视窗模型(sliding window model)[91] 或n-of-N模型[93],还需要进行较大的修改。 构造略图 构造略图(sketching)是指使用随机映射(Random projections)将数据流投射在一个小的存储空间内作为整个数据流的概要,这个小空间存储的概要数据称为略图,可用于近似回答特定的查询。不同的略图可用于对数据流的不同Lp范数的估算,进而这些Lp范数可用于回答其它类型的查询。如L0范数可用于估算数据流的不同值(distinct count);L1范数可用于计算分位数(quantile)和频繁项(frequent items);L2范数可用于估算自连线的长度等等。 略图的概念最早由N. Alon在[105]中提出,从此不断涌现出各种略图及其构造算法。 N. Alon 在[105]中提出的随机略图构造(randomized steching)可以用于对不同Lp范数的估算,最多需要O(n 1. lg n)的空间。该文更重要的贡献在于,它还可以以O(log n + log t)的空间需求估算L2。它的主要思路是,使用哈希函式,将数据属性的域D中的每一个元素一致地随机映射到zi ∈ {.1+ 1}上,令随机变数X = .i αizi,X2就可作为对L2范数的估计。 p1 S. Guha 等[88]提出的分位数略图(quantile sketch) 保持一组形如(vi,gi, Δi)的数据结构,rmax(vi) 和rmin(vi)分别是vi可能的排位的最大和最小值。对于ij 满足: vi vj gi = rmin(vi) . rmin(vi . 1) Δi = rmax(vi) . rmin(vi) 随着数据的到来,对此略图进行相应的更新操作,使估算保持在一定的精度之内。X. Lin等[93]对于这个问题做出了更形式化的描述。 若令AS为一个从[1..n]中提取的随机集合,每一个元素被提取的机率为1/2。A. Gilbert 等[106]构造若干个AS,将每个集合中元素值的和称为随机和(random sum)。多个随机和构成一个略图。对αi的估算为 2E(||AS|| |αi ∈ AS) . ||A||, 其中||A||为数据流中所有数的和。因此,这种略图可用于估算点查询的结果。使用多个这样的略图,可用于估算范围查询、分位数查询等。略图技术实际上是空间和精度相权衡的结果。为保证点查询结果的误差小于εN, 上述略图需要的空间通常是以ε.2作为系数的。与此相比较,G. Cormode 等提出的计数-最小略图(Count-Min Sketch )[19]只需要ε.1系数的空间。其思路也比较简单,使用若干个哈希函式将分别数据流投射到多个小的略图上,回答点查询时,每个略图分别作答,并选择值最小的作为答案。以点查询为基础,计数-最小略图可以用于其它各种查询和复杂计算。计数-最小略图并不计算Lp范数,而是直接计算出点查询的结果,这是它的时空效率比其它略图高的原因之一。 直方图 直方图(histogram)有两个含义:一个是普通意义上的直方图,是一种用于显示近似统计的视觉手段;另外,它还是一种捕捉数据的近似分布的数据结构/方法。作为后者出现时时,直方图是这样构造的:将数据按其属性分到多个不相交的子集(称为桶)并用某种统一的方式近似表示桶中的值[107]。 直方图 直方图方法主要用于信号处理、统计、图像处理、计算机视觉和资料库。在资料库领域,直方图原先主要用于选择性估计(selectivity estimation),用于选择查询最佳化和近似查询处理。直方图是一种最简单、最灵活的近似处理方法,同时也是最有效的一种。只要解决好数据更新问题,就可以将原有的直方图运用到数据流处理中。这类根据新的数据自动调节的直方图被称为动态(或自适应/自调节)直方图。 L. Fu等[108]提出的直方图主要用于中值函式(Median )和其他分位数函式的计算,可用于近似计算,也可用于精确查询。它通过确定性分桶(Deterministic Bucketing )和随机分桶(Randomized Bucketing )技术,构造多个不同精度的桶(buckets),然后将输入数据逐级分到这些桶中,从而完成了动态直方图的构造。 由于将静态直方图直接套用到数据流处理比较困难。S. Guha等[88]虽然可以动态地构造近最优的V-optimal 直方图,但只能套用于时间序列模型(time series model) 下的数据流。 一个常采用的方法是将整个算法分为两步:首先构造一个数据流数据的略图;然后从这个略图中构造合适的直方图。这种方法可以利用略图数据易于更新的特点,又能实现直方图的动态化。N. Thaper等[109]首先是构造一个近似反映数据流数据的略图,利用略图的优良的更新性能来实现数据的更新,然后从这个略图中导出一个直方图来实现对数据流数据的近似。由于从略图中导出最佳的直方图是一个NP-hard问题,作者提供了一个启发式算法(贪婪算法)来搜寻一个较佳的直方图。 A. Gilbert等[110]构造了一个概要的数据结构,该结构使用一组与文献[106]中类似的随机和结构来保存不同粒度级别的dyadic interval的值。随后,将不同粒度级别的dyadic interval([111])从大到小地加入所要构造的直方图中,这样就将近似误差降到最低(求精)。 A. Gilbert等在文献[112]中主要考虑的是如何降低对数据流中每个输入数据的处理复杂度。他们先将输入数据转化为小波系数(利用小波系数是信号与基向量的内积),然后采用了与文献[110]类似的dyadic interval处理方法。略图与直方图有很密切的联系,从某种方面来说,可以认为直方图是略图的一种特殊情况。 小波变换 小波变换(wavelet transformation)常用于生成数据的概要信息。这是因为通常小波系数只有很少一部分是重要的,大部分系数或者值很小,或者本身不重要。所以,如果忽略数据经过小波变换后生成的不重要系数,就可以使用很少的空间完成对原数据的近似。 Y. Matias等首先针对数据流数据构造一个直方图,使用小波对其进行模拟。随后保留若干最重要的小波系数实现对直方图的模拟。当新的数据出现时,通过对这些小波系数进行更新以实现直方图的更新。 文献提出的实际上是一种直方图方法,只不过使用了小波变换。A. Gilbert等指出小波变换可以认为是信号与一组正交的长度为N的向量集合所作的内积,因此构造一组数据流数据的略图,由于略图可以相当容易和准确地计算信号与一组向量的内积,则可以从略图计算出小波系数,从而用于点查询和范围查询的估计。 新动向 研究人员对数据流处理的研究不断深入,我们认为出现了以下新的动向: 未来略图 引入更多多的的统计 计技技术来构造略图 G. Cormode等主要处理对频繁项的计算。它以前人的主项(majority item ) 算法([116, 117])为基础,使用了error-correcting codes来处理问题。如数据的每一位设立一个计数器,再根据这些计数器的计数结果来推断频繁项集合。 Y. Tao等[118]实质上是对Probabilistic counting (已经广泛地用于资料库领域的distinct counting)在数据流处理的一种套用。 扩展略图 对略图进行扩展,以处理更更复复杂的查询询需需求 Lin等在文献[93]中构造了一个复杂的略图体系,可用于滑动视窗模型(sliding window model )和n-of-N模型的分位数估计,这是简单略图难以做到的。 在滑动视窗模型下,文献[93]将数据按时间顺序分为多个桶,在每个桶中建立略图(精度比要求的高),然后查询时再将这些略图合并(merge),其中对最后一个桶可能需要进行提升(lift )操作。维护时只删除过期的桶,增加新的桶。 在n-of-N model中,文献[93]将数据按EH Partitioning技术分为多个大小不同的桶,在每个桶中建立略图(精度比要求的高),然后查询时再将其中一部分略图合并,可以保证要求的精度,其中对最后一个同可能需要进行提升。 结合时空数据 与时空数据处理的进一步结合: J. Sun等在文献[120]中虽然主要针对时空数据的历史查询和预测处理。然而,文章却强调时空数据是以数据流的形式出现的,处理中也更着重于时空数据的更新性能。 Y. Tao等[118]使用数据流的方法处理时空数据,通过对动态的时空数据构造略图,用于分辨物体是否在多个区域间运动或静止的状态,并估算其数量。而这种问题在原先的时空处理中是很难解决的。 小说流派 网路小说数据流是新兴流派,意思是小说主角实力数据化,和网游属性栏一样的数据显示。
相关问答
Q1: 用最小二乘法来拟合数据
标签(空格分隔): 机器学习
最小二乘法是一种常用的数学优化技术。它通过最小化误差的平方和来求取目标函数的最优值,以解决线性回归问题。这是百度百科给出的解释,那么这个拟合的数据从字面上理解,其实就是预测结果。我们可以将它应用到各行各业,比如销售数据、工厂生产量、比赛结果、地面区域面积估算等预测,总能找到数据之间映射关系。
向量x = [1.1,1.9,3.1,3.9] , 向量y = [0.1,0.2,0.3,0.4]
其中 .* 是点乘操作,向量x与向量y的点乘
向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
线性回归参数
目标函数
真实数据与实验数据的比较
数据量比较小的情况下,拟合出来的目标函数还不够准确,可以看到真实y与拟合y之间的数据是存在微小的误差。如果历史数据足够多,那么拟合出来的目标函数是比较稳定的。
最小二乘法适合求解单变量线性回归问题,如果存在多个变量(特征)时,就不能使用最小二乘法来解决回归参数的问题,需要借助梯度下降和正规方程等方法。
由于时间紧迫,本文的算法和实验并不完美,还有很多值得改进的地方。
Q2: 求一个matlab里求内积的函数
内积的命令是dot,例子如下:
x=[1 1 1 1 1 1];
y=[2 2 2 2 2 2];
dot(x,y)
在数学中,“内积” 符号表示为( )或(),但为了避免将“内积”符号( )和圆括号()搞混,本文采用( )来表示“内积”,数组的“内积”可表示为举例如下:
(a,b) = [a1, a2,... an], [.,.....n〉= a1b1 + a2b2 +.. + anbn
即:对应的元素先“乘”后“加”。matlab程序举例:
a=[1 2 3]; %假设一个“数组a”
b=[45 6]; %假设一个“数组b”
dot(a,b) %将“数组a”和“数组b”取“内积”。
扩展资料
将两个矩阵的“列向量”取“内积”后形成的矩阵(由于“列向量”可看作一维数组,即转化为:先求“数组的内积”,然后构成矩阵即可),matlab程序 举例:
a=[1 2;34]; %矩阵a
b= [56; 7 8]; %矩阵b
dot(a,b) %将矩阵a和b取内积,设T表示矩阵的转置,即是将“行列整体互换”,那么取内积的过程分析: (a,b) = [[1,3]T,[5,7]T); (2,4]T,[6,8]T]T,这个过程分析总体不是matlab代码, 但这其中写的“;” 是用matlab代码表示的,表示“矩阵中一行结束了。
要换行了”.如果要将其过程写成matlab代码,那就是这样三种方式(这三种方式通过实际运行都是正确的,实现同一功能)[ dot([1,3]',[5,7]'); dot([2,4]',[6,8]') ]’%有换行号“;”和转置号“,”。
Q3: 支持向量机(SVM)
参考Jerrylead 和 july-支持向量机通俗导论
再回忆一下逻辑回归:Logistic回归目的是从特征学习出一个0/1分类模型,而 这个模型是将特征的线性组合作为自变量 ,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数) 将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率 。
中间那条线是θ T x=0,logistic回归强调 所有点 尽可能地远离中间那条线。学习出的结果也就中间那条线。
但是:
考虑上面3个点A、B和C。从图中我们可以确定A是×类别的, 然而C我们是不太确定的 ,B还算能够确定。这样我们可以得出结论, 我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优(引出了下面的函数间隔与几何间隔) 。
我想这就是支持向量机的思路和logistic回归的不同点:
支持向量机考虑局部(不关心已经确定远离的点),
逻辑回归一个考虑全局(已经远离的点可能通过调整中间线使其能够更加远离,但是也可能使一部分点靠近中间线来换取另外一部分点更加远离中间线。)
上面已经知道,θ T x=0是分类的线,在svm中,只考虑局部,只考虑θ T x的正负问题,而不用关心g(z)。因此,在这里,用w T x+b代替θ T x,并 对g(z)做一个简化 ,将其简单映射到类别标签y=1和y=-1上。
这里的y取值为1和-1(在svm中,只考虑局部,只考虑θ T x的正负问题),是为了方便定义:在分类正确的情况下,函数间隔(确信度 )的大小
比如,在分类正确的情况下,y等于1,wx+b应该为正数越大,则情况越好,是正例的确定度就越大。就如上图的A点。y等于-1,wx+b应该为负数越大,则情况越好是负例的确信度就越大。
所以, 函数间隔越大,说明分类正确的置信度越大。函数间隔越小 ,比如上图c点,说明越不能确定c点属于哪一类。
可以为 别的值,只是为了方便。这一点在参考的第二个博客上也已经说明了。
由上面解释,已知可以用y(wT x + b) 的正负性来判定(或表示)分类的正确性。
定义函数间隔如下:
也就是,这个样本点x与超平面之间的间隔(但是现在有些不准确,所以有下面的几何间隔)。
此时,若根据SVM的思想,最大化这个间隔,就能提高分类正确的确信度了吗?
答案是否定的,因为,如果成比例的改变w 和b(如将它们改成2w 和2b),则函数间隔的值f(x) 却变成了原来的2 倍( 虽然函数值增大了,达到了目标,但是此时超平面没有改变 ),所以只有函数间隔还远远不够。
我们真正关心的,其实是“几何上”的点到平面的距离,于是可以用几何知识推理出来的几何间隔。 而不是一开始人们想当然定义的函数间隔。
事实上,我们可以对法向量w 加些约束条件( 这就是调优问题的思考了 ),从而引出真正定义点到超平面的距离——几何间隔(geometrical margin)的概念。
又因为x 0 是超平面w T x + b=0上的点,利用向量之间的运算
再令上式乘上对应的类别y,即可得出几何间隔
从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以∥w∥,而 函数间隔实际上就是,只是人为定义的一个间隔度量,而几何间隔才是直观上的点到超平面的距离。
接下来就是我们的目标:寻找一个超平面, 使得离超平面比较近的点能有更大的间距。 也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。也就是找到最大的几何间隔。
由上一小节可以知道,我们这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。
上面两个式子的意思是( 注意,函数间距上面是折线,几何间距上面是波浪线 ):
最大化几何间隔
约束条件是,每个样例的函数间隔都要大于全局的那一个函数间隔(也就是所有训练集里的最小的那个)
用函数间隔表示几何间隔
于是得到了这个式子:
然而这个时候目标函数不是凸函数,约束条件也不是线性的,没法直接代入优化软件里计算。我们还要改写。前面说到 同时扩大w和b对结果没有影响 ,因此,我们将全局的函数间隔值定义为1。于是,上述的函数转变成了
由于求1/||w||的最大值,相当于求||w||²的最小值,因此结果为:
因为现在的 目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题 。这个问题可以用现成的QP (Quadratic Programming) 5优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。
根据前面几个文章的话,SVM作为判别模型,它的的模型,就是 w T x i + b 。参数就是w和b。学习完参数以后,新来的样例作为x i ,得到结果大于1,说明在超平面上面,所以是正例。反之亦然。
根据SVM的思想,SVM的初步目标函数,就是所有样例的几何间隔尽可能的大
至此,得到了SVM的目标函数,算是初步解决了SVM的这个问题,用优化包求解得到wb,即可得到具有最大几何间距的超平面,提高分类每个点的确信度,分类目标完成。
接下来介绍的是手工求解w和b的方法了,一种更优的求解方法。
从上可以看出 ,就同时扩大w和b就相当于等式两边同时除以函数间隔 γ,而新的w和b仍然是旧的wb的函数,所以最大化仍然可以进行。
效果等价于,令函数间隔γ=1,综上所述,零γ=1是合理的,而且也方便了原优化问题的计算 。
由拉格朗日对偶(线性可分条件下SVM的对偶算法)引入核函数(非线性可分条件下SVM的算法)
上一篇说到,得到了 如下的线性可分的SVM的目标函数 ,可以利用优化包进行求解。
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量(dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法。
引入对偶的优点:
因为 引入拉格朗日算子可以求出极值。 (参考最优化方法的解释)
这种极值问题怎么求
首先,同样定义拉格朗日公式,希望可以利用拉格朗日算子法求得最优解,得到:
但是,出现问题了,此时加入的约束条件g已经不再等于0了,所以,此时可以调整算子alpha变成很大很大的 值,使结果负无穷, 这显然是不合理的。
所以,我们需要 排除在满足条件下,也会无解的情况。
因此,我们定义下面的函数
要看这个函数有什么优点,就要看看这个函数相比于L(ω,α,b)有什么变化: 加了max,加了α I 大于等于零。
所以,当g和h不满足约束时,总可以调整α i 和β i 来使thetap具最大值为正无穷。
只有当g和h满足约束时,此时g0,我们可以调整α i 和β i (使α i 等于0,β i 任意),得到最大值,即θ p =f(w)。
于是函数等价于这样
于是原来的极值问题min f(w) 就等价于求min θ p 了,
即:
也就是说,最小化 θ p ,就是为了得到最小的 f(w),而能有f(w)就说明了满足约束条件。所以这个等价于原来的极值问题。
至此, 相比于拉格朗日公式L(ω,α,b),现在即加入了拉格朗日算子,又排除了纯粹的拉格朗日公式中出现无穷的情况。
但是,又出现了新的问题,也就是,如果直接求解,首先面对的就是两个参数(最里面的是max,这个max问题有两个参数),而且alpha也是不等式约束,再在w上求最小值,这个过程并不容易做。那么应该怎么办呢?
在最优化课程里,当遇到不好解的优化问题时,可以转化为原问题的对偶问题试试。
此处,d代表对偶。D--dual
我们定义函数
θ D 将问题转化为先求L(ω,α,b)关于 ω 的最小值(此时α和β是固定值),之后再求θ D 的最大值。 上来面对的是一个参数,相对简单些。
相对于原问题,更换了min和max的顺序,得到了它的对偶问题。
--------------------------------------------------------------------------------------------------------------
一般的更换顺序的结果是MaxMin(X) = MinMax(X)。也就是,此时有
对偶问题已经表示出来了,这个对偶问题也相对原问题好求,那么,这两个问题等价吗?或者说,对偶问题的解是不是原问题的解呢?
需要用KKT条件来判断了。
对于拉格朗日算子的深入理解可以看看《最优化方法》,讲义的最后一页。
含有不等式约束的问题,常常 用KKT条件求得候选最优解
对于一般化的拉格朗日公式:
最优值 w 必须满足以下三个条件:
----------1、L对 w 求导为零
----------2、h(w)=0
----------3、α i g i =0 ,i = 1,...,k
注意此时
第三个条件表明了KKT的思想:极值会在可行域边界取得。 ----解释:
-----对于一个特定的自变量w1,当自变量w1在 第 i 个 可行域边界(g i (w1)=0)时,说明此时这个约束是起到了作用的。 这个约束是w1被g i 约束了。此时只能到g i 的平面上(即边界),再多就出界了。。。 而对于最优解来说,就是f(w)达到最优,所以L中,除了f(w)部分,其余应该都等于0,所以此时α0(或许等于零也可以?疑问)
----而此时,w1在其他的约束条件g 非i 下,有g 非i (w1)0),说明W1可以随意些,说明此时这个约束并没有起到作用,但是作为最优解,为了 除了f(w)部分,其余应该都等于0 ,所以其系数α应该等于零。
----------------------------------------------------------------------------------------
注意:这个是传统最优化问题的一般式,这个问题有k个不等式约束方程,所有的点都要满足这k个不等式约束。 。假设有一百个样本点,只有有三个极值N1,N2,N3,那么说明其余97个点带入这k个方程中去都会小于零。 另外对于这三个极值点,可能会有g i (N1) = 0,除了第i个g以外,g(N1)都小于0 。然后对于极值N2,g j (N2)=0,除了第j个约束以外,其余的g(N2)都小于0。
而本节一开始讨论的问题,只有一个约束方程(因为参数只有w和b)即:y(w T x+b)=1,所有的点(一共m个)都要满足这个约束方程。 而关于为什么非支持向量的系数alpha会等于零呢?也就是相当于前面的,k=1(有k个约束条件)的情况下,m个样本点中,非支持向量的约束g0,为了最优解,除了f(w)应该都等于零,所以alpha应该等于零。
另外可以参考这段话:
即,若d* = p* == x * 满足KKT条件
由上面那句话可以知道,
折腾这么长时间,也就是为了说明,已经知道原问题
是凸优化问题,所以,只要对偶问题的自变量w满足了KKT条件,那么它就是对偶问题的最优解w * ,同时也是原问题的最优解了。
所以,由上可知,只要解出了2.1.3中的问题的参数w和b,也就是原问题的解了。
重新回到SVM的优化问题(其中每个约束式实际就是一个训练样本):
我们将约束条件改写为拉格朗日的形式:
由KKT条件可知,只有当函数间隔是1(g=0)的时候,α i 0。此时,这个样例 w i 在约束平面上受到约束 。对于其它的不在线上的样例点(g0),极值不会在其范围内去的,所以这些样例点前面的系数α i =0.
实线是最大间隔超平面,假设×号的是正例,圆圈的是负例。在虚线上的点就是函数间隔是1的点,他们前面的系数α i 0, 这三个点被称作 支持向量。
由上面问题,构造拉格朗日函数如下(没有等式约束,所以没有β):
————————————————————————————————
下面我们按照对偶问题的求解步骤来一步步进行,由2.1.3可知,对偶问题的形式为:
首先求解L的最小值(最里面的先求),此时αi是固定的,L的最小值只与w和b有关。对w和b分别求偏导数。
得到
将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸函数), 即里面的min L已经求出,接下来就是求max了
代入后,化简过程如下:
最后得到
由于最后一项是0,因此简化为
这里,上式中左右边的向量内积,用方括号表示。
到这一步,拉格朗日函数只包含了一个变量α i 。接着进行下一步 ,最大化的过程,求得α i 。
假设求得了α i 就能根据求导得到的结果
求得w,然后就能得到b。
b 就是 距离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。 (其实,由前面的那个x和圈的图,可以认为b就是截距,这个截距b等于上下两条虚线的截距的平均值。)
注意,这里的w,b,alpha都是 向量,都是m维的向量
至于这里的α怎么求得,即上面的最大化问题怎么求解,将留给下一篇中的SMO算法来阐明。
也就是说,手动解的话,还是需要利用SMO算法,求得α才行。
————————————————————————————————
这里考虑另外一个问题,由于前面求解中得到
用α i 代替w带入判别模型w T x+b,得到:
也就是说, 利用判别模型对新来样本进行判别时 ,以前新来的要分类的样本首先根据w和b做一次线性运算,然后看求的结果是大于1还是小于1来判断正例还是负例。大于1,说明在超平面的上面,说明是正例。同理,小于1说明在超平面的下面,说明是负例。
约束条件是wx+b-1小于等于零,所以判断就是wx+b与1进行大小比较
现在有了alpha,不需要求出w (那b呢,b怎么求呢,前面已经解释,b是由离超平面最近的间隔和负的函数间隔相等。。。得到的。所以,将新来的样本与训练数据中 支持向量 做内积以后,再确定最大的正数函数间隔以及最小的负数函数间隔,即可。)
就冲上面这段话,支持向量的系数alpha,也不能等于0。
另外,那有人会说,与前面所有的样本都做运算是不是太耗时了?其实不然,我们从KKT条件中得到,只有支持向量的α i 0 (不等于零)其他情况α i 是等于零的。 比如,像前面那个x和圈的图,新来的样本只需要和三个支持向量做运算即可 。
由此可以看到,求出α i 以后,只需要利用支持向量,就可以来判断新来的样例是正例还是负例了。也许这也是是为什么叫支持向量机吧。
上面这个公式,为下面要提到的核函数(kernel)做了很好的铺垫。
下面,先把没求得的alpha放一放,趁着刚刚得到的这个公式的热乎劲,再去看看核函数。
Q4: verilog编程求助:内积c代码如下,如何用verilog实现?
首先你需要对数据进行量化
module neiji(
);
reg clk;
reg rst;
wire [7:0] a;
wire [7:0] b;
reg [31:0] sum;
reg [7:0] n;
reg [7:0] i;
reg [3:0]addr;
initial begin
rst = 0;
#10
rst = 1;
end
initial begin
clk = 1;
forever #5 clk = ~clk;
end
data_a dataa (
.clka(clk), // input wire clka
.ena(rst), // input wire ena
.addra(addr), // input wire [3 : 0] addra
.douta(a) // output wire [7 : 0] douta
);
data_b datab (
.clka(clk), // input wire clka
.ena(rst), // input wire ena
.addra(addr), // input wire [3 : 0] addra
.douta(b) // output wire [7 : 0] douta
);
always@(posedge clk)
begin
if (!rst)begin
addr = 0;
end else
begin if (addr 9)
addr = 0;
else
addr = addr +1;
end
end
always@(posedge clk)
begin
if(!rst)begin
n = 10;
sum = 0;
i = 0;
end
else begin
if (i n+2) begin
sum = sum;
i= i;
end else
begin
sum = sum + a*b;
i = i+1;
end
end
end
endmodule
这写的是个仿真文件,具体的还得改改,a是1:10,b是1:2:19,我把a和b存入了一个ROM,然后一个一个根据地址往外读,最后输出sum是715.
MATLAB代码:
a=1:10;
b=1:2:19;
SUM=sum(a.*b);
最后结果SUM也是715证明Verilog仿出来是对的
看我还是费了一小会儿时间写就给个采纳吧
IP核设置
如果数据长可以直接通过MATLAB生成文件导入
Q5: 内积空间与Hilbert空间
内积空间是一种特殊的赋范空间,从泛函分析发展的历史上看,人们首先注意到的是内积空间而不是赋范空间。
内积空间特别是 空间(完备的内积空间)是对 维欧氏空间 最自然的“推广”,推广到 无穷维空间 (存在收敛性问题)。他们具有与欧氏空间十分相近的性质。
空间迄今为止仍然是应用最广泛的一类空间。
在内积空间和 空间中使用的“几何”概念和术语,与欧几里得几何中的语言相似,它是由E.Schimidt在1908年引入的。
在 中可以定义距离、范数、内积这些概念,设 ,其 内积定义 为:
于是我们有:
定义1: 是数域 上的线性空间,如果对于任意 ,有 中的 一个数 与它们对应,使得对任意的 ,满足:
则称 是 上的一个 内积 ,定义了内积的线性空间 称为 内积空间 。
注1: 是一个 二元函数 ,对于每一个固定的 是 上的一个 线性函数(线性泛函)。(因为满足3. 4. 两条)
在内积空间中,希望定义元素的范数 ,且
定理4:(Schwarz不等式)
设 是内积空间,对于 有
定理6: 每个内积空间 按范数 成为一个赋范空间。
注 : 内积空间 中定义了 范数 ,由范数又可以定义距离,这样就有了 收敛性 等距离空间中所具有的性质。
不等式可以写成:
由 不等式我们还可以得到:
定理7: 设 是内积空间,则内积 是关于 的 连续函数 ,即当 时( 是点列)
特别地,在有了正交性的概念以后,平行四边形法则也成为了勾股定理。
注: 由内积可定义一个范数 内积空间必定是一个赋范空间。再由范数诱导出的距离 又可以成为一个距离空间。
这是内积空间的 特征性质 。
定义12: 完备的内积空间称为 空间
内积空间是否完备是指由内积产生的赋范空间是否完备,即距离空间中的 列是否都收敛。
定理13: 一个完备空间的闭子空间也是完备的。
注 :空间是否完备是由全体 列是否都收敛决定的。由距离空间完备化定理,任何一个内积空间 都可以完备化(因为内积空间也是一个距离空间),即:不完备的内积空间 ,可以完备成一个 空间 , 等距同构于 中的一个稠子集。
定义1: 设 是内积空间, ,若 ,则称 与 正交,记为 。
元素正交于集合:
定义3: 设 是内积空间, ,如果对任意的 ,有 ,则称 正交与 ,记为 。
集合与集合正交:
定义4: 设 是内积空间, 和 是 中的两个子集,如果对于任意的 ,有 ,则称 正交于 ,记为 。
定义5: 设 是内积空间 的子集,则 中所有与 正交的元素组成的集合称为 的 正交补 ,记为 。
定理7: 设 是内积空间, 是 的任意子集,则 是 中的闭子空间。
注 : 是 的子集, 不一定是子空间,但是 是 的闭子空间。
子空间指的是集合内元素的线性组合仍属于该集合则称为是子空间。闭指的是对极限运算是封闭的,取极限后仍在空间里面。
定理8: 设 是内积空间 的一个线性子空间,则 当且仅当对 ,有 。
在前一章节中我们定义了一点 到一个集合 的距离 :
如果存在点 ,使得:
则称 是 在集合 中的 最佳逼近点。 即 是集合中与 “最接近的点”。
下确界就是距离都大于等于这个值,即距离能取到的最小值。
在 空间, 最佳逼近的问题相对比较简单。
首先引进 严格凸 的概念:
定义9: 一个赋范空间 称为 严格凸的 ,如果对于任意的 ,并且 (即单位向量),都有
注 : 为任意凸组合。
定理10 : 内积空间是严格凸的赋范空间。 (其他的赋范空间可能不是严格凸的)
对于严格凸的 空间,我们有
定理11 :设 是 空间 中的非空闭凸集,则对于任意的 ,存在唯一的最佳逼近点 ,使得
注: 闭的保证了存在性,凸集保证了唯一性。
定理12(正交分解定理): 设H是 空间, 是 中的闭子空间,则对于任意的 ,存在唯一的 以及 ,使得
并且
注1: 是 的真闭线性子空间,
在 维欧氏空间,选定 个相互正交的向量 ,则形成 维空间中的一组正交基,即在空间中 建立了一组正交坐标系。
空间中任意一个元素都可以由这组 坐标的线性组合 表示:
其中, 是 在 上的 投影 。并且 向量的长度:
先给出正交系和标准正交系的概念:
定义1: 设 是内积空间 中的非零元素组成的集合。如果当 时, ,则称 是 中的 一个正交系。 若 称 是一个 标准正交系。
定理5: 设 是内积空间 中的标准正交系, 是 个数,当且仅当 时,
取得 最小值。
注1: 和 张成的子空间 正交。
注2: 称 为 在 上的投影, 到 的距离为 。
定义8: 设 是内积空间 中的标准正交系,对于 ,我们称
为 关于 的Fourier级数, 为Fourier系数,即 在 上的正交投影。
一般来说,内积空间中的正交系 可能是不可数集,下面仅讨论由 可数(可列)多个元素组成的正交系。
定理9(Bessel 不等式): 设 是内积空间 中的标准正交列,则对于任意的 ,有
注:与标准正交列相对应的Fourier系数(坐标)是平方可和的,其和小于或等于 。
定理10: 设 是内积空间 中的标准正交列,则对于任意的 ,有
由正项级数收敛的必要条件可知。
定义3: 设 是 中的正交系,如果它张成的子空间的 闭包 是全空间 ,则将 称为是 的 正交基。
定义6: 设 是内积空间, 是 中的标准正交列, 。若
称 关于 的 Parseval 等式成立。
如果对于任意的 , Parseval 等式成立,则称 是 完备的。
注1: 在二维欧氏空间中,Parseval 等式就是勾股定理。
注2: 在 空间中, 关于 的 Fourier 级数收敛到 ,当且仅当 关于 的 Parseval 等式成立。
利用 Gram-Schmidt 正规正交化算法找到一组标准正交列。
空间可分 指的是空间中存在可数稠密子集。
定理1: 一个无穷维的 空间一定包含一个标准正交列。
当内积空间完备时,我们有:
定理3: 是一个 空间,则 可分,当且仅当 中具有至多可数(可列)的标准正交基 。
如果 中元素个数 ,则 等距同构于 , 是线性空间的数域;
如果 ,则 等距同构于 空间。
注: 任何一个无穷维可分的 空间都可以表示为 “坐标形式” 的 空间,即可分的内积空间中的每个元素都与一组由可数(可列)无穷有序数组组成的 坐标一一对应 。
最小内积java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 最小内存、最小内积java代码的信息别忘了在本站进行查找喔。





