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


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


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


(1)$J(w) = \frac{w^TS_bw}{s^TS_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 = \sum\limits_{i=1}^{2} \sum\limits_{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} \sum\limits_{i=1}^{n} x_i$
(5)$w=\sum\limits_{i=1}^{n} \alpha\phi(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^T\mu = \sum\limits_{i=1}^{n} \alpha\phi(x_i) * \frac{1}{n} \sum\limits_{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{w^TS_bw}{s^TS_ww}$,再观察$\mu_i = \frac{1}{n} \sum\limits_{i=1}^{n} x_i$,是不是乘进去就有了我们上一步得到的$w^T\mu$?那我们的目标,就可以进一步表示成:分子/分母!
分子部分:$w^TS_bw$ -> $\alpha^TM\alpha$,为什么就剩下一个$\alpha$?因为两个隐式映射$\phi$被我们揉进了核函数K,这里的M和上面的M意思相同。
分母部分:分母就是暴力乘进去,乘开在这里仅看其中一个类
$$ w^T \sum\limits_{i=1}^{n} \phi(x_i)-\mu w $$ $\Longrightarrow$
$$\sum\limits_{i=1}^{n} (w^T\phi(x_i)w-w^T \mu w)$$ $\Longrightarrow$
$$\sum\limits_{i=1}^{n} w^T\phi(x_i)w-w^T \frac{1}{n} \sum\limits_{i=1}^{n} \phi(x_i) w$$ ( where $w = \sum\limits_{i=1}^{n} \alpha\phi(x_i)$)
然后剩下的就可以用核函数的形式表示了,以便看得较为简洁(同理,揉进去),分母即为:$\alpha^TN\alpha$,这里的N就是把除了$\alpha$的部分做一个变量代换,保持美观整洁。
此时,我们发现,映射变化$\phi$,早就不出现在式子中了,取而代之的是有着明确公式的核函数K(M,N中都含有K),这就是为何说求$\phi$其实没有价值的原因,因为它难算还会被替代,如果好算肯定就算它了。那么我们的目标呢?
$$J(w)=\frac{w^TS_bw}{w^TS_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))$项,进而运用核技巧完成操作。现在疑惑在于,核技巧之多,如何选择?将在思考后补上。

关于Kernel的思考的更多相关文章

  1. 源码编译运行android emulator

    source buile/envsetup.sh lunch sdk-eng make sdk -j2 编译完之后,sdk安装在了下面的目录里 ANDROIID_DIR/out/host/linux- ...

  2. 关于linux kernel slab内存管理的一点思考

    linux kernel 内存管理是个很大的话题,这里记录一点个人关于slab模块的一点思考总结. 有些书把slab介绍成高速缓存,这会让人和cache,特别是cpu cache混淆,造成误解.sla ...

  3. linux kernel同步机制的思考

    在学习内核同步机制的时候,书中介绍了同步方法:原子操作(atomic).自旋锁(spinlock).信号量(semaphore).互斥锁(mutex).完成变量(completion).大内核(BLK ...

  4. 【数据库】_由2000W多条开房数据引发的思考、实践----给在校生的一个真实【练耙场】,同学们,来开始一次伟大的尝试吧。

      ×   缘起---闲逛博客园 前几天的时候,在某一QQ群看到一条消息“XXX酒店开房XXXBTXX迅雷BT下载”,当时是一目十行的心态浏览,目光掠过时, 第一反应我想多了~以为是XX种子(你懂的~ ...

  5. Linux Kernel代码艺术——系统调用宏定义

    我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数 ...

  6. Linux Kernel 代码艺术——编译时断言

    本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...

  7. PRML读书会第六章 Kernel Methods(核函数,线性回归的Dual Representations,高斯过程 ,Gaussian Processes)

    主讲人 网络上的尼采 (新浪微博:@Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:16:05 今天的主要内容:Kernel的基本知识,高斯过程.边思考边打字,有点慢, ...

  8. Kernel Methods (2) Kernel function

    几个重要的问题 现在已经知道了kernel function的定义, 以及使用kernel后可以将非线性问题转换成一个线性问题. 在使用kernel 方法时, 如果稍微思考一下的话, 就会遇到以下几个 ...

  9. 《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考

    I will Make Impossible To I'm possible -----------LittleHann 看了2个多星期.终于把0DAY这本书给看完了,自己动手将书上的实验一个一个实现 ...

随机推荐

  1. java包装类的自动装箱及缓存

    首先看下面一段代码 public static void main(String[] args) { Integer a=1; Integer b=2; Integer c=3; Integer d= ...

  2. jmeter安装,汉化

    下载完成后打开bin文件,选择jmeter.properties打开,搜索language,修改成zh_CN,汉化jmeter,记得去掉前面的#号,然后保存,修改完配置文件后需要重启jmeter 用的 ...

  3. 探究Java如何实现原子操作(atomic operation)

    1. 让我们首先了解下java 中 Volatile 关键字 Volatile可实现java内存模型当中的可见性, java内存模型的可见性: 可见性,是指线程之间的可见性,一个线程修改的状态对另一个 ...

  4. Nginx http升级到https

    http和https的区别是 有的网站,http打开的时候,页面提示不安全,比如你点击下面的网站 [其实是同一个网站] http://www.511easy.com/bug/login http:// ...

  5. MOOC下载器的文档整理

    1.背景   最近学习中国大学MOOC的课程,想把课程的pdf下载下来本地保存并浏览.工具: Setup-Mooc-3.4.0.exe   但是,却发现所下载的文档在不同的文件夹里,浏览很不方便.于是 ...

  6. visual studio 使用技巧——vs技巧

    vs(visual studio)使用技巧: 1,vs有多个断点时,调试时,如果不想命中断点,可以在调试菜单下禁用所有断点: 2,高版本(比如vs2015)的vs支持javascript中使用F12转 ...

  7. 锁、threading.local、线程池

    一.锁 Lock(1次放1个) 什么时候用到锁: 线程安全,多线程操作时,内部会让所有线程排队处理.如:list.dict.queue 线程不安全, import threading import t ...

  8. java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver

    SpringBoot运行报错——java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or rep ...

  9. 在使用rem布局的时候,遇到的样式排版混乱问题,

    在使用rem布局的时候,遇到的样式排版混乱问题, 问题1:设置字体为rem单位,但是没有设置line-height为100%, 即    * {             line-height: 1; ...

  10. Jmeter+Jenkins持续集成(一、环境准备)

    1.安装JDK (1)下载JDK,jdk8u181-x64.dmg 并进行安装 (2)配置环境变量.打开配置文件 open -e .bash_profile.按照自己的安装路径进行配置. JAVA_H ...