关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter10

文章目录

  • 1 kkk邻近学习
  • 2 低维嵌入
  • 3 主成分分析
  • 4 核化线性降维
  • 5 流形学习
    • 5.1 等度量映射
    • 5.2 局部线性嵌入
  • 6 度量学习

1 kkk邻近学习

kkk近邻(k−k-kNearest Neighbor, KNN)学习是一种常用的监督学习方法。其基本思想是:给定测试样本,基于某种距离度量找到与其最靠近的kkk个训练样本,根据这kkk个邻居的信息来进行预测。其中,分类问题往往采用“投票法”;回归问题采用“平均法”。 其示意图如下:

k−k-k近邻分类器没有显式的训练过程,训练过程仅需要将样本保存起来,待收到测试样本后再进行处理,是典型的“懒惰训练”(lazy learning)。该方法的核心是确定kkk,当k=1k=1k=1,其又叫做“最近邻分类器”。

给定测试样本xxx,若其最近邻样本为zzz,则最近邻分类器出错的概率是xxxzzz标记不相同的概率:
P(err)=1−∑c∈YP(c∣x)P(c∣z)P(err)=1-\sum_{c\in Y} P(c|x)P(c|z) P(err)=1cYP(cx)P(cz)
假设样本独立同分布,且对于任意xxx和任意小的正数δ\deltaδ,在xxx附近δ\deltaδ距离范围内总能找到一个训练样本。令c∗=arg⁡max⁡c∈YP(c∣x)c^*=\arg\max_{c\in Y} P(c|x)c=argmaxcYP(cx)表示贝叶斯最优分类器的结果,有:

P(err)=1−∑c∈YP(c∣x)P(c∣z)≃1−∑c∈YP2(c∣x)≤1−P2(c∗∣x)=(1+P(c∗∣x))(1−P(c∗∣x))≤2×(1−P(c∗∣x))P(err)=1-\sum_{c\in Y}P(c|x)P(c|z) \simeq1-\sum_{c\in Y}P^2(c|x) \le 1-P^2(c^*|x)\\ =(1+P(c^*|x))(1-P(c^*|x)) \le 2\times (1-P(c^*|x)) P(err)=1cYP(cx)P(cz)1cYP2(cx)1P2(cx)=(1+P(cx))(1P(cx))2×(1P(cx))

最近邻分类器虽然简单,但其泛化错误率不超过贝叶斯最优分类器的错误率的2倍

2 低维嵌入

上一节的讨论我们基于一个重要的假设:训练样本的采样密度足够大。但这个假设在现实生活中往往无法实现,例如若δ=0.001δ=0.001δ=0.001,仅考虑单个属性,则仅需1000个样本点平均分布在归一化后的属性取值范围内,即可使得任意测试样本在其附近0.001距离范围内总能找到一个训练样本,此时最近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍。然而,这仅是属性维数为1的情形,若有更多的属性,则情况会发生显著变化。例如假定属性维数为20,若要求样本满足密采样条件,则至少需(103)20=1060(10^3)^{20}= 10^{60}(103)20=1060个样本.现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字。此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都很困难。

在高维情形下出现的样本数据稀疏、距离计算困难的问题,称为“维数灾难”(curse of dimensionality)。缓解维数灾难的方法就是降维:即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”(subspace)。

降维要求原始空间中的样本之间的距离在低维空间中得以保持,即得到多维缩放(MDS)

  • 假定mmm个样本在原始空间的距离矩阵为D∈Rm×mD\in R^{m\times m}DRm×m,其iiijjj列的元素distijdist_{ij}distij为样本xix_ixixjx_jxj的距离。我们的目标是获得样本在d′d'd维空间的表示Z∈Rd′×m,d′≤dZ\in R^{d'\times m},d'\le dZRd×m,dd,且任意两个样本在d′d'd维的空间中欧氏距离等于原始空间中的距离,即∣∣zi−zj∣∣=distij||z_i-z_j||=dist_{ij}zizj=distij

  • B=ZTZ∈Rm×mB=Z^TZ\in R^{m\times m}B=ZTZRm×m,其中BBB为降维后的样本内积矩阵,bij=ziTzjb_{ij}=z_i^Tz_jbij=ziTzj,有
    distij2=∣∣zi∣∣2+∣∣zj∣∣2−2ziTzj=bii+bjj−2bijdist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=b_{ii}+b_{jj}-2b_{ij} distij2=zi2+zj22ziTzj=bii+bjj2bij

  • 令降维后的样本ZZZ被中心化,即∑i=1mzi=0\sum_{i=1}^m z_i=\bold 0i=1mzi=0。我们可以得到:
    ∑i=1mbij=∑i=1mziTzj=(∑i=1mziT)zj=0∑j=1mbij=∑j=1mziTzj=ziT(∑j=1mzj)=0\sum_{i=1}^m b_{ij}=\sum_{i=1}^m z_i^Tz_j=(\sum_{i=1}^mz_i^T )z_j=\bold 0\\ \sum_{j=1}^m b_{ij}=\sum_{j=1}^m z_i^Tz_j=z_i^T(\sum_{j=1}^mz_j )=\bold 0\\ i=1mbij=i=1mziTzj=(i=1mziT)zj=0j=1mbij=j=1mziTzj=ziT(j=1mzj)=0

  • 根据distdistdist的公式,我们能得到(tr(⋅)tr(\cdot)tr()表示矩阵的迹(trace)):
    ∑i=1jdistij2=∑i=1m(bii+bjj−2bij)=tr(B)+mbjj∑j=1jdistij2=∑j=1m(bii+bjj−2bij)=tr(B)+mbii∑i=1m∑j=1mdistij2=2m⋅tr(B)tr(B)=∑i=1m∣∣zi∣∣2\sum_{i=1}^j dist_{ij}^2=\sum_{i=1}^m (b_{ii}+b_{jj}-2b_{ij})=tr(B)+mb_{jj}\\ \sum_{j=1}^j dist_{ij}^2=\sum_{j=1}^m (b_{ii}+b_{jj}-2b_{ij})=tr(B)+mb_{ii}\\ \sum_{i=1}^m \sum_{j=1}^m dist_{ij}^2=2m \cdot tr(B)\\ tr(B)=\sum_{i=1}^m||z_i||^2 i=1jdistij2=i=1m(bii+bjj2bij)=tr(B)+mbjjj=1jdistij2=j=1m(bii+bjj2bij)=tr(B)+mbiii=1mj=1mdistij2=2mtr(B)tr(B)=i=1mzi2

  • 令:
    disti⋅2=1m∑j=1mdistij2dist⋅j2=1m∑i=1mdistij2dist⋅⋅2=1m2∑i=1m∑j=1mdistij2dist_{i\cdot}^2=\frac{1}{m} \sum_{j=1}^m dist_{ij}^2\\ dist_{\cdot j}^2=\frac{1}{m} \sum_{i=1}^m dist_{ij}^2\\ dist_{\cdot \cdot}^2=\frac{1}{m^2}\sum_{i=1}^m \sum_{j=1}^m dist_{ij}^2\\ disti2=m1j=1mdistij2distj2=m1i=1mdistij2dist2=m21i=1mj=1mdistij2

  • 由上述各式子可得
    bij=−12(distij2−disti⋅2−dist⋅j2+dist⋅⋅2)b_{ij}=-\frac{1}{2}(dist_{ij}^2-dist_{i\cdot}^2-dist_{\cdot j}^2+dist_{\cdot \cdot}^2) bij=21(distij2disti2distj2+dist2)

  • 对矩阵BBB做特征值分解,得B=VΛVTB=V\Lambda V^TB=VΛVT,其中Λ=diag{λ1,λ2,…,λd}\Lambda=diag \{\lambda_1,\lambda_2,…,\lambda_d \}Λ=diag{λ1,λ2,,λd}为特征值构成的对角矩阵,λ1≥λ2≥…≥λd\lambda_1\ge \lambda_2\ge…\ge\lambda_dλ1λ2λdVVV是特征向量矩阵。假定有d∗d^*d个非零特征值,它们构成对角矩阵Λ∗=diag{λ1,λ2,…,λd∗}\Lambda_*=diag\{\lambda_1,\lambda_2,…,\lambda_{d^*} \}Λ=diag{λ1,λ2,,λd},令V∗V_*V表示相应的特征向量矩阵,则有:
    Z=Λ∗1/2V∗T∈Rd∗×mZ=\Lambda_*^{1/2}V_*^T\in R^{d^*\times m} Z=Λ1/2VTRd×m

MDS算法的描述如下:

3 主成分分析

主成分分析(Principal Component Analysis,PCA)是一类典型的线性降维方法。其原理可以通过以下两个性质分别推导:

  • 最近重构性:样本点到超平面的距离足够近
  • 最大可分性:样本点到超平面的投影尽可能分开

最近重构性的角度去推导:

  • 首先对数据样本进行中心化,即∑i=1xi=0\sum_{i=1}x_i=\bold 0i=1xi=0

  • 假定投影变换后得到的新坐标系为:{w1,w2,…,wd}\{w_1,w_2,…,w_d\}{w1,w2,wd}
    其中wiw_iwi是标准正交基向量,∣∣wi∣∣2=1,wiTwj=0(i≠j)||w_i||_2=1,w_i^Tw_j=0\space(i\neq j)wi2=1,wiTwj=0(i=j)。若丢弃部分坐标,即将维度降低到d′<dd'\lt dd<d,则样本点xix_ixi在低维坐标系中的投影为zi={zi1,zi2,…,zid′}z_i=\{z_{i1},z_{i2},…,z_{id'} \}zi={zi1,zi2,,zid},其中zij=wjTxiz_{ij}=w_j^Tx_izij=wjTxixix_ixi在低维坐标系下第jjj维的坐标,若基于ziz_izi来重构xix_ixi,则得到xi^=∑j=1d′zijwj\hat{x_i}=\sum_{j=1}^{d'}z_{ij}w_jxi^=j=1dzijwj

  • 考虑整个训练集,原样本点xix_ixi到基于投影重构的样本点x^i\hat x_ix^i之间的距离为:
    ∑i=1m∣∣∑i=1d′zijwj−xi∣∣22=∑i=1mziTzi−2∑i=1mziTWTxi+const\sum_{i=1}^m||\sum_{i=1}^{d'}z_{ij}w_j-x_i||_2^2=\sum_{i=1}^mz_i^{T}z_i-2\sum_{i=1}^mz_i^{T}W^{T}x_i+const i=1mi=1dzijwjxi22=i=1mziTzi2i=1mziTWTxi+const

  • 其中W=(w1,w2,…,wd)W=(w_1,w_2,…,w_d)W=(w1,w2,,wd)。根据最近重构性,应最小化上式,等价于:
    min⁡W−tr(WTXXTW)s.t.WTW=I\min_{W} -tr(W^TXX^TW)\\ s.t. W^TW=I Wmintr(WTXXTW)s.t.WTW=I

只需对协方差矩阵XXTXX^TXXT进行特征值分解,将求得的特征值排序:λ1≥λ2≥...≥λd\lambda_1≥\lambda_2≥...≥\lambda_dλ1λ2...λd,再取前d′d'd个特征值对应的特征向量构成W=(w1,w2,...,wd′)W=(w_1,w_2,..., w_{d'})W=(w1,w2,...,wd).这就是主成分分析的解。PCA算法描述如图所示:

4 核化线性降维

线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入。下图给出了一个例子, 样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将丢失原本的低维结构。

为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为 “本真”(intrinsic)低维空间

非线性降维的一种方法是基于核技巧的对线性降维方法进行“核化”(kernelized)。以核主成分分析(Kernelized PCA)为例:

  • 假定高维特征空间中把数据投影到由W={w1,w2,…,wd}W=\{w_1,w_2,…,w_d \}W={w1,w2,,wd}确定的超平面,对于wjw_jwj,有
    (∑i=1mziziT)wj=λjwj(\sum_{i=1}^mz_iz_i^T)w_j=\lambda_jw_j (i=1mziziT)wj=λjwj

  • 易知:
    wj=1λj(∑i=1mziziT)wj=∑i=1mziziTwjλj=∑i=1mziαijw_j=\frac{1}{\lambda_j}(\sum_{i=1}^mz_iz_i^T)w_j=\sum_{i=1}^mz_i\frac{z_i^Tw_j}{\lambda_j}=\sum_{i=1}^m z_i\alpha_i^j wj=λj1(i=1mziziT)wj=i=1mziλjziTwj=i=1mziαij

  • 假设ziz_izi由原始属性空间中的样本点xix_ixi通过映射ϕ\phiϕ产生,即zi=ϕ(xi),i=1,2,…,mz_i=\phi(x_i),i=1,2,…,mzi=ϕ(xi),i=1,2,,m。若ϕ\phiϕ能被显式表达出来,则通过它将样本映射到高维特征空间,再将特征空间中实施PCA即可
    (∑i=1mϕ(xi)ϕ(xi)T)wj=λjwjwj=∑i=1mϕ(xi)αij(\sum_{i=1}^m \phi(x_i)\phi(x_i)^T )w_j=\lambda_jw_j\\ w_j=\sum_{i=1}^m\phi(x_i)\alpha_i^j (i=1mϕ(xi)ϕ(xi)T)wj=λjwjwj=i=1mϕ(xi)αij

  • 引入核函数:κ(xi,xj)=ϕ(xi)ϕ(xj)\kappa(x_i,x_j)=\phi(x_i)\phi(x_j)κ(xi,xj)=ϕ(xi)ϕ(xj)

  • 化简后可得:
    Kαj=λjαjK\alpha^j=\lambda_j \alpha^j Kαj=λjαj

  • 其中,KKKκ\kappaκ对应的核矩阵,(K)ij=κ(xi,xj),αj=(α1j,α2j,…,αmj)(K)_{ij}=\kappa(x_i,x_j),\alpha_j=(\alpha_1^j,\alpha_2^j,…,\alpha_m^j)(K)ij=κ(xi,xj),αj=(α1j,α2j,,αmj)。显然上式是一个特征值分解问题,去KKK最大的d′d'd个特征值对应的特征向量即可。

  • 对于新样本xxx,其投影后的第jjj维坐标为:
    zj=wjTϕ(x)=∑i=1mαijϕ(xi)Tϕ(x)=∑i=1Tαijκ(xi,x)z_j=w_j^T\phi(x)=\sum_{i=1}^m\alpha_i^j\phi(x_i)^T\phi(x)=\sum_{i=1}^T\alpha_i^j\kappa(x_i,x) zj=wjTϕ(x)=i=1mαijϕ(xi)Tϕ(x)=i=1Tαijκ(xi,x)

5 流形学习

流形学习(manifold learning) 是一类借鉴了拓扑流形概念的降维方法。流形是在局部与欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算。这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质,因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局。 当维数被降至二维或三维时,能对数据进行可视化展示,因此流形学习也可被用于可视化。

5.1 等度量映射

等度量映射(Isometric Mapping,简称Isomap):认为低维流形嵌入到高维空间之后,直接再高维空间计算直线距离有误导性,因为高维空间中直线距离在低维嵌入流形中不可达。如蚂蚁从一点爬到另一点,直接计算直线距离相当于“脱离曲面行走”,这是不可能的,具体见下图。

那么,如何计算测地线距离呢?

这时我们可利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出其近邻点,然后就能建立一个近邻连接图,图中近邻点之间存在连接,而非近邻点之间不存在连接,于是,计算两点之间测地线距离的问题,就转变为计算近邻连接图上两点之间的最短路径问题。 可以采用dijkstra算法或Floyd算法求得最短路径,再利用MDS算法获得样本点在低维空间中的坐标。

综上,Isomap算法流程如下:

需注意的是,Isomap仅是得到了训练样本在低维空间的坐标,对于新样本,如何将其映射到低维空间呢?这个问题的常用解决方案,是将训练样本的高维空间坐标作为输入、低维空间坐标作为输出,训练以一个回归学习器来对新样本的低维空间坐标进行预测。

5.2 局部线性嵌入

等度量映射试图保持邻域内样本之间的距离,而局部线性嵌入(Locally Linera Embedding,LLE)试图保持邻域内样本之间的线性关系

假定样本xix_ixi的坐标能通过其邻域样本xj,xk,xlx_j,x_k,x_lxj,xk,xl的坐标通过线性组合表示:
xi=wijxj+wikxk+wilxlx_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l xi=wijxj+wikxk+wilxl
LLE希望上式在低维空间中能得以保持。

其算法描述如下图:

6 度量学习

在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好。事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量。那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning) 的基本动机.

对两个ddd维样本xix_ixixjx_jxj,它们之间的平方欧氏距离可以写为:
disted2(xi,xj)=∣∣xi−xj∣∣22=distij,12+distij,22+…+distij,d2dist_{ed}^2(x_i,x_j)=||x_i-x_j||^2_2=dist_{ij,1}^2+dist_{ij,2}^2+…+dist_{ij,d}^2 disted2(xi,xj)=xixj22=distij,12+distij,22++distij,d2
其中,distij,kdist_{ij,k}distij,k表示xix_ixixjx_jxj之间在kkk维上的距离。同时若假定不同属性的重要性不同,可以引入属性权重www,得到:

disted2(xi,xj)=w1⋅distij,12+w2⋅distij,22+…+wd⋅distij,d2=(xi−xj)TW(xi−xj)dist_{ed}^2(x_i,x_j)=w_1\cdot dist_{ij,1}^2+w_2\cdot dist_{ij,2}^2+…+w_d\cdot dist_{ij,d}^2 \\ =(x_i-x_j)^TW(x_i-x_j) disted2(xi,xj)=w1distij,12+w2distij,22++wddistij,d2=(xixj)TW(xixj)

其中W=diag(w)W=diag(w)W=diag(w)是一个对角矩阵,(W)ii=wi(W)_{ii}=w_i(W)ii=wi

式中的WWW可通过学习确定,但我们还能再往前走一步:WWW的非对角元素均为零,这意味着坐标轴是正交的,即属性之间无关;但现实问题中往往不是这样,例如考虑西瓜的“重量”和“体积”这两个属性,它们显然是正相关的,其对应的坐标轴不再正交。

为此,将式中的WWW替换为一个普通的半正定对称矩阵M,于是就得到了马氏距离(Mahalanobis distance)
distmah2(xi,xj)=(xi−xj)TM(xi−xj)=∣∣xi−xj∣∣M2dist_{mah}^2(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||_M^2 distmah2(xi,xj)=(xixj)TM(xixj)=xixjM2
MMM亦称度量矩阵。对MMM学习要设立一个目标,假定我们希望提高近邻分类器的性能,可以将MMM直接嵌入到近邻分类器的评价指标中,通过优化该性能指标求得MMM。下面以近邻成分分析为例:

  • 近邻分类器往往以投票法进行判别。假设对于任意样本xjx_jxj,它对xix_ixi的分类结果影响的概率为
    pij=exp(−∣∣xi−xj∣∣M2)∑lexp(−∣∣xi−xl∣∣M2)p_{ij}=\frac{exp(-||x_i-x_j||_M^2)}{\sum_l exp(-||x_i-x_l||_M^2)} pij=lexp(xixlM2)exp(xixjM2)
    xjx_jxjxix_ixi的影响随着它们之间距离的增加而减小

  • 若以留一法正确率的最大化为目标,可直接计算xix_ixi的留一法的正确理,即它被自身之外所有样本正确分类的概率:
    pi=∑j∈Ωipijp_i=\sum_{j\in \Omega_i}p_{ij} pi=jΩipij

  • 因此,NCA的优化目标为:
    min⁡P1−∑i=1m∑j∈Ωiexp(−∣∣xi−xj∣∣M2)∑lexp(−∣∣xi−xl∣∣M2)\min_{P} 1-\sum_{i=1}^m\sum_{j\in \Omega_i}\frac{exp(-||x_i-x_j||_M^2)}{\sum_l exp(-||x_i-x_l||_M^2)} Pmin1i=1mjΩilexp(xixlM2)exp(xixjM2)

  • 求解上式即可以得到最大化近邻分类器LOO正确率的距离度量矩阵MMM

机器学习(周志华) 第十章降维与度量学习相关推荐

  1. 机器学习(周志华) 参考答案 第十四章 概率图模型 14.9

    机器学习(周志华西瓜书) 参考答案 总目录 http://blog.csdn.net/icefire_tyh/article/details/52064910 机器学习(周志华) 参考答案 第十四章 ...

  2. 机器学习 周志华 第一章课后习题

    机器学习 周志华 第一章课后习题 1.1 1.2 1.3 1.4 1.5 1.1 在下面这张图片中若只包含编号为1和4的两个样例,试给出相应的版本空间. 书上实例: 1.表 1.1 对应的假设空间如下 ...

  3. 小吴的《机器学习 周志华》学习笔记 第二章 模型评估与选择

    小吴的<机器学习 周志华>学习笔记 第二章 模型评估与选择 上一周我们介绍了第一章的基础概念,这一次将带来第二章的前三节.后面的2.4 比较检验与2.5 偏差与方差,涉及概率论与数理统计概 ...

  4. 小吴的《机器学习 周志华》学习笔记 第一章 绪论

    小吴的<机器学习 周志华>学习笔记 第一章 绪论 近一年时间接触到不少机器学习的知识,虽然断断续续学了一些,总感觉还没有入门(只学会了疯狂调包).因此,最近开始系统学习Machine Le ...

  5. 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差

    小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...

  6. 机器学习 周志华 课后习题3.5 线性判别分析LDA

    机器学习 周志华 课后习题3.5 线性判别分析LDA 照着书上敲了敲啥都不会,雀食折磨 python代码 # coding=UTF-8 from numpy import * # 我安装numpy的时 ...

  7. 西瓜书入门辅助【机器学习 周志华】一些关于机器学习的重要基础概念提炼

    周志华. 机器学习 = Machine Learning. 清华大学出版社, 2016. Print. 文章目录 周志华. 机器学习 = Machine Learning. 清华大学出版社, 2016 ...

  8. 机器学习-周志华-学习记录-第一章绪论

    文章目录 绪论 一.什么是机器学习 二.基本术语 三.假设空间 四.归纳偏好 总结 参考链接 绪论 为了更早地适应研究生的生活,我决定重新学习周志华老师的机器学习这本书.同时也为了能够养成博客记录的习 ...

  9. 机器学习-周志华教授

    机器学习 南京大学周志华教授网课视频:https://www.xuetangx.com/learn/nju0802bt/nju0802bt/14363483/video/26163027 202210 ...

最新文章

  1. 语句覆盖(Statement coverage)
  2. Android——与查询联系人相关的3张表
  3. Java JDBC批处理插入数据操作
  4. 图解Oracle用户管理
  5. 基于stm32f405控制三相无刷电机例程_直流有刷电机和无刷电机的区别
  6. idea2019运行php项目,新版IntelliJ phpstrom IDEA 2019.2版本的使用方法
  7. spring cloud gateway集成hystrix全局断路器
  8. linux setsockopt函数
  9. 编译安装imagick出错:make: *** [imagick_class.lo] Error 1
  10. LookUpEditPopup自动调整宽度
  11. 互联网的未来之下:政权 金权 人权 无关平权
  12. 眼底图像血管增强与分割--(2)Gabor滤波算法原理及实现
  13. 自己仿的一个网页,比较适合小白入门
  14. 索尼NW-A55日版改中文
  15. 图书管理系统 (大一小白级别)
  16. 快速将彩色照片变成黑白照片(仅适用于jpg格式)
  17. u盘连接计算机找不到,重装系统后U盘插入电脑怎么没反应?找不到U盘盘符解决办法...
  18. echarts中国地图边缘设置阴影投影效果,并添加散点,大小根据数值改变
  19. 计算机软考高级好考吗?需要备考多久?
  20. 谷牛期权持仓重心上移

热门文章

  1. 分布式系统与计算机网络
  2. PTA 团体程序设计天梯赛-练习集 L1-034 点赞(20 分)C语言
  3. 四种电子取证软件的比较
  4. Android 二维码 生成和识别
  5. android微信分享图片踩坑之旅
  6. html5自动播放音乐外链,仿网易云音乐外链播放器UI的HTML5音乐播放器插件
  7. txt文件编码批量转换器 2.11 官方版
  8. [UE]模块无法被加载,因此插件加载失败。可能存在系统错误,或模块未能正确设置
  9. 全数字实时仿真软件SkyEye与可信编译器L2C的核心翻译步骤的设计与实现
  10. input框不能输入的几种方式