谈谈SVD和LSA

首先SVD和LSA是什么呢,SVD全称是singular value decomposition,就是俗称的奇异值分解,SVD的用处有很多,比如可以做PCA(主成分分析),做图形压缩,做LSA,那LSA是什么呢,LSA全称Latent semantic analysis,中文的意思是隐含语义分析,LSA算是topic model的一种,对于LSA的直观认识就是文章里有词语,而词语是由不同的主题生成的,比如一篇文章包含词语计算机,另一篇文章包含词语电脑,在一般的向量空间来看,这两篇文章不相关,但是在LSA看来,这两个词属于同一个主题,所以两篇文章也是相关的。
继续阅读

, , , , , 9 comments

基于用户的协同过滤和皮尔逊相关系数

推荐系统的经典算法就是协同过滤了,协同过滤算法有两种,一种是基于物品的,一种是基于用户的。从很多实验效果来看基于用户的协同过滤算法要好于基于物品的协同过滤算法。
继续阅读

, , 5 comments

CUDA编程入门

CUDA的全称是Compute Unified Device Architecture, 是NVIDIA® 公司的并行计算架构,主要是要来利用GPU的计算能力,来提高计算性能。进一步的说是在GPU上提供标准C编程语言,为在支持CUDA的NVIDIA GPU上进行并行计算而提供了统一的软硬件解决方案。
继续阅读

, 1 comment

写python的c扩展简介

python是一门非常方便的动态语言,很多你用c或者java要很多行的代码,可能python几行就搞定了,所以python社区一直有个口号“人生苦短,我用python”,但是方便至于,也带来速度上的问题。python最被人诟病的就是程序的运行速度了,所以结合c的快速和python的方便,就诞生了很多解决方案。首先注意到python就是c写成的,所以最根本的解决方案就是利用原生的python c api来写c程序,然后编译成链接库文件(linux下就是so文件),然后在python中直接调用,而且其他的解决方案也基本是围绕这个思路,只不过替你做了很多重复的工作。这次主要是简要介绍下python c apiswig,sip,ctypescythoncffi的使用。
继续阅读

, 4 comments

python实现websocket服务器

websocket是什么呢,websocket是一个浏览器和服务器通信的新的协议,一般而言,浏览器和服务器通信最常用的是http协议,但是http协议是无状态的,每次浏览器请求信息,服务器返回信息后这个浏览器和服务器通信的信道就被关闭了,这样使得服务器如果想主动给浏览器发送信息变得不可能了,服务器推技术在http时代的解决方案一个是客户端去轮询,或是使用comet技术,而websocket则和一般的socket一样,使得浏览器和服务器建立了一个双工的通道。
继续阅读

, , 1 comment

网络协议简介

这几天重温了一下网络协议,感觉有必要记录一下。首先就是对于现在而言,网络分为7层,第一层为物理层,往后依次是链路层,网络层,传输层,会话层,表示层,应用层,而一般情况下可以把会话层,表示层,应用层整体看作一个应用层,最为经典的案例就是ip协议在网络层,tcp在传输层,http在应用层。
继续阅读

, 发表评论

查找第K小的元素

感觉这是个经典问题了,但是今天看维基百科的时候还是有了新的发现,话说这个问题,比较挫的解决方案有先排序,然后找到第K小的,复杂度是O(nlogn),还有就是利用选择排序或者是堆排序来搞,选择排序是O(kn),堆排序是O(nlogk),比较好的解决方案是利用类似快速排序的思想来找到第K小,复杂度为O(n),但是最坏情况可能达到O(n^2),不过今天要说的,就是还有种方法可以使得最坏情况也是O(n)。
继续阅读

11 comments