记得很久以前中学课堂上偷看杂志,就有一大堆“预测”,通常是第一个问题,回答几个选项,选项A跳到第二个问题,选项B跳到第三个问题…一直走下去,最后的答案就可以预测到一个结果,如果把这个题目的设计路线画出来,那么有可能就是决策树。

决策树

当然,那些杂志99%都是一两个小编胡编乱造随手一画,并没有训练数据支持,也没有决策树算法,所以看过那些预测大多是欣然一笑,然后就忘了~。

决策树,Decision Tree,算法如其名,给定训练集数据之后,通过算法对数据进行分析,就可以生成出根上面题目差不多的树了。决策树所需要用到的主要概念主要是信息熵,当然也可用其它信息增益算法来计算。

计算公式倒是简单,但有一点要记住,有些属性是没什么用的,千万不能拿去算信息增益,比如生日,身份证号等。每个人的身份证号都不一样,使用身份证会让信息增益的值会直接得到1,然而并没有什么卵用,相关导致树变的太大,过学习了,会直接导致模型高分低能。

阅读全文

kNN,原名k-Nearest Neighbor (k近邻算法)。是最简单易懂的一个算法!原理也很简单,在已知的空间中(我们最常想到的就是二维坐标轴),中的一个点,找到K个最近的邻居,大多数邻居怎么样分类,它也就怎么样分类。

下图中,对Xu,k=5的情况下,找到Xu点上最近的5个邻居,有4个是w1类型,1个是w3类型,那么,XU的类型应该是更接近w1.

KNN

KNN算法是采用测量不同特征值之间的距离进行分类,下面手动造个轮子,自己实现一个KNN算法。

阅读全文

在进入算各算法前,最后介绍一下相异性计算,是每种算法都需要用到的基础知识。

相异性计算

很多算法都是根据数据在空间中的位置进行分类与聚类,在你还不能把一条数据在脑海中映射到一个空间中去的时候。可以先看看这个:

相异性矩阵

我们的数据大致情况都是如以下矩阵所述:每行为一条数据,每列为一个属性

阅读全文

写完了前三个小部分发现连介绍部分都没写,所以说预处理有多么重要。

技术人员对大数据的印象可能会和有不同、各种名词,算法,可能会让人敬而远之,就像搞程序一样,外行人认为是技术牛X,内行人看着都是狗屎代码。

数据挖掘介绍

可能大家已经看过不少大数据介绍的视频了,很多介绍诸如大数据知道哪里会犯罪,大数据知道你正在电脑上干嘛,大数据知道哪些货好卖了,甚至还有视频放屁说大数据能预测双色球中奖号码!也许你会觉得很酷,认为大数据就是这么牛,然后再一看算法,又完全不知道如何套用,就一直把美好存心中了,唯一的用处就是每每别人讨论大数据时,可以插上两句话,让别人认为你有点内行。

见的多了的词汇

大数据、机器学习、云计算、数据挖掘,这些是一个概念吗?为何这些关键字总会一起出现?

大数据一般就是指用普通服务器无法处理的数据,比如TB级别的数据,如果要对数据进行一些处理,比如搜索这么多数据中的一条记录,很难通过一个服务器,一个程序去搞定。大数据技术就是解决这类问题的,一般大数据会与数据挖掘产生一定的关系,因为大数据如果不进行挖掘,可能数据就如一座矿山停在那里,山里面的金矿一直在山里面。大数据处理技术一般可以很好的为下一步的数据挖掘服务,企业的核心竞争力也是在数据挖掘这一块。

数据挖掘也并不是一门独立的学科,是由各种各样的知识,聚焦在一起,去大数据里面探索金矿的知识,包括了数学如概率统计、线性代数、微积分等,计算机科学:如计算机理论、数据结构与算法、可视化技术,根据要挖掘的数据性质不同,还需要专业业务知识,各种社科知识等。总之只要你手上的工作是从数据里面找出有用的数据,不一定非得是大数据,那么你就可以说你在做数据挖掘了。

云计算:当你有了数据之后,写出了算法之后,想去跑一跑,但如果算法需要的计算量很大,那个人电脑估计就独木难支了,可以去云计算服务器去买,云计算和传统的服务器的区别就是用多少,买多少,不用了就不给钱了,扩展起来也容易。

机器学习,专指数据挖掘里面的学习,和计算机相关的部分,里面有很多算法,很多技巧,将数据挖掘的理论知识变为可能。深度学习,实际上就是神经网络算法多加几层而已。

笔记不会做太多的介绍,总之,不要看太多的软文,放手去做才是最重要的,可能并不像你想的那么难呢?不要去看那些离我们太远的分析,最好就是拿身边在用的数据就行。

阅读全文

用过 Java 的都很熟悉 Javadoc, 只要在代码的方法上面写上相应的代码说明注解,那么使用一个 javadoc 命令就可以生成一个 API 说明文档。

JavaScript 本身并没有这样的功能,不过也有这样的工具:JSDOC。

基本用法

  1. 安装
1
2
# 全局安装即可
npm install -g jsdoc
  1. 使用
1
2
3
4
5
# 生成文件 `input.js` 的说明文档,并存放在 `docs` 目录
jsdoc input.js -d docs

# 使用配置文件config生成说明文档
jsdoc -c config.js

使用配置

一般来说,最好是使用配置文件去生成,这样,免得总是敲一长串命令。jsdoc支持 json和js文件作为配置示例:

阅读全文

一般来说,数据研究人员虽然懂算法的原理,但一般懒得自己去实现一个算法,可能都会引入一些主流的算法工具模块直接进行应用,一般情况下,这些工具提供的 API 有以下性质:

  1. 输入参数必须是数据类型,浮点或整型,方便算法进行运算。
  2. 算法并不知道你输入参数的意义,只是简单计算,然后出结果。

比如很多算法都要你指定空间距离的度量方式,那么你提供的数据就要预先预处理为可以用此方式进行度量的数据后,再传到指定的算法模块!

阅读全文

虽然我们有了API可以进行一定的数据预处理,但是,拿到一个数据集后,我们第一想到的就是先进行处理吗?要把数据集里面的每个维度都去压缩吗?每个维度要用什么方式去压缩呢?

相关度计算

你首先肯定是知道你需要研究什么的,比如我的研究的就是我的会员有没有付费买东西的可能,而我的数据库里,一条会员的数据就有几十个属性,是不是每个属性都要拿出来,每个属性和会员的质量关系有多大呢?

一般来说根据最终使用的算法的不同,研究对象的不同,根据实际情况,算出相关度后,保留前N个属性做为研究就够了,不需要把所有的属性都带上。

阅读全文

前段时间以笔记的形式记录了一下数据统计的一小部分知识,目前边看边学习数据挖掘,顺便边记录一下,写的肯定会很粗糙 sweat 欢迎讨论。

数据挖掘

由于最近太过热门,如果你在技术圈,相信眼睛早已经被各种新闻、报告、科普等文章推荐了一个遍,但是呢,我还是说下我自己的理解。

What is 数据挖掘

我也给不出答案啦 weary 一句话:数据挖掘包括但不限于以下知识:机器学习、统计学、数据分析、模式识别、人工智能、商业智能等等。

对于程序员来说,最关心的应该是 机器学习 的部分,但也需要很多基础,比如 统计学 、 纯性代数 等等。

很多人都说可以预测犯罪、预测交通事故、预测人口变化等等,但可能个人经历太普通了,没有接触过这么高大上的项目,工作了这么多年,和挖掘相关的主要需求也只能想到一些业务上的变化趋势、用户流量的活跃,档次分类、用户的爱好收集及推荐等等看上去很Low的一些需求。(所以自觉求上进 worried

如果真对数据挖掘有兴趣,推荐先复习完概率论中比较重要的章节和一点点的微积分,然后 沉心看书!名牌大学教授的视频编码实现,不要把时间浪费在看媒体新闻或别人的架构软文上,这类文章通常是领导们开会时的谈资,对于技术来说百害而无一益!

阅读全文