使用Matlab计算各种距离Distance

计算距离的需求有两种:   一种是给定一个特征集合X,然后计算Pairwise距离矩阵,那么可使用D=pdist(X,distance)的方式;   另一种是给定两个对应的特征集合X和Y,然后计算X与Y对应的距离信息,使用D=pdist2(X,Y,distance)的方式; 需注意,2011版本以前的Matlab是没有pdist2.m文件的,而早期的pdist2.m文件中的距离计算方式也比较少,所以建议使用最新的Matlab版本,很重要。 其中,distance的定义有如下几种: 欧几里德距离Euclidean distance(‘euclidean’) 欧氏距离虽然很有用,但也有明显的缺点。 一:它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。 二:它没有考虑各变量的数量级(量纲),容易犯大数吃小数的毛病。所以,可以先对原始数据进行规范化处理再进行距离计算。 标准欧几里德距离Standardized Euclidean distance(‘seuclidean’) 相比单纯的欧氏距离,标准欧氏距离能够有效的解决上述缺点。注意,这里的V在许多Matlab函数中是可以自己设定的,不一定非得取标准差,可以依据各变量的重要程度设置不同的值,如knnsearch函数中的Scale属性。 马哈拉诺比斯距离Mahalanobis distance(‘mahalanobis’) where C is the covariance matrix. 马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离. 马氏优缺点:   1)马氏距离的计算是建立在总体样本的基础上的,因为C是由总样本计算而来,所以马氏距离的计算是不稳定的;   2)在计算马氏距离过程中,要求总体样本数大于样本的维数。   3)协方差矩阵的逆矩阵可能不存在。 曼哈顿距离(城市区块距离)City block metric(‘cityblock’) Notice that the city block distance is … 继续阅读

Shell-vi替换指定文件中的内容-自动修改SolrLRU

【需求】:利用Shell脚本替换指定文件中的一段数字内容,需要进行模糊匹配。 【具体场景】:自动修改Solr下的LRU参数,并自动重启检索服务 #!/bin/bash    #auther:Jacob Xu 20141102, create for up LRU parameter of Solr    echo “====================== set the configure for solr! ====================”   solrPath=/var/solr/apache-tomcat-7.0.39_ubuntu_29.2_analysis_7080/    echo “solrPath=”$solrPath   newLRU_Num=250    echo “newLRU_Num=”$newLRU_Num      ################## configure solr.xml for solr!###################    rawSolrHome_norm=$solrPath“webapps/analysisNorm001/solrHome/”   rawSolrHome_spam=$solrPath“webapps/analysisSpam001/solrHome/”      ##################################################################    if [ -d "/var/solr/apache-tomcat-7.0.39_ubuntu_29.2_analysis_7080" ]     then            echo “begin to shutdown solr …”           echo $solrPath“bin/shutdown.sh”           bash $solrPath“bin/shutdown.sh”           sleepTime=20            for((;sleepTime>0;sleepTime–))            do                   printf “\rplease waiting ${sleepTime} seconds…”                   sleep 1s            done            kill -9 $(pgrep ${solrPath} -f)    … 继续阅读

修改Solr源码自定义远程核创建和删除操作

【版本】:Solr 4.6(服务端),Solr 4.4(客户端) 注:唉,由于当初项目的原因,导致服务端和客户端 版本不一致,不过还好 接口是兼容的,而且主要功能由服务端完成,因而 各个版本的Solr下载地址:http://archive.apache.org/dist/lucene/solr/ 【需求】: 1. 注册核:可以通过HTTP请求动态着创建对应文件夹,并注册一个Solr新Core; 2. 删除核:可以通过HTTP请求动态删除指定Core,不止要删除索引数据,还要把整个实例文件夹全部删除,要删除干净! 修改:solr-4.6.0-src\solr\core\src\java\org\apache\solr\core\CoreContainer.java 文件

处理数据集4DCNN-ACL2014

DCNN-2014的数据格式: 数据变量名 大小 说明 完成度 index 53714个词 (comWord.dic) 字符串词典,尽量保证训练/测试集及词向量中都有 OK sent_length 40 (实际最大长度38) 文本最大长度 OK size_vocab 53714+1 字典的大小+1个空白词 OK test 2280*sent_length 测试集数据 OK test_lbl 可以没有64位Hash标签 {可无64位Hash标签}{文本长度},由Spectral训练 train 10060*sent_length 训练集数据 OK train_lbl 要64个类别标签 {64位Hash标签}{文本长度},由Spectral训练 vocab_emb_1_CW 50*词典维数 从外部拿到的词向量,覆盖的词向量太少 暂不考虑 vocab_emb_2_HLBL 50*词典维数 如果叠加的话,覆盖的词向量太少 … 继续阅读

Solr MultiValues

1. 什么是MultiValues,如何建立索引: solr的schema.xml配置文件在配置Filed的时候,有个属性: MutiValued:true if this field may containmutiple values per documents,这个说明有点模糊,下面结合实际应用,列举两个不同的例子。 例子一:一个field有多个值MultiValue,值来自同一filed, 如: <field name=”executor” type=”int” indexed=”true” stored=”true” multiValued=”true” / executor这个field可以多个值,任何executor:29 OR executor:40,类似查询都能查出id为3的记录。 附注:使用solrj建此索引时,定义成集合类型即可,如: @Field private Set<Integer> executor; public Set<Integer> getExecutor() { return executor; } public void setExecutor(Set<Integer> executor) … 继续阅读

ICML2014-Nearest-Neighbors and Large-Scale Learning

- Track F – Nearest-Neighbors and Large-Scale Learning (Location: 305-2, Chair: Kilian Weinberger) [01]–10:50 Densifying One Permutation Hashing via Rotation for Fast Near Neighbor Search Anshumali Shrivastava; Ping Li 主要是为降低LSH Query的查询复杂度,扫看全文第一感觉有点类似于WWW2007 GoogleSimHash的查询思路,暂未认真阅读。 使用的数据集:MNIST,NEWS20,WEBSPAM [02]–11:10 Coding for Random Projections Ping Li; … 继续阅读

Reading Paper: ACL2014-Two-Stage Hashing for Fast Document Retrieval

基本思路:LSH + ITQ 的两阶段方法,思路比较清晰明了。 该Paper基于如下两个方法: LSH: A. Andoni and P. Indyk. 2008. Near-optimal hashing algorithms for approximate nearest neighbor in high dimensions. ommunications of the ACM, 51(1):117–122. ITQ: Y. Gong, S. Lazebnik, A. Gordo, and F. Perronnin. 2013. Iterative quantization: … 继续阅读