XGBoost 笔记

简介

XGBoost是一种基于决策树(CART)的分布式的高效的梯度提升算法,它可被应用到分类、回归、排序等任务中,与一般的GBDT算法相比,XGBoost主要有以下几个优点:

阅读更多

C++ primer-泛型算法

第十章 泛型算法

10.1. 概述

标准库已经为容器类型定义了一些基本操作,但是并没有为各种容器定义诸如排序,查找特定元素等算法,但是标准库定义了一些泛型算法用来解决诸如容器的排序查找等问题。之所以称之为泛型算法是因为,这些算法针对多种容器的多种数据类型均有效。
大多数算法都定义在头文件algorithm 中,一般情况下,泛型算法并不直接操作容器 ,而是遍历由两个迭代器指定的元素的范围进行操作。
迭代器令算法不依赖于容器,但是算法依赖于元素操作的类型,因为算法常常需要比较容器中两个元素的大小,这就要求元素类型支持“<”或”==”运算符,不过大多数算法都可以使用自定义操作来代替运算符。

阅读更多

随机梯度下降算法简介

An overview of gradient descent optimization method

梯度下降算法是一种非常流行的优化算法,它是优化神经网络的最常用的算法之一。当前的具有最优性能的深度学习工具包基本上都包含了不同的实现梯度下降的算法,但是,这些算法在使用的时候基本上都是当作一个黑箱子在使用,用户不知道其具体的实现细节,因为,具体地描述这些算法的优点或缺点是比较困难的。

这篇博客旨在给读者提供一个各个梯度下降算法之所以有用的直觉,从而帮助用户针对具体的问题选择合适的梯度下降算法。我们首先介绍几种梯度下降算法 的变种,然后总结一下使用该算法训练中会出现的一些挑战,之后具体地介绍常见的优化算法以及它们解决上述挑战的动机和相应的更新规则。我们简单地给出了梯度下降算法的平行化和分布式化的一些设置。最终,考虑一些有助于优化梯度下降算法的特别的策略。

梯度下降主要用来最小化目标函数$J(\theta)$ ,其中参数是$\theta \in R^d$,它通过将参数$\theta$往目标函数相对于参数$\theta$的梯度相反的方向进行更新来一步步地减小目标函数值。 其中学习率$\eta$决定了每次更新的步长。 换句话说,假设目标函数是一座山,参数每次都从山的最陡峭的那一面往下面滚,直到到达谷底,即是局部最小点。

阅读更多

爬虫入门

最近一直在做试验,实验跑得特别慢,经常一跑就要两三天,没有实验结果也不想写论文,所以,这两天就看了一点爬虫的基础知识。

主要是跟着这个教程来学:http://cuiqingcai.com/1052.html

最简单的爬虫只需要会使用urllib2库和正则表达式就可以了,不用去考虑多线程,登陆,验证码等问题。爬虫一般是用来在网络上搜集数据的,我们平时用浏览器向特定网站请求数据时,网站会返回html格式的文档,我们所需要的信息一般都包含在html文档中。
所以,爬虫首先需要模拟浏览器的行为向网站请求数据,网站会返回html格式的信息,然后用正则表达式从html中提取出我们需要的信息,这就是最简单的爬虫的所需要实现的功能。

阅读更多

使用pandas读取和处理数据

1.介绍

pandas 是python 中一个常用的开源的进行数据处理的package,它有很多功能,但是我常用的就是使用pandas 来读取和处理数据.

1
import pandas as pd

pandas中数据存储的基本单位是data_frame,不同于numpy 中的array,dataframe 有很多种对数据操作的method。

读入数据:

1
df = pd.read_csv(filename,sep=' ',header=None)

read_csv方法有很多参数,参见:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
常用参数:

file_path:文件路径和名字
sep : 一行的数据之间使用什么符号分割的,一般是空格,csv文件是逗号
header: 用来当列名的行号,如果没有传入names参数,则header = 0 ,如果传入了names,则为None
names:列名,默认为None
如果传入header =None ,则列名为[0,1,..]这样的整数。
如果仅仅传入上述参数,行的索引也为从0开始的整数。

阅读更多