自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GODSPEED

这世界从来就只有强者的奋斗史,而没有弱者的墓志铭

  • 博客(387)
  • 资源 (1)
  • 收藏
  • 关注

原创 FP-growth算法挖掘频繁项集

概述FP-growth算法基于Apriori构建,但在完成相同任务时采用了一些不同的技术。这里的任务是将数据集存储在一个特定的称作FP树的结构之后发现频繁项集或者频繁项对,即常在一块出现的元素项的集合FP树。这种做法使得算法的执行速度要快于Apriori,通常性能要好两个数量级以上。 FP-growth算法只需要对数据库进行两次扫描,而Apriori算法对每个潜在的频繁项集都会扫描数据集判定给

2016-09-05 20:14:16 4019 1

原创 Apriori算法与关联分析

概述关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项集(frequent item sets)或者关联规则。频繁项集是经常出现在一起的物品的集合,关联规则(association rules)暗示两种物品之间可能存在很强的关系。 一个项集的支持度(support)度被定义为在数据集中包含该项集的记录所占的比例。支持度是针对项集来说的,因此可以定义一个最小支持度,只保

2016-09-04 00:14:39 946

原创 最小角回归(Least Angle Regression)

最小角回归和其他方法的比较逐步选择(forward selection)算法(例如forward stepwise regression)在进行子集选择的时候可能会显得太具有“侵略性”(aggressive),因为每次在选择一个变量后都要重新拟和模型,比如我们第一步选择了一个变量x1x_1,在第二步中可能就会删除掉一个和x1x_1相关但也很重要的变量。 Forward Stagewise是一种比起

2016-08-18 14:44:36 24392 2

原创 感知机模型

首先看一个例子 上图显示IR2IR^2中两个类的20个数据点,这些数据可以被一个线性边界分隔开。前面几篇已经讲了分类的回归方法和LDA,对于这个例子, 橙色的是该问题的最小二乘法解,通过对X上的-1/1响应Y回归得到。 可以看到,这个解不能很好地解决这个问题,因为它错分了一个点。事实上,对于这个问题,LDA的解也就是最小二乘法的解(见上一篇)。上图中两条蓝色的分隔线是以不同随机初始化的感知

2016-08-15 22:27:36 868

原创 线性判别分析(Linear Discriminant Analyst)

线性判别分析LDA为了最优分类,我们要计算后验概率P(G|X)P(G|X)。设fk(x)设f_k(x)是类G=kG=k中XX的类条件密度,而πk\pi_k是类kk的先验概率,贝叶斯定理给出 P(G=k|X=x)=fk(x)πk∑Kl=1fl(x)πlP(G=k|X=x)={f_k(x)\pi_k \over \sum_{l=1}^Kf_l(x)\pi_l} 假定我们用多元高斯分布对每个类

2016-08-14 21:18:28 10108 1

原创 分类的线性回归方法

分类的指示矩阵回归方法考虑将每个相应类型通过一个指示变量编码,这样,如果有K个类,那么对于每一个输入,输出时一个K维向量,其中,如果G=kG=k,那么Yk=1Y_k=1,否则Yk=0Y_k=0,训练集的N个输入形成一个N*K的指示响应矩阵(indicator response matrix)Y。 我们用线性回归模型拟合Y的每一列,拟合由下式给出 Y^=X(XTX)−1XTY\hat Y=X(X^

2016-08-13 15:07:02 2647

原创 最佳子集选择,岭回归,套索的比较

套索(Lasso)Lasso也是一种收缩方法,Lasso估计的定义如下: β^lasso=argminβ∑Ni=1(yi−β0−∑pj=1xijβj)2\hat \beta^{lasso}=arg min_{\beta}\sum_{i=1}^N(y_i-\beta_0-\sum_{j=1}^px_{ij}\beta_j)^2 subject to∑pj=1|βj|<=tsubject\ to \

2016-08-10 21:00:38 8976

原创 岭回归(ridge regression)

收缩方法通过选择自变量的一个子集产生新的线性模型,这个模型是可解释的并且可能具有比完整模型更低的预测误差,然而,由于它是一个离散过程(变量或者保留,或者丢弃),使得子集选择方法常常表现出高方差,因此不能降低整个模型的预测误差。收缩方法更加连续,并且不会因为变量多而过多的降低性能岭回归(Ridge Regression)岭回归通过对系数向量的长度平方添加处罚来收缩系数。 算法极小化如下表达式: β

2016-08-04 20:17:46 17083 1

原创 逐步回归(step regression)和分段回归(stagewise regression)

QR分解 在ols中要计算(XTX)−1(X^TX)^{-1},可以通过矩阵分解简化计算,将X分解成QR乘积的形式,其中Q是一个N∗(p+1)N*(p+1)的正交矩阵,也就是X的列空间的一组正交基,R是一个上三角矩阵,于是,β^=(XTX)−1∗XTy=R−1Qy,y^=QQTy\hat \beta=(X^TX)^{-1}*X^Ty=R^{-1}Qy,\hat y=QQ^Ty。子集选择 有两个原

2016-08-02 21:23:12 26071

原创 线性回归模型和最小二乘法

线性回归模型和最小二乘法最小二乘法极小化残差的平方和,该准则度量平均拟合偏离。 将残差平方和写成如下形式 RSS(θ)=(y−Xβ)T(y−Xβ)RSS(\theta)=(y-X\beta)^T(y-X\beta) 这是p+1p+1个参数的二次函数。 关于β\beta微分,得到 ∂RSS∂β=−2XT(y−XTβ){\partial RSS \over \partial \beta} =

2016-07-31 22:58:06 3011

原创 EM算法与高斯混合聚类

EM算法用Y表示观测随机变量的数据,Z表示隐随机变量的数据,Y和Z连在一起成为完全数据,观测Y又称为不完全数据。假设给定观测数据Y,其概率分布是P(Y|θ)P(Y|\theta),其中θ\theta是要估计的模型参数,完全数据的对数似然函数为logP(Y,Z|θ)logP(Y,Z|\theta),EM算法通过迭代求对数似然函数的极大似然估计,每次迭代包括两步:E步,求期望;M步,求极大化。 算法步

2016-07-19 18:50:21 1684 1

原创 原型聚类总结

概述原型聚类是指聚类结构能通过一组原型刻画,原型是指样本空间中具有代表性的点。通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解,下面是几种著名的原型聚类算法。K均值算法给定样本集合D,K均值算法针对聚类所得簇划分C,最小化平方误差 E=∑ki=1∑x∈Ci||x−μi||22E = \sum_{i=1}^k \sum_{x\in Ci}||x-\mu_i||_2^2 其中μi=1|

2016-07-18 20:07:08 10113 2

原创 提升和加法树及AdaBoost算法总结

提升方法概述一个弱分类器的误差率只比随机猜测好一些,提升的目的就是连续对反复修改的数据应用弱分类算法,由此产生一个弱分类器序列Gm(x)G_m(x),m=1,2,3...Mm=1,2,3...M,然后通过一个加权的多数表决来合并全部预测,以产生最终预测 G(x)=sign(∑Mm=1αmGm(x))G(x) = sign(\sum_{m=1}^M\alpha_mG_m(x)) 这里,αm\alp

2016-07-14 19:54:17 3550 2

原创 SMO算法总结

1.概述SMO(Sequentil Minimal Optimization)算法在支持向量机中用来求解对偶问题,即 min 12∑Ni=1∑Nj=1αiαjyiyjK(xi,xj)−∑Ni=1αimin\space {1\over2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _i\alpha _ jy_iy_jK(x_i, x_j)-\sum_{i=1}^N\alph

2016-06-18 20:44:38 10212 2

原创 logistic回归|梯度下降|牛顿法总结

1.logistic回归模型logistic回归是用线性模型解决分类问题的算法 考虑现在有一个样本集合,样本特征有两维,要用一条直线作为这两类的分界线,如下图所示 也就是说logistic算法就是要找到这么一条直线,使得可以对样本进行分类。但是由于是分类问题,所以我们使用方差来度量模型就不合适了,这也正是logistic算法解决的问题。在这里,我们需要一个函数,可以将线性模型的预测值转换成0/1

2016-06-16 11:17:44 10427

原创 CART决策树算法总结

CART决策树算法,顾名思义可以创建分类树(classification)和回归树(regression)。1.分类树。当CART决策树算法用于创建分类树时,和ID3和C4.5有很多相似之处,但是CART采用基尼指数作为选择划分属性的依据,数据集的纯度用基尼值来度量,具体公式为 Gini(D)=1−∑Ck=1pkGini(D) = 1 - \sum_{k=1}^{C}p^k,其中pkp^k是第K类

2016-06-15 13:55:27 7944

原创 CodeForces 235B Let's Play Osu!(概率dp)

题意:给出一个ox序列,每一段连续的o的得分是o的数量的平方,现在给出每一个位置为o的概率,问得分的期望。思路:首先这道题要将每一个位置分开来看,计算他们对于总体期望的贡献才可以,如果暴力dp的话O(n2n^2)的复杂度时间无法承受。 考虑一段长度为n的连续序列o…o,总共的得分是n2,可以看成是由每个o贡献1分以及任意一对o(可以不相邻,于是共有C2nC^2_n组)贡献2分组成的,这个性质反

2016-06-15 13:11:33 489

原创 ID3和C4.5决策树算法总结

决策树的算法流程主要是: 1.如果当前样本集全部为同一类别,则返回这一类标签 2.如果当前属性集为空集或者D中样本在属性集中的取值全部相同,那么采用多数表决法,返回样本数最多的类标签 3.如果不满足上面三个条件,说明当前结点还可以继续划分,这时候要选择最优的属性 4.选择完属性之后根据属性值划分样本,如果在某个取值下样本集为空,那么标记为父节点中样本最多的类,否则递归产生子节点 5.返回根

2016-06-13 12:32:50 8738 3

原创 CodeForces 101D Castle(树形dp)

题意:给出一棵树,每条边有一个权值,问到达所有节点的路程长度最小平均值是多少。思路:对于一个结点i,假设它有son[I]棵子树,子树中所有边长两倍是T[I],到达所有节点的距离和的最小值为 dp[I],那么可以得到状态转移方程dp[I] = sigma(dp[v]) + (son[I]-son[v1])*T[v1]+...+(son[vs])*T[vs-1]也就是说现在要给子节点规定一

2016-06-10 20:59:44 836

原创 CodeForces 28c Bath Queue(概率dp)

题意:有n个人,m间浴室,每间浴室有a[I]个浴缸,每个人要洗澡的话都要排队,假如一群人进入同一个浴室,他们总倾向于使得最长的队伍最短,现在问所有队伍最长的期望。思路:概率dp。用状态dp[I][j][k]表示还剩I间浴室,还剩j个人,之前最长队伍的长度为k的期望最长队伍长度。 那么可以得到状态转移方程 dp[I][j][k] = sigma(dp[I-1][j-c][max(k, (c+a[i

2016-06-09 14:46:38 1225

原创 K-近邻算法总结

k近邻学习是一种常见的监督学习方法,工作机制是给定测试样本,基于某种距离度量找出训练集中与其最近的k个训练样本,然后根据投票法确定测试样本的类别,k紧邻法是懒惰学习的著名代表。当k=1时,假设给定样本是xx,它的最近的邻居是zz,则此时出错的概率为xx与zz标记不同的概率,不超过贝叶斯最优分类器的错误率的两倍K近邻算法主要有以下特点 优点:精度高,对异常值不敏感,无输入数据嘉定,没有训练过程 缺

2016-06-08 21:40:00 752

原创 CodeForces 24D Broken robot(概率dp+三对角矩阵)

题意:现在有一个迷宫,在任何一个位置向各个方向移动的概率(可以不动)是相同的,问从起点到达最后一行的期望回合数是多少。思路:概率dp,对于当前位置(i,j),有dp[i][j] = 1 + dp[I][j-1]/4 + dp[I][j]/4 + dp[I][j+1] /4,注意这个式子不能使用高斯消元来求解,复杂度会爆炸,其实对于每一行,这m个变量构成了m组等式,系数矩阵是一个三对角矩

2016-06-08 20:04:02 895

原创 CodeForces 26D Tickets(概率)

题意:有n+m个人要买票,其中n个人拿着10元的钞票,m个人拿着20元的钞票,现在手中有k张10元钞票,每张门票价值10元,问所有人能买到门票的概率。思路:如果n=m且k为0,那么这道题就退化成了卡特兰数的问题。现在考虑将所有情况画在一张图上,每个点的x坐标为当前进场人数,y坐标为10元钞票比20元钞票多的数量,所以起点为(0,k),终点为(n+m,n+k-m),总的方案数为C(n+m,

2016-06-07 22:26:48 487

原创 HDU 5715 & 2016"百度之星" 复赛(Astar Round3)1004 XOR游戏(Trie)

题意:众所周知,度度熊喜欢XOR运算(XOR百科)。 今天,它发明了一种XOR新游戏,最开始,它有一个长度为N的数组,度度熊可以任意添加分割线,将数组划分为M段,且每段长度小于等于L。 当然这是个和XOR有关的游戏,度度熊希望所有分组内异或和的最小值最大。 比如,长度为4的数组{1,2,3,4},L为3,可以划分为{1|2,3,4} 或 {1,2|3,4} 或 {1,2,3|4},最小的异或值

2016-05-31 22:28:53 840

原创 HDU 5713 & 2016"百度之星" 复赛(Astar Round3)1002 k个联通块

题意:众所周知,度度熊喜欢图,尤其是联通的图。 今天,它在图上又玩出了新花样,新高度。有一张无重边的无向图, 求有多少个边集,使得删掉边集里的边后,图里恰好有K个连通块。思路:首先可以很容易想到状态压缩,但比赛的时候复杂度算错了导致写挂了…….由二项展开可以知道枚举所有子集的所有子集的复杂度应该是O(3n)O(3^n)而不是O(4n)O(4^n)。这道题用状态dp[s][k]dp[s][k]表示点

2016-05-30 20:20:19 1420

原创 CodeForces 446C DZY Loves Fibonacci Numbers(线段树+数论)

题意:给出一个序列,现在有两种操作,第一种是修改操作,将某个区间加上斐波那契数列的一段,第二种是查询操作,查询某个区间的区间和。思路:这道题要解决的问题就是斐波那契数列的段更新操作。首先写出斐波那契数列的通项公式我们可以把平方根换成模同余的整数首先可以暴力跑出5的平方剩余,也就是说 然后把上式中的非整数用模同余的整数替代所以原式现在变成了也就

2016-05-26 13:53:01 1191

原创 CodeForces 451E Devu and Flowers(容斥原理+组合数学+状态压缩)

题意:给出n堆花,对于第j堆,有f[j]朵花,每堆花的颜色不同,现在要从中选出s朵,求方案数。思路:这道题如果值借用背包做的话复杂度爆炸现在假如没有每堆花的容量限制,那么我们可以用挡板发求出方案数,所以说我们可以先用挡板法先求出总方案数再减去其中不合法的方案数所以我们可以状态压缩枚举不合法的堆,然后用容斥原理来做。#include #define eps 1e-6#define

2016-05-23 22:59:35 992

原创 2016"百度之星" 初赛(Astar Round2B) 1001 区间的价值

题意:我们定义“区间的价值”为一段区间的最大值*最小值。一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1)。现在聪明的杰西想要知道,对于长度为k的区间,最大价值的区间价值是多少。当然,由于这个问题过于简单。我们肯定得加强一下。我们想要知道的是,对于长度为1∼n的区间,最大价值的区间价值分别是多少。思路:我们可以首先rmq预处理出区间最大

2016-05-22 20:43:28 659

原创 CodeForces 585D Present for Vitalik the Philatelist(容斥原理+gcd)

题意:给出一个数字序列,求有多少组满足原来子集不互质,先加一个元素后新集合互质的集合数量。思路:首先解决子问题,如何求出一个集合中互质的子集个数,首先求出I的倍数的元素的个数,记为cnt[I],然后运用容斥原理来做,当I为某些不重复的素数的组合时,当质因数的个数为奇时,减去2^cnt[I]-1,反之则加。如果I的质因数分解的结果中有重复的质因数的情况,那么不加也不减,因为I已经在之前被

2016-05-21 19:09:10 490

原创 CodeForces 594D REQ(树状数组+欧拉函数)

题意:给出一个序列,有m个询问,每次询问要求回答一个区间内所有数的乘积的欧拉函数。 思路:这道题看上去像是一个莫队,但是莫队的时间复杂度为O(n∗sqrt(n)∗k)O(n*sqrt(n)*k),其中k是序列中每个数的质因子的数量的最大值,这样做会超时。 考虑树状数组,因为我们要求的是这个区间内的数的乘积 乘以 这个区间内的不同的质因子的如下形式的乘积 (p−1)/p(p-1)/p 一个区间

2016-05-18 14:23:06 862

原创 CodeForces 645F Cowslip Collections(gcd+欧拉函数)

题意:一开始给出n个数,然后有q个询问每次给出一个新的数字,第I次询问后,输出当前所有k元组的gcd之和。思路:首先将答案写成 ans=sigma(g(d)∗d)ans = sigma(g(d)*d) 的形式 其中g(d)g(d)是公约数为d的k元组的数量 由欧拉函数的性质 m=sigma(phi(d)),d|mm = sigma( phi(d) ), d|m 这个式子可以化简成 ans

2016-05-16 17:40:33 541

原创 CodeForces 616E Sum of Remainders(数论)

题意:给出n,m,计算sigma(n%i)(1思路:将原式化简成 .注意到n/I和i最多只能有一项大于sqrt(n),所以分别枚举这两项然后相加。#include #define eps 1e-6#define LL long long#define pii pair#define pb push_back#define mp make_pair//#pragma comm

2016-05-03 16:15:23 420

原创 CodeForces 666B World Tour

题意:给出一个有向图,现在要经过四个城市,每两个城市之间距离为他们的最短路,求出经过这四个城市的最大距离。思路:直接枚举四个城市的话复杂度为O(n^4),现在考虑枚举中间两个城市,那么这两个城市向外各连接一个城市,也就是说我们可以预处理出每个城市出发所到达的最远城市和到达每个城市所能最远距离,但是这样的话四个城市之中可能会出现重复的城市,所以预处理出每个城市出发所能到达的最大的三个城市和到达每

2016-05-01 14:43:13 1148

原创 CodeForces 612e Square Root of Permutation(置换+构造)

题意:给出一个1到n的序列,定义运算p[I] = q[q[I]],q为p的平方根,现在给出p,求出任意一个符合题意的q。思路:将序列视为一个有向图,对于每个位置,将I和p[I]之间连一条边,可以发现,一个序列是由若干不相交的环组成的,而且对于平方运算,奇环长度不变,偶环分裂成两个小的环,所以可以将p中所有的环求出来。对于奇环,认为他们原先是由奇环组成的,并求出原先的奇环对于偶环,将两个

2016-04-30 16:09:55 730

原创 CodeForces 609E Minimum spanning tree for each edge (lca+最小生成树+倍增)

题意:给出一个n个点m条边的无向图,问每条边所在的最小生成树的权值和是多少。思路:首先求出整个图的最小生成树,然后对于任意一条边替换这条边两点到lca的最大边,这个值就是这条边所在的最小生成树的权值和,可以用倍增记录一下每个点的祖先和到这个祖先的最大边,然后处理出lca,对于每条边求出答案。#include #define eps 1e-6#define LL long long#d

2016-04-26 12:41:24 1206

原创 CodeForces 669E Little Artem and Time Machine(主席树+树状数组)

题意:维护一个multiset,给出n次询问,有三种类型的操作,分别是增加元素,删除元素,查询元素数量,每次询问操作有一个时间和一个元素,询问这个时间的时候这个元素的数量。思路:主席树+树状数组,其中时间可以看成主席树的位置,然后就是用树状数组动态修改主席树中的元素,离散化一下时间和元素然后每次查询输出。树状数组每个结点都是一棵线段树,表示一个区间内所有元素的数量情况,具体见动态主

2016-04-25 22:13:35 716 2

原创 CodeForces 600E Lomsat gelral(树形dp+启发式合并)

题意:给出一棵树,每个节点有一个颜色,求每个节点的子树中颜色数目最多的颜色的和。思路:如果开n^2的数组记录每个节点子树中出现的颜色的次数那么时空复杂度都会达到O(N^2),无法承受现在考虑用map来记录每个节点每个颜色出现的数量,用另一个map记录每个结点中出现某个次数的颜色和,然后用启发式合(合并两个结点时遍历小的合并到大的上)并使时间复杂度降到O(n*logn*logn),空间复杂度

2016-04-23 23:13:07 1091

原创 CodeForces 598E Chocolate Bar(DP|记忆化搜索)

题意:有t个询问,每个询问给出一个长为n,宽为m的矩形,现在要切割这个矩形,每次切割的花费为切口长度的平方,现在问要切下一个面积为k的矩形最小花费为多少。思路:枚举切割第一刀的位置,切割第一刀后,矩形被分成两个矩形,枚举在这两个矩形中的最后要求的面积。#include #define eps 1e-6#define LL long long#define pii pair#defi

2016-04-23 19:11:30 531

原创 CodeForces 665E Beautiful Subarrays(Trie)

题意:给出一个序列,问有多少个子序列的异或的值大于等于k。思路:首先预处理出一个异或的前缀值,对于一个位置j,我们的目标是找到所有的I=k如果一个一个的求异或值,复杂度为O(n^2),现在考虑一位一位的比较将前缀的异或值的二进制字符串插入到trie树中,结点的权值为以这个前缀开头的字符串数量记录当前已走过的二进制位的和为sum,当前二进制位为b,对于当前深度I,如果sum+(1=k

2016-04-21 20:54:09 951

原创 CodeForces 653F Paper task(rmq+二分+后缀数组)

题意:给出一个有左右括号组成的字符串,现在问这个字符串中有多少个不重复的正规的括号序列。思路:首先如果不考虑重复,我们可以求出有多少个包含重复的正规的括号序列,方法是将左括号记为+1,右括号记为-1,处理出前缀和对于以i开始的括号序列,所有满足j>i且sumv[j]=sumv[I-1] 且这段区间内的所有前缀和sumv[k]>=sumv[I-1]那么j就是一个满足条件的终止位置。所

2016-04-21 00:45:40 549

百鸡问题详解

c语言实验题中的百鸡问题对理解c语言很有帮助多看无害

2014-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除