机器学习中 有价值,高质量的数据集汇总 持续更新中…

巧妇难为无米之炊,没有有价值,高质量的数据集, 我们搞数据科学的怎么混呢?

今天David 9 把收集的机器学习中的高质量数据集晒一晒,以后也会持续更新:

1. 机器学习UCI数据库 :http://archive.ics.uci.edu/ml/

2. KDD cup竞赛数据集 : http://kdd.ics.uci.edu/

3. 明尼苏达大学整理的数据集http://dmr.cs.umn.edu/datasets.html

4. 华盛顿大学整理的数据集: http://www.cs.washington.edu/dm/vfml/

5. 预测者网,金融数据服务: http://yucezhe.com/product/home 继续阅读机器学习中 有价值,高质量的数据集汇总 持续更新中…

蒙特卡洛树搜索 MCTS 入门

什么是 MCTS?

全称 Monte Carlo Tree Search,是一种人工智能问题中做出最优决策的方法,一般是在组合博弈中的行动(move)规划形式。它结合了随机模拟的一般性和树搜索的准确性。

MCTS 受到快速关注主要是由计算机围棋程序的成功以及其潜在的在众多难题上的应用所致。超越博弈游戏本身,MCTS 理论上可以被用在以 {状态 state,行动 action} 对定义和用模拟进行预测输出结果的任何领域。

基本算法

基本的 MCTS 算法非常简单:根据模拟的输出结果,按照节点构造搜索树。其过程可以分为下面的若干步: 继续阅读蒙特卡洛树搜索 MCTS 入门

关于conda和anaconda不可不知的误解和事实——conda必知必会

2012年发布的跨平台包管理软件conda,是在数据分析界和Numpy和Scipy一样受欢迎的python工具。但是普通程序员平时只是会使用conda安装一些第三方包, 对它从哪里来,它是什么,和它要到哪里去所知甚少。今天我们就要讲一下关于conda和anaconda不可不知的误解和事实——conda必知必会的那些事实。

误解 #1:Conda是python的一个发行版,不是一个包管理器。

事实: Conda是一个包管理器;Anaconda才是一个python发行版。虽然conda是用Anaconda打包的, 但是它们两个的目标是完全不同的。

软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用。包管理器是自动化软件安装,更新,卸载的一种工具。Conda,有命令”conda install”, “conda update”, “conda remove”, 所以很明显, conda是包管理器。

再来说说, Anaconda 和 Miniconda. Anaconda发行版会预装很多pydata生态圈里的软件,而Miniconda是最小的conda安装环境, 一个干净的conda环境。

但是,conda和Anaconda没有必然关系, 你可以不安装Anaconda的同时, 使用conda安装和管理软件。

误解 #2: Conda是一个python包管理器

继续阅读关于conda和anaconda不可不知的误解和事实——conda必知必会

Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门, 用”人话”解释CNN #第三讲 CNN

上一期我们讲到Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第二讲 word2vec . 今天是我们第三讲, 仔细讲一下CNN.

所讲解的Workshop地址:http://bit.ly/tf-workshop-slides
示例代码地址:https://github.com/amygdala/tensorflow-workshop

首先什么是CNN? 其实, 用”人话”简洁地说, 卷积神经网络关键就在于”卷积”二字, 卷积是指神经网络对输入的特征提取的方法不同. 学过卷积的同学一定知道, 在通信中, 卷积是对输入信号经过持续的转换, 持续输出另一组信号的过程.

convolution_of_box_signal_with_itself2

上图来自维基百科, 经过红色方框的持续转换, 我们关注红色方框和蓝色方框的重叠面积, 于是我们得到新的输出: 黑色线的函数. 这正是通过卷积生成新函数的过程. 继续阅读Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门, 用”人话”解释CNN #第三讲 CNN

聊聊集成学习和”多样性”, “差异性”的那些事儿~

在第3期 “#3 集成学习–机器学习中的群策群力” 中我们谈到, 集成学习是使用一系列学习器进行学习,以某种规则把各个学习结果进行整合,从而获得比基学习器有更好学习效果集成学习器.

集成学习之所以有更好的学习效果, 与单个基学习器的“多样性”或者说“差异性”密不可分.

正像大自然万物的多样性随处可见, 生物繁衍产生下一代的过程.

集成学习的关键是允许每个单个学习器有各自的差异性, 同时又有一定错误率上界的情况下, 集成所有单个学习器. 正如在繁衍下一代时, 父母各自贡献自己的DNA片段, 取长补短, 去重组得到新的下一代基因组合.

对此, [Krogh and Vedelsby, 1995]给出了一个称之为”误差-分歧分解“(error-ambiguity decomposition)的漂亮式子:

\(E =\overline{E} – \overline{A} \)

\(E \) 表示集成后模型的泛化误差. 继续阅读聊聊集成学习和”多样性”, “差异性”的那些事儿~

#8 究竟什么是”逻辑回归”, “对数几率回归”, 和”Logistic Regression”… 知道它们是同一个概念似乎还不够…

今天拜读南大周志华老师今年1月的新书《机器学习》, 决定趴一趴Logistic Regression. 在各种书籍, 网络中它们翻译各不相同, 有叫”逻辑回归”的, 也有叫”对数回归” “的, 也有叫”对数几率回归”. 其实, 这几个概念都是同一个概念.

当然, 我是认为周志华老师的”对数几率回归”的说法比较恰当.

那David 9我就来当个”传教士”, 说说什么是”对数几率回归”, 为什么要叫”对数几率回归” ?

说”对数几率回归”, 我们必须从”线性回归”和”广义线性回归”说起:

linear_regression-svg
这是维基百科上的一个线性回归例子

线性回归非常简单, 给你一个样本集合\(D = {(x_1, y_1), (x_2, y_2), (x_3, y_3), (x_i, y_i)……(x_m, y_m)}\), 注意这里\(x_i, y_i\)可以都是高维向量

于是目标是找到一个好的线性模拟:

\(f(x_i) = wx_i + b\)

求出w, b, 这个模型就算固定了. 如何衡量样本y和你的f(x)之间的差别, 每个人都有不同的方法, 最常用的, 当然是最小二乘法, 也就是用欧氏距离去衡量.

Whatever ~ 我们用一条线去模拟和预测未来的数据, 即, 给我一个x值, 我能给你一个预测的y值, 这就是线性回归.

“广义线性回归”又是怎么回事?

也非常简单, 我们不再只是用线性函数模拟数据, 而是在外层加了一个单调可微函数g, 即:

\(f(x_i) = g^{-1}(wx_i + b)\)

如果g=ln , 则这个广义线性模型就变为对数线性回归. 其实本质就是给原来线性变换加上一个非线性变换(或者说映射), 使得模拟的函数有非线性的属性, 但是, 本质上调参还是线性的, 主体是内部线性的调参. 来一发《机器学习》中的直观截图:

picture 继续阅读#8 究竟什么是”逻辑回归”, “对数几率回归”, 和”Logistic Regression”… 知道它们是同一个概念似乎还不够…

五分钟解释什么是蒙特卡罗(Monte Carlo Method)方法

我们经常在各类算法中看到”蒙特卡罗”(Monte Carlo)的字样, 比如MCMC(Markov Chain Monte Carlo) , 还有AlphaGo使用的蒙特卡洛搜索树. 其实, “蒙特卡罗”并不是一个特定算法, 它是一个思想或者方法的统称. 听起来很神秘, 其实用正常”人话”就能简单解释.

维基百科对蒙特卡罗方法英语:Monte Carlo method)给出的解释是:

二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

与它对应的是确定性算法

所以说, 蒙特卡罗算出的值, 不是精确的而是一个估计, 但是在人们可以接受的错误范围.

下面是维基百科上一个很直观的例子:

330px-pi_30k

使用蒙特卡洛方法估算π值. 放置30000个随机点后,π的估算值与真实值相差0.07%.

这张图其实很简单, 就像我们玩飞镖一样, 随机地在一个方形平面上投掷30000个飞镖, 事先我们并不知道圆周率π的值究竟是多少, 但是我们知道这里有1/4的圆, 于是我们把红色面积上的点数m, 和蓝色面积上的点数n, 以及圆周率π的关系, 可以写出一个约等于的式子:

π ≈ 4m/(n+m) 继续阅读五分钟解释什么是蒙特卡罗(Monte Carlo Method)方法