CentOS自带的python一般都是2.4.3,因为某些特殊的需求需要将其升级到2.6.2

下载python2.6.5

直接在这个地址进行下载即可https://www.python.org/download/releases/2.6.5/

进行解压

1
tar xvf Python-2.6.5.tgz

编译安装

先配置安装的前缀

1
./configure --prefix=/usr/local/python2.6.5

然后真正的执行编译安装

1
2
make
make install

注意如果是非管理员用户 请在两个make前面都加上sudo

添加快捷方式

1
ln -sf /usr/local/python2.6.5/bin/python /usr/bin/python

如果原来快捷方式存在 那么先删除,再添加

完工

python --version
Python 2.6.5 

参考

CentOS5.5下安装python2.6 实用,但是排版太难看了-_-

本文大部分参考(译)自wiki[1]
如果说Gradient Boosting是一种机器学习算法框架的话,我想GBT(Gradient Boosting Tree)看做它的实现更为合适

Gradient Boosting原理

与其他Boosting方法一样,Gradient Boosting通过迭代将弱分类器合并成一个强分类器的方法。

对于标准的$(x_i,y_i)$训练集,Gradient Boosting在迭代到第$m$次时,可能会得到一个分类能力不是很强的$f_m$模型,但是他下次迭代并不改变$f_m$,而是生成一个这样的新模型:$$f_{m+1} = f_m+G_{m+1}$$使得$f_{m+1}$较$f_m$而言拥有更为强大的分类能力,那么问题来了,这个$G_{m+1}$该如何训练呢?

Read More

今天在尝试使用scikit-learn的AdaBoost模型时一直报错,

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/sklearn/__init__.py", line 57, in <module>
from .base import clone
File "/Library/Python/2.7/site-packages/sklearn/base.py", line 11, in <module>
from .utils.fixes import signature
File "/Library/Python/2.7/site-packages/sklearn/utils/__init__.py", line 10, in <module>
from .murmurhash import murmurhash3_32
File "numpy.pxd", line 155, in init sklearn.utils.murmurhash (sklearn/utils/murmurhash.c:5029)
ValueError: numpy.dtype has the wrong size, try recompiling

以为是numpy包的问题:卸载重装之后还是照样有问题-_-

Read More

三个凑皮匠,顶一个诸葛亮,打一算法:AdaBoost
本文是自己对AdaBoost的理解,健忘-_-!! 故记录在此.

简介

痛点:大部分强分类器(LRsvm)分类效果还不错,但是可能会遇到过拟合问题,并且训练相对复杂,耗时~
另外大部分弱分类器(阈值分类器,单桩决策树(decision stump)等),他们分类的效果差,可能是极差,只会出现欠拟合,但是他们训练预测快,很快~

天下武功,唯快不破做减法不易,但是做加法就相对简单了^_^ 这就是提升方法.

提升方法需要解决的两个问题:

  1. 在每一轮训练时如何改变数据的权值或概率分布?
  2. 如何将弱分类器组合成一个强分类器?

AdaBoost对此进行了很好的解决:

  1. 分而治之:将前一轮分错的样本加大权重,迫使在第二轮中对这些样本尽量分对,同时减少分对样本的权重.
  2. 加权多数表决:加大错误率小的弱分类器的权重,使其在最终表决中占较大作用,同时减少错误率较大的弱分类器的权重.

Read More

机器学习算法一般都是对损失函数(Loss Function)求最优,大部分损失函数都是包含两项:损失误差项(loss term)以及正则项(regularization term):
$$J(w)=\sum_iL(m_i(w))+\lambda R(w)$$

损失误差项

常用的损失误差项有5种:

  1. Gold Standard
  2. Hinge:Svm
  3. log:logistic regression(cross entropy error)
  4. squared:linear regression
  5. Exponential:Boosting

Read More

由于Pairwise方式的排序学习方法 训练样本构建方便、速度快同时效果也还可以,因此在工业界和学术的应用非常广泛^_^

2002-RankSvm

RankSvm是最经典的一种,将其余的相关实现方法学习总结简单的记录到本文中。
RankSvm的学习记录在这里

2006-IRSVM

IRSVM直接是RankSvm的改进,RankSvm的训练目标是让序列pair的不一致pair对对最少,其优化函数为:
$$\tau(r_a,r_b)=\frac{P-Q}{P+Q}=1-\frac{2Q}{\binom{m}{2}}$$
因此直接暴露了两大问题:

问题1:位置误差

Read More

RankSvm是Pairwise的学习排序中最早也是非常著名的一种算法,主要解决了传统PontWise构建训练样本难的问题,
并且基于Pair的构建的训练样本也更为接近排序概念

基本介绍

RankSvm是在2002年提出的,之前工作关于LTR的工作貌似只有Pointwise相关的,比如PRanking,这样的排序学习算法Work需要含有档位标注的训练样本,一般有以下几种获取方式:

  1. 需要人工/专家标注
  2. 诱导用户对展现的搜索结果进行反馈

这样就会存在会成本高、可持续性低、受标准者影响大等缺点。

Read More

McRank是学习排序(Learning to Rank)的单文档排序分支(Pointwise)中较为经典的一种,本文是读原Paper[1]之后自己的一个理解.

基本介绍

McRank的全称是Multiple Classification Rank,可以理解为将学习排序转为机器学习中的一个多分类问题.
McRankDCG指标进行优化,并且可以证明DCG的误差可以被分类误差给bounded住.

折损累积增益

DCG(Discounted Cumulative Gain)是在信息检索领域评估一个rank好坏的常用指标。(在实际使用中一般会进行归一化,称为NDCG,可以看这里).

假设在指定的query下通过某个排序算法对$n$个文档进行排序,则可以得到
$$DCG=\sum_{i=1}^{n}c_{[\pi_i]}(2^{y_i}-1)$$

Read More