zoukankan      html  css  js  c++  java
  • 关于Kernel的思考

    学习播客_KLDA(推导得很通俗,下面的推导就是源于此篇博客)


    第一部分:按照自己的理解,模仿抄!学习播客来完成一下KLDA的推导。
    第二部分:对于Kernel的思考


    KLDA:顾名思义,就是把Kernel运用到了LDA上,下面直接推导公式。(原始空间数据$x$,映射之后数据$phi(x)$)


    (1)$J(w) = frac{wTS_bw}{sTS_ww}$ ( we will calculate the $w$ to maximum this formula, and then we finished LDA )
    (2)$S_b = (mu_1-mu_2)(mu_1-mu_2)^T$
    (3)$S_w = sumlimits_{i=1}^{2} sumlimits_{j=1}^{n_i}x_{ij}$ ( $x_{ij}$ means $x$$in$$X_i$, and it's the jth element )
    (4)$mu_i = frac{1}{n} sumlimits_{i=1}^{n} x_i$
    (5)$w=sumlimits_{i=1}^{n} alphaphi(x_i)$
    Kernel:$K(x,x_i) = (phi(x)·phi(x_i))$ ( which has a specific formula )


    问题出现了,我们需要的是最大化(1)来完成LDA,那么就涉及到$w$的计算,而在线性的LDA中,我们已经得出了$w$的结果,即:$S_w^{-1}S_b$。现在,我们希望通过核函数来解决,将线性不可分(可以非线性可分)的低维数据,映射到高维空间从而实现线性可分。那么核函数有什么用?我们观察一下核函数:
    Kernel:$K(x,x_i) = (phi(x)·phi(x_i))$,这个式子的本质不就是计算$phi(x)$·$phi(x_i)$么?那么只要求出映射变化$phi$,就可以轻松解决这个问题。紧接着出现了新的问题,如何求出$phi$?答案是——很难,或者说没有价值。因为我们是将低维的数据升维,而很多数据的维度本来就远远高于3维,然后再生个维,$phi$的维度可以说是非常的高,计算将会耗费大量的时间,而我们回顾我们定义的核函数,我们发现它是显示的,你套用哪个,公式就是哪个,而$phi$是隐式的。那我们是不是可以通过避开求解$phi$,而只求$K(x,x_i)$的值,来做同样的事情?答案是肯定的。
    那么,如何求解?我们知道$K(x,x_i)$求的是内积,观察(1)至(5),想要凑出形如$x·x_i$的项,只有结合(4)(5)了,结合之后:
    $$w^Tmu = sumlimits_{i=1}^{n} alphaphi(x_i) * frac{1}{n} sumlimits_{i=1}^{n} x_i = alpha^TM_i$$ ( where $M=K(x,x_i)$, means $M_i$ is a matrix which has the elements of caculation after K )
    接下来呢?看看我们的目标)$J(w) = frac{wTS_bw}{sTS_ww}$,再观察$mu_i = frac{1}{n} sumlimits_{i=1}^{n} x_i$,是不是乘进去就有了我们上一步得到的$w^Tmu$?那我们的目标,就可以进一步表示成:分子/分母!
    分子部分:$w^TS_bw$ -> $alpha^TMalpha$,为什么就剩下一个$alpha$?因为两个隐式映射$phi$被我们揉进了核函数K,这里的M和上面的M意思相同。
    分母部分:分母就是暴力乘进去,乘开在这里仅看其中一个类
    $$ w^T sumlimits_{i=1}^{n} phi(x_i)-mu w $$ $Longrightarrow$
    $$sumlimits_{i=1}^{n} (wTphi(x_i)w-wT mu w)$$ $Longrightarrow$
    $$sumlimits_{i=1}^{n} wTphi(x_i)w-wT frac{1}{n} sumlimits_{i=1}^{n} phi(x_i) w$$ ( where $w = sumlimits_{i=1}^{n} alphaphi(x_i)$)
    然后剩下的就可以用核函数的形式表示了,以便看得较为简洁(同理,揉进去),分母即为:$alpha^TNalpha$,这里的N就是把除了$alpha$的部分做一个变量代换,保持美观整洁。
    此时,我们发现,映射变化$phi$,早就不出现在式子中了,取而代之的是有着明确公式的核函数K(M,N中都含有K),这就是为何说求$phi$其实没有价值的原因,因为它难算还会被替代,如果好算肯定就算它了。那么我们的目标呢?
    $$J(w)=frac{wTS_bw}{wTS_ww}$$ $Longrightarrow$
    $$J(alpha)=frac{alpha^T M alpha}{alpha^T N alpha}$$ ( the answer $alpha=$ the eig_vector of $N^{-1}M$ who has the maximum eig_value )

    关于核函数的思考:核函数,我更喜欢它的另一个名字:核技巧,感觉这个更像核做的事情。因为函数的映射其实不是核做的,是隐式的$phi$做的,而又因为$phi$的维数可以巨高,导致我们没有办法或者不值得去计算它,从而我们考虑将目标求值变形,构造出$(phi(x)·phi(x_i))$项,进而运用核技巧完成操作。现在疑惑在于,核技巧之多,如何选择?将在思考后补上。

  • 相关阅读:
    网络通信2
    linux下使用shell脚本输出带颜色字体
    CentOS7 yum方式安装MySQL5.7
    Prometheus 基于文件的服务发现
    k8s容器探针
    kuberntes部署metallb LoadBalancer负载均衡
    [kubernetes]-namespace 处于Terminating状态的处理方法
    Kubernetes角色访问控制RBAC和权限规则
    k8s 关联pvc到特定的pv
    k8s创建kubeconfig文件
  • 原文地址:https://www.cnblogs.com/FormerAutumn/p/10946840.html
Copyright © 2011-2022 走看看