七种常用的特征工程
特征提取+数据预处理四部走
PCA是一种降低纬度的手段,通过求 X X T XX^T XXT的特征向量,然后用特征向量来对 X X X降低纬度
SVD是一种矩阵分解的手段,通过用三个矩阵 U , Σ , V T U,\Sigma,V^T U,Σ,VT来近似表征原始矩阵 A A A;更进一步的,类比于SVD在推荐里的应用,加入 A A A的列是用户,行代表商品,因此 U U U的每一行代表用户的特征,比打分列表短,那么可以看做对打分的降维;反之 V T V^T VT的每一列可以看做商品特征。
贝叶斯超参优化方法
贝叶斯优化 Bayesian Optimization
浅析高斯过程回归(Gaussian process regression)
看不太懂了,和概率论相关的我就想死,总之就是,先假设参数和模型(举例来说,损失大小)是呈一定关系的,假设损失是参数的一个随机过程;然后输入一个点,求一次损失,以某种策略更新一次这个随机过程的参数,再选一个点,再做一次。
求下面的概率图的联合概率
思路是,先分块,找贝叶斯网络里的三种结构,head-tail,tail-tail,v型,然后写独立性条件。
对于ABC这个tail-tail结构,有:
P ( A , B , C ) = P ( A ) P ( B , C ∣ A ) = P ( A ) P ( B ∣ A ) P ( C ∣ A ) \begin{aligned} P(A,B,C)=P(A)P(B,C|A)=P(A)P(B|A)P(C|A) \end{aligned} P(A,B,C)=P(A)P(B,C∣A)=P(A)P(B∣A)P(C∣A)对于B,C,D这个V型结构,有:
P ( B , C , D ) = P ( B ) P ( C ) P ( D ∣ B , C ) P(B,C,D)=P(B)P(C)P(D|B,C) P(B,C,D)=P(B)P(C)P(D∣B,C)于是
P ( A , B , C , D ) = P ( D ∣ A , B , C ) P ( A , B , C ) = P ( A , B , C , D ) / P ( B , C ) P ( A , B , C ) / P ( B , C ) P ( A , B , C ) = P ( D ∣ B , C ) P ( A ) P ( B ∣ A ) P ( C ∣ A ) \begin{aligned} P(A,B,C,D)&=P(D|A,B,C)P(A,B,C)\\ &=\frac{P(A,B,C,D)/P(B,C)}{P(A,B,C)/P(B,C)}P(A,B,C)\\ &=P(D|B,C)P(A)P(B|A)P(C|A) \end{aligned} P(A,B,C,D)=P(D∣A,B,C)P(A,B,C)=P(A,B,C)/P(B,C)P(A,B,C,D)/P(B,C)P(A,B,C)=P(D∣B,C)P(A)P(B∣A)P(C∣A)
1.正则化系数:极端情况下,过拟合是因为模型要拟合每个训练数据,那么模型在局部的波动就要大,对应的就是梯度比较大,也就是说系数很大。反过来讲,系数较小,说明模型对输入没特别敏感,降低了过拟合风险
2.dropout:相当于bagging的一个简单近似,每次训练的都是完整模型的一个子集,预测的时候相当于这些子集一起作用,从集成学习的角度来看,这就是在降低方差
3.batchnorm:这个东西提出是为了防止Covariate shift,如果模型要有用,最起码的保障是训练和测试的数据是独立同分布的。而神经网络往往要处理的是大量的数据,用的还是batch梯度下降,那输入的batch之间很可能分布不同,模型一会儿要拟合这种分布,一会儿又要拟合那种分布,一旦真的做到了拟合各种batch的分布,那结果就很可能是过拟合了。而做了batch norm之后,所有数据都被拉到一个固定的或者近似的分布了,起到了稳定输入的作用,模型可以去学真实的信息。另一个好处就是加速训练。
稀疏连接和参数共享,《百面》上讲的足够好
我想说说inception的设计理念,面试问到过,因为稀疏连接里提到,CNN的设计是,用一个filter学一小块里存储的信息,然后下一层卷积层在上一层的基础上以同样的方式学东西,但需要注意的是原始的卷积层里每个卷积层里的filter都是固定的,比如说feature map是646416,那filter就一个比如说3316*64,那inception在这个基础上进行了创新,把每个卷积层分成几个branch,有些branch过1个filter,有的branch过两层filter,有的层学了1层,有的层学了两层,增加了信息量。
教你如何迅速秒杀掉:99%的海量数据处理面试题
海量数据处理之Bloom Filter详解
「每天一算法」Bitmap算法
Bitmap就是一种映射,只不过key是用bit所在的位数来表示的,value是bit内存的值来表示的
外部排序
mr最耗时的阶段是shuffle的IO
一根1米长的绳子,随机切N刀,变成(N+1)根绳子,为什么最短的一
概率解释来源于https://www.guokr.com/question/468732/, ( 1 − n x ) n − 1 (1-nx)^{n-1} (1−nx)n−1,假设每个最短的绳子长度为x那么这个事件就相当于,其他的 n−1 段都要大于等于 x。换句话说,每一段都得预留出了 x 的长度,只能落在余下的 1−nx 里切割出n-1段。
将一条线段任意分成三段,这三段能构成三角形三边的概率为
剑指Offer(第二版)面试题14:剪绳子(动态规划)
连续子串和问题
在循环数组中找出和最大的连续子串:数组总和一定,那么跨收尾的最大值,就等于总和减去最小连续值
[LeetCode] Divide Two Integers 两数相除
经典算法~~快速求幂的方法
一个通用方法团灭 6 道股票问题
真的神了,dp[i-1][k][1]代表的是,在第i天之前(包括第i天)共买入了k次,并且第i天持有股票的情况下,拥有的最大收益。代表初始情况下收益为0,举例来讲,如果股票价格是[1,7,2,9],那么dp[0][1][1]代表的就是在第一天之前(包括第一天)共买入1次,并且本日持有股票的时候,拥有的最大收益,也就是-1
二叉树的遍历:先序中序后序遍历的递归与非递归实现及层序遍历
先序遍历是中左右,后续是左右中,那如果先序的时候是中右左,反过来就是后序遍历了。
最长递增子序列的三种算法
阶乘n!的结尾后面有多少个零
Leecode 207 判断环
入度为0的点,可以作为拓扑排序的头结点,如果存在环,那么环的入口的入度就一定不会被BFS减至1,因此环内的点是无法被BFS访问到的,因此当访问的节点数目小于总节点,那么就是有环了
leetcode 215. 数组中的第K个最大元素
一维消消乐
TSP旅行商
阿里 达摩院 cv 算法 面经
凸优化,skip connection,KKT,XGBOOST
SVM的KKT补充,因为满足slater条件,因此是强对偶问题,因此满足 ∂ L ∂ w = 0 , ∂ L ∂ b = 0 \frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0 ∂w∂L=0,∂b∂L=0,从而才能得到 w = ∑ α y x i , b = y j − ∑ y i α i ( x i ∗ x j ) w=\sum \alpha yx_i,b=y_j-\sum y_i \alpha_i(x_i*x_j) w=∑αyxi,b=yj−∑yiαi(xi∗xj)
XGBOOST:机器学习算法中 GBDT 和 XGBOOST 的区别有哪些? 这个PPT超级好,GDBT里明确的拟合梯度,做的就是梯度下降的工作,而XGBOOST并没有去直接拟合梯度,而是让泰勒展开式尽量小,有点类似于牛顿法所做的工作。每一个叶子的取值都是尝试尽量使得本叶子节点的损失值尽量小,取值方式和牛顿法一模一样,都是对泰勒展开式的扩展项导数为0。分隔标准也是看损失,看分割之后损失下降的多还是少。
XGBOOST对于连续特征是也是分块的,并且对于特征值用 h i h_i hi进行了加权,就是当前模型对于第 i i i个样本的输出的二阶导数
决策树、RF、xgboost如何处理缺失值?判断特征重要性?缺失值不敏感?
python 迭代器和生成器详解
迭代器就是实现了iter和next的对象,每次调用next就是返回某一个值,就在跑一个next代码;生成器是一遍生成一遍迭代,由生成器函数返回,每当到达yield的时候,返回yield的值,然后程序在此中断,下次从此再执行。
设随机变量X1,X2,…Xn相互独立,且都服从(0,1)上的均匀分布.问:(1)求U=max{X1,X2,…Xn}数学期望.