- 博客(153)
- 资源 (1)
- 收藏
- 关注
原创 PCA和SVD数据降维
PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。
2023-10-08 14:08:19
1077
原创 正交对角化,奇异值分解
与普通矩阵对角化不同的是,正交对角化是使用正交矩阵对角化,正交矩阵是每列向量都是单位向量,正交矩阵*它的转置就是单位矩阵。与普通矩阵对角化一样,正交对角化的结果也是由特征值组成的对角矩阵。成立的正交矩阵V,V是由特征向量的单位向量组成如果特征向量是。本质还是特征向量对原矩阵的拉伸,收缩。B为特征向量的正交矩阵,对角化为。的特征值来求,和上面的V一样。A为特征向量矩阵,对角化为。下面用奇异值分解来举个例子。上面两个的结果是一样的。
2023-09-27 16:10:12
512
原创 基变换与矩阵对角化
结果一定是对角矩阵,因为此变换本质只涉及拉伸,所以一定是对角矩阵。基变换矩阵是特征向量构成的,而特征向量是当前空间进行中间矩阵变换时不空间不变化的向量。所以把当前空间的变换转换到特征基的空间后,变换就变成了对基的放缩操作,也就是特征值构成的矩阵。中映射只会发生拉伸,翻转,所以将特征向量作为基,进行基变换,特征向量为。特征向量是当基向量进行旋转,剪切,拉伸等操作后保持不变的向量。,变换过程中只发生拉伸,翻转操作的向量为特征向量。,则需要先将其转换为我们向量空间中显示,即。矩阵乘法的本质是映射坐标。
2023-09-21 11:58:53
345
原创 apriori 生成关联度算法
a->ab,当a存在时ab的出现概率为p(ab)/p(a)=2/3。现有一个集合L={a,a,a,b,b,b,ab,ab}p(a)为a的个数/总数=3/8。
2023-09-20 09:00:22
220
原创 聚类-kmeans
例如现在只有一个簇A,第一轮分裂成A,A1,下一次比较A,A1两个分裂的结果哪个更换,比如A1更好,所以分裂结果为A,A1,A11。聚类算法是无监督学习算法,指定将数据分成k个簇。然后通过每个点到各个簇的中心的欧氏距离来分类。二分kmeans是遍历所有的簇,将其分成2个,比较哪一个分裂结果更好,用距离和来代表误差。kmeans本身会陷入局部最小值的状况,二分kmeans可以解决这一点。
2023-09-13 17:03:17
426
原创 树回归CART
之前线性回归创建的模型需要拟合所有的样本点,但数据特征众多,关系复杂时,构建全局模型就很困难。之前构建决策树使用的算法是ID3。ID3 的做法是每次选取当前最佳的特征来分割数据,并按照该特征的所有可能取值来切分。也就是说,如果一个特征有 4 种取值,那么数据将被切分成 4 份。一旦按照某特征切分后,该特征在之后的算法执行过程中将不会再起作用,所以有观点认为这种切分方式过于迅速。另外一种方法是二元切分法,即每次把数据集切分成两份。
2023-09-12 13:56:54
342
原创 回归 Regression
与线性回归不同的是,逻辑回归由于其联系函数的选择,它的参数估计方法不再使用最小二乘法,而是极大似然法。之前讲的逻辑回归是处理分类问题,而线性回归是处理连续问题。读入数据,将数据特征x、特征标签y存储在矩阵x、y中。,极大似然法的思想也是如出一辙的,但是它是通过。用一个基本例子验证,然后用数学归纳法证明。对w求导,令其=0,找出最小loss。相乘,然后求导,不难看出公式是正确的。同样此公式也可以用公式1的例子验证。来最小化预测和实际之间的“距离”。分子是列向量,分母是行向量。分母是列向量,分子是行向量。
2023-09-11 11:58:36
392
原创 逻辑回归Logistic
因此,为了实现 Logistic 回归分类器,我们可以在每个特征上都乘以一个回归系数(如下公式所示),然后把所有结果值相加,将这个总和代入 Sigmoid 函数中,进而得到一个范围在 0~1 之间的数值。所以,Logistic 回归也是一种概率估计,比如这里Sigmoid 函数得出的值为0.5,可以理解为给定数据和参数,数据被分入 1 类的概率为0.5。如果目标函数是似然函数(Likelihood function),就是要最大化似然函数来求函数的最大值,那就用梯度上升。因此,对应的公式可以写成。
2023-09-03 08:50:20
627
原创 朴素贝叶斯
意思是cx都发生的概率=x发生的概率乘以x发生的情况下c发生的概率。c,x不独立时,p(cx)=p(c|x)p(x)贝叶斯理论一个重要的概念是条件概率。
2023-09-01 15:44:31
183
原创 决策树(Decision Tree)
信息熵 下面正式引出信息熵:信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量 x 的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?假如有两个不相关事件,x和y,两个事件同时发生时获得的信息应该等于观察到的事件各自发生时获得的信息之和,即:h(x,y)=h(x)+h(y)代表随机事件x的概率。
2023-09-01 13:02:19
1011
原创 KNN(k邻近)
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的 k 个实例,这 k 个实例的多数属于某个类,就把该输入实例分为这个类。优点: 精度高、对异常值不敏感、无数据输入假定。缺点: 计算复杂度高、空间复杂度高。适用数据范围: 数值型和标称型。
2023-08-31 16:58:16
85
原创 提升方法AdaBoost算法
弱分类器可以是多层决策树,内部原理应该是先分第一层,然后遍历所有特征值,分第二层,然后再遍历未使用的特征值,分第三层。大概流程是首先建立一个弱分类,然后计算其错误率,根据错误的样本数给样本分配权重,然后再根据这个样本权重去计算新的最小分类错误率,以此类推,直到所有分类器权重*样本==label。根据D来计算每个特征值的错误率即 wD=D*Error(error表示划分的数据集错误率),从中选择一个最好的划分(最好的预测结果为G(x),特征列i,特征值,minerror)表示的是弱分类器的权重*其分类结果。
2023-08-31 15:51:29
122
原创 随机森林random forest
大概意思是,从训练集中随机抽样n个,然后将这n个组建成树,树按照特征值来划分左右树,寻找最优分类的左右树,按照Gini指数的计算问题,假如将原始数据集D切割两部分,分别为D1和D2,则Gini(D|切割)=(|D1|/|D|)*Gini(D1)+(|D2|/|D|)*Gini(D2)。gini越小,数据分类越准确。这算法没什么好讲的,比较简单。
2023-08-24 14:14:37
120
原创 FTT续写之范德蒙逆矩阵
求范德蒙逆矩阵也是一个大坑,用到的数学知识也很重要,拉格朗日插值法,最重要是代数基本定理写的有点丑陋,代数基本定理可以自己尝试证明下。虽然整个推导流程清晰明了,但是一些细节让人头疼,比如分解时候用到泰勒展开。
2023-08-22 14:19:51
78
原创 SVM详解
公式太多了,就用图片用笔记呈现,SVM虽然算法本质一目了然,但其中用到的数学推导还是挺多的,其中拉格朗日约束关于α>0这块证明我看了很长时间,到底是因为悟性不够。对偶问题也是,用了一个简单的例子才明白,事实上,从简单的例子进行来理解更复杂的东西确实很舒服。核函数这块主要是正定核函数的证明需要看一下,K(x.z)=I(x)*I(z),先升维再求点积=先点积再升维。最后SMO,经典中的经典,看的我头疼,最主要的就是公式的推导。以上为jupyter实现。
2023-08-22 11:56:12
796
原创 数论中的一个小证明 如果一个整数的各个数字之和能被3(或9)整除,那么这个数就一定能被(3 )或(9 )整除。
证明:以三位数为例,100a+10b+c,如果a+b+c可以被3整除,那么99a+9b+a+b+c也可以被三整除,9也同理,因为个位数只有一位,所有只能拆一份a+b+c,所以,只适用3,9。
2020-07-05 13:26:48
1119
原创 快速幂
typedef long long ll;ll mod;ll qpow(ll a, ll n)//计算a^n % mod{ ll re = 1; while(n) { if(n & 1)//判断n的最后一位是否为1 re = (re * a) % mod; n >>= 1;//舍去n的最后一...
2020-07-05 13:21:08
141
原创 uva1631
题意:有一个n(n≤1000)位密码锁,每位都是0~9,可以循环旋转。每次可以让1~3个相邻 数字同时往上或者往下转一格。例如,567890->567901(最后3位向上转)。输入初始状态 和终止状态(长度不超过1000),问最少要转几次。例如,111111到222222至少转2次,由 896521到183995则要转12次。分析:分成两种情况向上转和向下转,题目说可以同时转1~3,所以...
2019-07-13 09:23:24
342
原创 uva242
题目描述:假定一张信封最多贴5张邮票,如果只能贴1分和3分的邮票,可以组成面值1~13以及 15,但不能组成面值14。我们说:对于邮票组合{1,3}以及数量上限S=5,最大连续邮资为 13。输入S(S≤10)和若干邮票组合(邮票面值不超过100),选出最大连续邮资最大的一个 组合。如果有多个并列,邮票组合中邮票的张数应最多。如果还有并列,邮票从大到小排序 后字典序应最大。分析:完全背包,因...
2019-06-25 16:27:31
288
原创 uva1630
题目描述:给出一个由大写字母组成的长度为n(1≤n≤100)的串,“折叠”成一个尽量短的串。例 如,AAAAAAAAAABABABCCD折叠成9(A)3(AB)CCD。折叠是可以嵌套的,例 如,NEERCYESYESYESNEERCYESYESYES可以折叠成2(NEERC3(YES))。多解时可以输出 任意解。分析:枚举分割字符串位置,检查是否有字串再和原串长度比较。#include&...
2019-06-24 18:01:53
226
原创 uva1629
题目描述:有一个n行m列(1≤n,m≤20)的网格蛋糕上有一些樱桃。每次可以用一刀沿着网格线把 蛋糕切成两块,并且只能够直切不能拐弯。要求最后每一块蛋糕上恰好有一个樱桃,且切割 线总长度最小。分析:dp切割行和列#include<iostream>#include<algorithm>#include<math.h>#include<str...
2019-06-24 15:20:47
244
原创 uva10118
题意:给定4堆糖果,每堆有n颗,有一个最多可以装5个糖果的袋子,每次选择一堆糖果,把最顶上的一颗拿到袋子里,如果袋子里有两颗一样的糖果就拿走。问最多可拿几对。分析:枚举每次可以从4堆中任意一堆拿走。#include<iostream>#include<algorithm>#include<math.h>#include<string.h&g...
2019-05-28 23:48:35
303
原创 对局匹配
小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, ... AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来...
2019-05-13 22:28:34
158
原创 发现环(并查集)
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-13 20:44:35
561
原创 搭积木
问题描述小明对搭积木非常感兴趣。他的积木都是同样大小的正立方体。在搭积木时,小明选取 m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第0层。随后,小明可以在上面摆放第1层,第2层,……,最多摆放至第n层。摆放积木必须遵循三条规则:规则1:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木对齐;规则2:同一层中的积木必须连续摆放,中间不能留有空隙;规则3:...
2019-05-11 07:33:20
442
原创 uva1628 最优路径问题
和修缮长城uva1336一起看#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<q...
2019-05-10 07:59:29
229
原创 uva1375 难题
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-10 07:09:25
250
原创 uva1228
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-10 06:07:31
170
原创 uva1439
能将题目转化为图的色数问题就基本解决了#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include&...
2019-05-09 07:58:53
218
1
原创 uva10559
两种情况:1.找到相似方块直接消去 2.将中间方块枚举消去,两边方块可以累计平方更大。#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<...
2019-05-09 06:34:13
216
原创 uva1380
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-09 06:11:40
238
原创 uva12170 Easy Climb ACM/NWERC
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-08 08:02:27
195
原创 uva12099 Bookcase ACM NWERC
书上,作者分析很详细#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue...
2019-05-08 07:21:00
174
原创 uva1204
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-08 06:28:04
266
原创 uva1336
这题相当于二分法,就两个决策,向左向右,关于费用计算要注意,作者是每次都把所有点的总费用累积到状态值中。#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>...
2019-05-07 07:01:21
194
原创 uva10934
题意:给定k个气球,n楼层,输出最少需要多少次实验才能确定可以摔碎的楼层。第一种,d[i][j]用i个气球实验j次所能测试楼的最高层数,第一次决策,设测试楼层为k。如果气球破了,说明前k-1层必须能用i-1个球实验j-1次测出来,也就是说k=d[i-1][j-1]+1是最优如果气球没破,则相当于把第k+1层楼看作1楼以后的继续。因此在k层楼之上还可以测试d[i][j-1]层楼,即d[i...
2019-05-07 06:03:42
381
1
原创 uva1627
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-06 22:03:54
175
原创 uva10618
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-06 21:06:53
246
原创 uva1252
#include<iostream>#include<algorithm>#include<math.h>#include<string.h>#include<stdio.h>#include<string>#include<vector>#include<queue>#include...
2019-05-06 07:10:14
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人