摘要:radic 是我用go语言实现搜索引擎的索引部分,包括:倒排索引正排索引分布式索引 使用举例 首先需要go get github.com/Orisun/radic 更多API参见radic.go 阅读全文
posted @ 2019-08-25 17:06 张朝阳 阅读 (19) 评论 (0) 编辑
摘要:python遇到计算性能瓶颈尽量使用Numpy,因为Numpy会调用C的并行计算库,如果numpy不能实现你的需求,就只好自己写C代码了。 用C实现数组的按位相乘(当然这个功能用numpy就可以实现,这里只是个示例): 值得一提的是,对于计算密集型任务,即使不用OpenMP,C语言的速度也比Pyth 阅读全文
posted @ 2019-08-18 15:11 张朝阳 阅读 (20) 评论 (0) 编辑
摘要:1. 安装Go版TensorFlow TensorFlow 提供了一个 Go API,该 API 特别适合加载用 Python 创建的模型并在 Go 应用中运行这些模型。 安装TensorFlow C库 下载地址 解压 : tar -C $dir -xzf tar_file 添加到动态库: expo 阅读全文
posted @ 2019-08-16 14:31 张朝阳 阅读 (48) 评论 (0) 编辑
摘要:结论: 数据集不同、参数不同、测试方法不同都会导致结论不同,以下是我的测试代码。 storage.go package storage import ( "fmt" ) var storageOpenFunction = map[string]func(path string) (Storage, 阅读全文
posted @ 2018-08-05 22:52 张朝阳 阅读 (1568) 评论 (0) 编辑
摘要:近期调参感受: 试验总结: word2vec 可见下采样参数sample还是很重要的,由1e-3降为1e-4后,<数据挖掘,机器学习>和<机器学习,深度学习>的相似度得到了明显改善。 有2个用户,他们的标签分别是【java|工程师|python|机器学习|模式识别|算法】、【研究生|机器学习|硕士| 阅读全文
posted @ 2018-06-28 18:26 张朝阳 阅读 (1893) 评论 (1) 编辑
摘要:上一篇我们讲了《FFM原理及公式推导》,现在来编码实现一下。 把写代码所需要所有公式都列出来,各符号与原文《Field-aware Factorization Machines for CTR Prediction》中的保持一致。 符号约定: $n$:特征的维数 $m$:域的个数 $k$:隐向量的维 阅读全文
posted @ 2018-02-03 22:12 张朝阳 阅读 (1914) 评论 (0) 编辑
摘要:SSE是Streaming SIMD Extensions的缩写,SIMD是Single Instruction Multiple Data的缩写,即对多条数据并行执行相同的操作,以提高CPU的性能。 从SSE4.1开始支持向量的内积:__m128 _mm_dp_ps( __m128 a,__m12 阅读全文
posted @ 2018-01-14 21:57 张朝阳 阅读 (751) 评论 (0) 编辑
摘要:上一篇讲了FM(Factorization Machines),今天说一说FFM(Field-aware Factorization Machines )。 回顾一下FM: \begin{equation}\hat{y}=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n{\ 阅读全文
posted @ 2017-12-31 17:08 张朝阳 阅读 (6062) 评论 (1) 编辑
摘要:特征组合 如上例特征X有6个维度,年龄是连续值,城市和性别用one-hot表示,假设我们用最简单的线性拟合来预测y值。 $$\hat{y}=w_0+\sum_{i=1}^n{w_ix_i}$$ 实际中“北京的男性用户”、“上海的女性用户”这种组合特征可能是有用的,即$x_i,x_j$($x_i,x_ 阅读全文
posted @ 2017-12-03 15:55 张朝阳 阅读 (4034) 评论 (1) 编辑
摘要:slice 输出: 4 3 [0 1 2][0 1][1 2 0]*****************4 3 [0 1 9][0 1 9][1 9 0]*****************8 5 [0 6 9 7 6][0 1 9][1 9 0]*****************16 10 [0 6 9 阅读全文
posted @ 2017-11-04 22:01 张朝阳 阅读 (258) 评论 (0) 编辑
摘要:本文由网上多篇博客拼凑而成。 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等。但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的。 模型 阅读全文
posted @ 2017-07-06 10:25 张朝阳 阅读 (1681) 评论 (2) 编辑
摘要:指数分布族 \begin{equation} p(y;\eta)=b(y)\cdot exp\{\eta^TT(y)-a(\eta)\} \label{exponential family} \end{equation} $b(y)$和$T(y)$是关于y的函数,$a(\eta)$是关于$\eta$ 阅读全文
posted @ 2017-07-05 20:20 张朝阳 阅读 (1293) 评论 (0) 编辑
摘要:n阶线性方程组 系统矩阵A非奇异,且aii≠0。则 于是雅可比迭代法就有了: 高斯-赛德尔迭代比雅可比迭代收敛性更好,应为它在计算xim+1时利用了已经计算出来的xi-1m+1 …… x1m+1。 阅读全文
posted @ 2017-07-05 13:48 张朝阳 阅读 (793) 评论 (0) 编辑
摘要:参考原文《亚马逊推荐系统20年》 现有所有用户的购物列表: 现在要计算商品X的相似商品。 思路:要计算X和Y的相似度直接计算p(Y|X)即可。根据极大似然估计 \begin{equation} p(Y|X)=\frac{count(X,Y)}{count(X)}=\frac{2}{3} \label 阅读全文
posted @ 2017-07-04 15:53 张朝阳 阅读 (607) 评论 (0) 编辑
摘要:#在github上通过GUI创建一个repositoryhttps://guides.github.com/activities/hello-world/ #新建一个文件echo "# my_fisrt_repository" >> README.md#在当前目录初始化一个git环境git init 阅读全文
posted @ 2017-07-03 14:45 张朝阳 阅读 (215) 评论 (0) 编辑
摘要:我曾经讲过如何度量两个随机变量之间的独立性和相关性,今天来讲一下如何度量两个概率分布之间的相似度。 在概率论中,f散度用来度量两个概率分布$P$和$Q$之间的距离,距离函数具有如下形式: \begin{equation}D_f(P||Q) \equiv \int_{\Omega}f\left(\fr 阅读全文
posted @ 2017-07-01 23:55 张朝阳 阅读 (1613) 评论 (0) 编辑
摘要:最大熵模型 最大熵模型的思想是在满足已知条件的情况下,不对未知情况做任何有偏的假设,这样得到的模型预测风险最小。 满足已知条件,且不对未知情况做任何有偏的假设,即认为未知情况各种事件发生的概率相等,这实际上就是说条件熵最大。 $$max \; H(Y|X)=-\sum_i{\sum_j{p(x_i, 阅读全文
posted @ 2017-07-01 15:43 张朝阳 阅读 (499) 评论 (0) 编辑
摘要:所有机器学习算法的目标就是求得一个决策函数$y=f(x)$或者说是求得一个条件概率$p(y|x)$。 生成模型:直接求联合概率$p(x,y)$,得到$p(x,y)$后就可以去生成样本。HMM、高斯混合模型GMM、LDA、PLSA、Naive Bayes都属于生成模型。当我们得到HMM模型后,就可以根 阅读全文
posted @ 2017-06-30 18:03 张朝阳 阅读 (805) 评论 (0) 编辑
摘要:凸函数 如果一个函数处处二次可微,且对于任意的x都有$f^{''}(x) \ge 0$,则f(x)是凸函数。当x是向量时,$f^{''}(x)$就对应到Hessian矩阵,$f^{''}(x) \ge 0$就对应到Hessian矩阵H是半正定的,即$H \ge 0$。当$f^{''}(x) > 0$ 阅读全文
posted @ 2017-06-30 15:17 张朝阳 阅读 (395) 评论 (0) 编辑
摘要:加、减、乘、除、指数运算、求倒数、取相反数、位运算 等各种运算都是在各个元素上分别进行的 加法 >>> a=numpy.array([2,4,5])>>> b=numpy.array([1,1,1])>>> a+barray([3, 5, 6]) 乘法 >>> a*barray([2, 4, 5]) 阅读全文
posted @ 2017-06-25 16:24 张朝阳 阅读 (8059) 评论 (0) 编辑
摘要:FTRL(Follow The Regularized Leader)是一种优化方法,就如同SGD(Stochastic Gradient Descent)一样。这里直接给出用FTRL优化LR(Logistic Regression)的步骤: 其中$p_t=\sigma(X_t\cdot w)$是L 阅读全文
posted @ 2017-05-14 22:15 张朝阳 阅读 (5381) 评论 (0) 编辑
摘要:RNN 中文分词、词性标注、命名实体识别、机器翻译、语音识别都属于序列挖掘的范畴。序列挖掘的特点就是某一步的输出不仅依赖于这一步的输入,还依赖于其他步的输入或输出。在序列挖掘领域传统的机器学习方法有HMM(Hidden Markov Model,隐马尔可夫模型)和CRF(Conditional Ra 阅读全文
posted @ 2017-04-09 17:35 张朝阳 阅读 (23704) 评论 (1) 编辑
摘要:统计语言模型 问题:如何计算一段文本序列出现的概率? 建模:句子S由T个词组成,$S=w_1,w_2,\cdots,w_T$。则句子出现的概率 $$p(S)=\prod_{i=1}^T{p(w_i|context_{w_i})}$$ $context_{w_i}$表示词$w_i$的上下文环境,统计语 阅读全文
posted @ 2017-04-08 23:24 张朝阳 阅读 (975) 评论 (0) 编辑
摘要:Michael Nielsen在他的在线教程《neural networks and deep learning》中讲得非常浅显和仔细,没有任何数据挖掘基础的人也能掌握神经网络。英文教程很长,我捡些要点翻译一下。 交叉熵损失函数 回顾一下上篇的公式(7)和(8),基于最小平方误差(MSE)的缺失函数 阅读全文
posted @ 2017-03-19 18:55 张朝阳 阅读 (7612) 评论 (0) 编辑
摘要:Michael Nielsen在他的在线教程《neural networks and deep learning》中讲得非常浅显和仔细,没有任何数据挖掘基础的人也能掌握神经网络。英文教程很长,我捡些要点翻译一下。 感知机 \begin{equation}output=\left\{\begin{ma 阅读全文
posted @ 2017-03-19 00:15 张朝阳 阅读 (1254) 评论 (0) 编辑
摘要:查看进程占多少CPU#top -p 25484 查看进程里各个线程占多少CPU#top -p 25484 -H 查看线程的执行栈信息先把线程号转换为16进制。#printf '%0x\n' 286166fc8再通过jstack命令看看这个线程在干嘛$jstack 25484 | grep -A 10 阅读全文
posted @ 2016-10-22 17:50 张朝阳 阅读 (464) 评论 (0) 编辑
摘要:PLSA模型 PLSA和LDA很像,都属于主题模型,即它们都认为上帝在写文章时先以一定概率选择了一个主题,然后在这主题下以一定概率选择了一个词,重复这个过程就完成了一篇文章,即$p(d_i,w_j)=p(z_k|d_i)p(w_j|z_k)$,其中$d$表示文章,$w$表示词,$z$表示主题。 模型 阅读全文
posted @ 2016-07-13 19:43 张朝阳 阅读 (4272) 评论 (1) 编辑
摘要:July已经把Adaboost的实现步骤讲述得非常清楚,我就不再赘述,这里用Python实现了一下。 阅读全文
posted @ 2016-07-02 21:11 张朝阳 阅读 (2299) 评论 (0) 编辑
摘要:有个java程序越跑越慢,如何排查? 首先通过jps找到java进程ID。然后top -p [pid]发现内存占用达到了最大值(-Xmx)。开始怀疑是由于频繁Full GC导致的,于是通过jstat -gcutil [pid] 60000查看GC的情况,其中60000表示每隔1分钟输出一次。果然是F 阅读全文
posted @ 2016-05-28 23:20 张朝阳 阅读 (4083) 评论 (0) 编辑
摘要:很多人讲RBM都要从能量函数讲起,由能量最低导出极小化目标函数(你听说过最常见的建立目标函数的方法可能是最小化平方误差或者最大化似然函数),然后用梯度下降法求解,得到网络参数。Introduction to Restricted Boltzmann Machines这篇博客没有遵循这种套路来讲RBM 阅读全文
posted @ 2016-05-28 17:38 张朝阳 阅读 (6931) 评论 (0) 编辑
摘要:TreeSet的底层是TreeMap的keySet(),而TreeMap是基于红黑树实现的,红黑树是一种平衡二叉查找树,它能保证任何一个节点的左右子树的高度差不会超过较矮的那棵的一倍。 TreeMap是按key排序的,所以TreeSet中的元素也是排好序的。显然元素在插入TreeSet时compar 阅读全文
posted @ 2016-05-27 13:14 张朝阳 阅读 (3409) 评论 (0) 编辑
摘要:LFM LFM即隐因子模型,我们可以把隐因子理解为主题模型中的主题、HMM中的隐藏变量。比如一个用户喜欢《推荐系统实践》这本书,背后的原因可能是该用户喜欢推荐系统、或者是喜欢数据挖掘、亦或者是喜欢作者项亮本人等等,假如真的是由于这3个原因导致的,那如果项亮出了另外一本数据挖掘方面的书,我们可以推测该 阅读全文
posted @ 2016-05-23 00:42 张朝阳 阅读 (14895) 评论 (5) 编辑
摘要:热数据缓存 这是使用缓存最频繁最直接的方式,即我们把需要频繁访问DB的数据加载到内存里面,以提高响应速度。通常我们的做法是使用一个ConcuccrentHashMap<Request, AtomicInteger>来记录一天当中每个请求的次数,每天凌晨取出昨天访问最频繁的K个请求(K取多少个取决你的 阅读全文
posted @ 2016-05-14 21:34 张朝阳 阅读 (1685) 评论 (0) 编辑
摘要:本文讲一些常见的分布式应用层面的技术,其中大部分都依赖于Zookeeper,所以对zookeeper不熟悉的同学可以先看我之前写的两往篇博客Zookeeper编程(二)、Zookeeper编程(一) 锁 我们的推荐程序部署在多台服务器上,每天凌晨会去重建信息索引(索引存在Redis上)。建索引这件事 阅读全文
posted @ 2016-05-14 18:29 张朝阳 阅读 (269) 评论 (0) 编辑
摘要:自己实现了一个简易的MySQL数据操作中间层,经过近一年的线上使用和维护,功能已比较完善,性能方面也没有发现大的问题。诚然类似的开源工具有很多,但对于想快速了解其实现原理的同学来说,本文可以成为你的一个切入口。 ORM实体关系映射 类注解@DataBase和@Table分别注明该类跟哪个库哪张表对应 阅读全文
posted @ 2016-05-14 15:21 张朝阳 阅读 (368) 评论 (0) 编辑
摘要:本文主要围绕scipy中的稀疏矩阵展开,也会介绍几种scipy之外的稀疏矩阵的存储方式。 dok_matrix 继承自dict,key是(row,col)构成的二元组,value是非0元素。 优点: 缺点: 适用场景: coo_matrix 如上图,构造coo_matrix需要3个等长的数组,val 阅读全文
posted @ 2016-05-11 20:41 张朝阳 阅读 (4677) 评论 (0) 编辑
摘要:先来点预备知识。矩阵的3种运算我们称之为“行初等变换”: 以矩阵实施行初等变换等同于在矩阵左边乘以一个矩阵。 当要求矩阵A的逆时,在A的右边放一个单位矩阵,我们称[A|I]为增广矩阵。对增广矩阵实施行初等变换,即左乘一个矩阵P,如果使得P[A|I]=[PA|P]=[I|P],则P就是$A^{-1}$ 阅读全文
posted @ 2016-05-08 21:16 张朝阳 阅读 (6028) 评论 (0) 编辑
摘要:上面的二部图表示user A对item a和c感兴趣,B对a b c d都感兴趣,C对c和d感兴趣。本文假设每条边代表的感兴趣程度是一样的。 现在我们要为user A推荐item,实际上就是计算A对所有item的感兴趣程度。在personal rank算法中不区分user节点和item节点,这样一来 阅读全文
posted @ 2016-05-08 16:22 张朝阳 阅读 (4698) 评论 (2) 编辑
摘要:python3标准库里自带线程池ThreadPoolExecutor和进程池ProcessPoolExecutor。 如果你用的是python2,那可以下载一个模块,叫threadpool,这是线程池。对于进程池可以使用python自带的multiprocessing.Pool。 当然也可以自己写一 阅读全文
posted @ 2016-02-14 12:13 张朝阳 阅读 (1969) 评论 (0) 编辑
摘要:import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollect... 阅读全文
posted @ 2016-01-20 20:56 张朝阳 阅读 (5896) 评论 (0) 编辑