随笔分类 -  机器学习与算法

摘要:转载一篇文章,作为记录,有时间去看一遍~为了方便大家从理论到实践,从入门到精通,循序渐进系统地理解和掌握推荐系统相关知识。特做了个读物清单。大家可以按此表阅读,也欢迎提出意见和指出未标明的经典文献以丰富各学科需求(为避免初学者疲于奔命,每个方向只推荐几篇经典文献)。1. 中文综述(了解概念-入门篇)a) 个性化推荐系统的研究进展b) 个性化推荐系统评价方法综述2. 英文综述(了解概念-进阶篇)a) 2004ACMTois-Evaluating collaborative filtering recommender systemsb) 2004ACMTois -Introduction to R 阅读全文
posted @ 2012-04-09 09:45 ~大器晚成~ 阅读(4085) 评论(0) 推荐(3) 编辑
摘要:上次介绍了信息检索技术——布尔检索,布尔模型已经可以解决一个很重要的问题,就是找到和用户需求相关的文档(其中还需要很多处理,比如分词,归一化,去掉停用词等等,我们只是介绍主要的框架流程)。但是这样找到的文档会有很多,也许上千个,也许上万个,这远远不是用户所要的。用户也不会去从几万个文档中挑选自己要找的。因此我们需要对结果进行排序,把最能满足用户需求的文档放在最上面显示给用户,就像google和baidu做的一样。细心的朋友就能发现,其实信息检索是一个循序渐进的剪枝和筛选过程,最后留下的就是用户想要的。因此,我们需要一种评分机制来进行排序,通过得分的高低排除top N的文档返回给用户。这个评分通 阅读全文
posted @ 2012-03-28 09:49 ~大器晚成~ 阅读(12395) 评论(3) 推荐(1) 编辑
摘要:前一阵子和大家分享了一系列排序算法,希望对大家能够有一些帮助。从今天开始,本人打算开展一个新的领域,介绍一下信息检索相关的技术。信息检索技术可以说现如今发展非常迅速,使用也极其广泛,甚至可以说是随处可见。特别是做一些跟搜索引擎,机器学习相关工作时,信息检索的知识无处不在。为了让大家更好的理解信息检索技术,我将分多次对信息检索技术做一个尽可能细致的阐述,难度由浅及深,欢迎大家多多拍砖。今天先介绍最简单的信息检索技术,布尔检索。信息检索(IR),通俗的讲,就是要在一个很大的文本(有时可能是其他数据,如图像等)集合中,找到与用户需求相关的可以满足用户需求的非结构化信息。听起来有点拗口,其实就是一种查 阅读全文
posted @ 2012-03-27 15:23 ~大器晚成~ 阅读(6705) 评论(1) 推荐(3) 编辑
摘要:今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。举例说明一下吧,这个可能不是太好理解。假设 阅读全文
posted @ 2012-02-29 10:13 ~大器晚成~ 阅读(313529) 评论(71) 推荐(33) 编辑
摘要:在前面的文章中,已经向大家介绍了插入排序和选择排序两种基本的排序方法。今天要介绍的是另外一种排序方法——冒泡排序。思想同之前介绍的两种排序方式一样,冒泡排序也是最简单最基本的排序方法之一。冒泡排序的思想很简单,就是以此比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上。举例分析说明一下,如下数据:2 7 4 6 9 1 首先比较最后两个数字,发现1比9小,于是前移2 7 4 6 1 9 然后比较6和12 7 4 1 6 9 继续前移,然后是4和12 7 1 4 6 9 7和1比较2 1 7 4 6 9 2和11 2 7 4 6 9 至此,第一 阅读全文
posted @ 2012-02-28 09:40 ~大器晚成~ 阅读(11838) 评论(9) 推荐(5) 编辑
摘要:今天继续介绍排序算法系列的第二讲,选择排序。选择排序也是一种常见的排序方法,非常简单。废话不说,来看看吧。思想还是先来看看选择排序的思想。选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。不过条条大路通罗马,两者的目的是一样的。代码 for(int i=0; i<v.size(); i++){ int min = v[i]; ... 阅读全文
posted @ 2012-02-27 10:03 ~大器晚成~ 阅读(76031) 评论(13) 推荐(8) 编辑
摘要:各种排序算法应有尽有,看看这里http://coolshell.cn/articles/3933.html,很牛吧。有了这个,还敢说自己学不好排序么,呵呵什么?不明白哪个快那个慢?那看看这里http://www.sorting-algorithms.com/一句话总结,高手都在民间。。。 阅读全文
posted @ 2012-02-24 17:10 ~大器晚成~ 阅读(3241) 评论(5) 推荐(2) 编辑
摘要:好久没有写文章了,前一阵子身体不适。从今天开始,想把各种排序算法总结一下,基础才是最终要的,况且现在各种面试都会考到排序知识,希望我的文章能给大家带来一些帮助。这个排序系列没有主要次要之分,也不按难易顺序,完全随机。今天先说说插入排序。思想插入排序的思想有点像打扑克抓牌的时候,我们插入扑克牌的做法。想象一下,抓牌时,我们都是把抓到的牌按顺序放在手中。因此每抓一张新牌,我们都将其插入到已有的排好序的手牌当中,注意体会刚才的那句话。也就是说,插入排序的思想是,将新来的元素按顺序放入一个已有的有序序列当中。举个例子可能更容易理解一些,假设有这样一系列数字: 8 2 4 9 3 6 首先我们考虑数字. 阅读全文
posted @ 2012-02-23 12:14 ~大器晚成~ 阅读(8603) 评论(5) 推荐(2) 编辑
摘要:文本分类的定义 文本分类是现在非常热门的一个研究领域,也是机器学习中最为重要最为基础的组成部分。文本分类有各种各样的方法,有些简单易懂,有些看上去非常复杂。其实只要搞清楚他们背后的原理,理解文本分类并不是一件很困难的事情。今天先从宏观上介绍一下文本分类,后续会在其他博文中分门别类对文本分类这一课题进行深入的分析,敬请关注。也希望各位高手们多提建议,毕竟我也是菜鸟一个。 文本分类就是将一篇文章归入已有的几个类别当中,这里注重强调2点: 1 要分类的类别必须是事先确定的,并且短时间内不会发生改变。 2 分类的类别并不一定唯一。 文本分类的方法 1 人工制订规则 这种方法最大的弊端... 阅读全文
posted @ 2012-02-14 09:27 ~大器晚成~ 阅读(9378) 评论(7) 推荐(3) 编辑
摘要:前一阵子准备毕业论文的开题,一直在看推荐系统相关的论文。对推荐系统有了一个更加清晰和理性的认识,也对推荐算法有了深入了解。借此机会总结分享一下,大家多多拍砖。推荐系统的出现 随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。 搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当... 阅读全文
posted @ 2012-02-04 13:19 ~大器晚成~ 阅读(85068) 评论(15) 推荐(12) 编辑
摘要:在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。本文将带你深入了解协同过滤的秘密。下面直接进入正题1 什么是协同过滤协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。换句话说,就是借鉴和你相关人群的观点来进行推荐,很好理解。2 协同过滤的实现要实现协同过滤的推荐算法,要进行以下三 阅读全文
posted @ 2012-02-01 20:03 ~大器晚成~ 阅读(81172) 评论(7) 推荐(14) 编辑
摘要:前面写了个简单的线性代数系列文章,目的就是让大家在接触SVD分解前,先了解回忆一下线性代数的基本知识,有助于大家理解SVD分解。不至于一下被大量的线性代数操作搞晕。这次终于开始正题——SVD的介绍了。所谓SVD,就是要把矩阵进行如下转换:A = USVTthe columns ofUare the eigenvectors of theAATmatrix and the columns ofVare the eigenvectors of theATAmatrix.VTis the transpose ofVandSis a diagonal matrix. By definition the 阅读全文
posted @ 2012-01-19 10:57 ~大器晚成~ 阅读(21231) 评论(6) 推荐(6) 编辑
摘要:这一遍进入到核心内容,计算特征值和特征向量。相信有了前两篇的基础,大家不会觉得有什么障碍了。下面进入正题1 计算特征值 对于矩阵Z = cI, I 为单位矩阵,如果满足|A-cI| = 0。 也就是将A由一个一般矩阵转化为奇异矩阵(行列式为0的矩阵叫奇异矩阵)。也就是求A的特征值。 下面是计算方法: 由此可以求得A的两个特征值C1和C2。通过比较得知,C2是最大的特征值,称为主要特征值。(在svd分解中,常常会将最小的几个特征值忽略,以达到抽取特征的目的。)2 通过特征之计算特征向量 满足 (A-ciI)* Xi = 0 的Xi为A的一个特征向量 计算方法如下: 3 通过特征向... 阅读全文
posted @ 2012-01-18 15:16 ~大器晚成~ 阅读(3048) 评论(1) 推荐(2) 编辑
摘要:之前介绍了矩阵的基本概念,这一篇介绍一下矩阵的运算。1 整体介绍 加法:Z=A+B zij=aij+bij 减法:Z=A-B zij=aij-bij 乘法:Z=A*B zij=ai1*b1j+ai2*b2j+...+aim*bnj 与数字的乘除:Z=c*A zij = c*aij; Z= A/c zij = aij/c 2 加法运算 Z = A + B zij = aij + bij也就是要将两个矩阵相应位置的元素加起来,当成新矩阵的新元素。3 减法运算 Z = A - B 将两个矩阵相应位置的元素求差。 4 乘法运算 5 与数字乘除 6 正交矩阵如果一个矩阵乘以他的转置,得... 阅读全文
posted @ 2012-01-18 14:04 ~大器晚成~ 阅读(3595) 评论(0) 推荐(0) 编辑
摘要:准备写一篇关于奇异值分解的文章,突然发现里面需要用到很多线性代数的知识。因此先介绍一下线性代数的基本概念和运算,有助于读者对奇异值分解的理解。1 基本概念 一个矩阵就是有若干行和列组成的数字,相当于一个表格。 特别地,如果矩阵的行和列个数相同,则该矩阵为一个方阵。在矩阵中A中的元素aij,代表第i行第j列的元素。自左上角元素向右下角元素的连线为主对角线,主对角线上元素的和称为矩阵的迹。 只有一行的矩阵叫做行矩阵,只有一列的矩阵叫做列矩阵。所有元素都为0的矩阵为空矩阵如果一个矩阵只有对角线上的元素不为零,这样的矩阵叫对角阵。如果一个对角矩阵所有元素都相等,叫做标量矩阵。特别地,如果所有元素... 阅读全文
posted @ 2012-01-18 13:46 ~大器晚成~ 阅读(3441) 评论(3) 推荐(0) 编辑