• 粉丝日志首页

2018中国R大会上海 : R语言商业实践 -从金融市场到区块链

跨界知识聚会系列文章,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。

关于作者

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/meeting-r-20181208

前言

本次R语言(上每)大会由上海华东师范大学与统计之都合办,主题围绕着“数据科学”的展开,9个会场,涉及51个分享主题。报名1400多人,实际到场有接近1000人。

本次大会,结合了学术界、产业界、台湾地区,跨领域跨专业的交流,通过碰撞形成了新的火花。我在会议中,发现到了很多还没有毕业的学生,做了不错的创新的尝试,确实是一场不错的盛会。特别值得称赞的是:没有广告,回归内容本质,这才是高质量的大会。

目录

  1. 我分享的主题:R语言商业实践-从金融市场到区块链
  2. 会议体验和照片分享

1. 我分享的主题:R语言商业实践-从金融市场到区块链

本次大会我被安排在主会场第一场,之前本来想贴底气地讲一些R代码,看到出场的顺序果断调整内容和思路。以“认知”为切入点做为开场,希望能让已工作的人和在校的学生,获得思想上的共鸣。我的分享的PPT下载,本次活动的官方报名链接

第一天能容纳千人的主会场,在华东师范大学的闵行校区开幕。

我分享主题:R语言商业实践 -从金融市场到区块链

从“认知”上讲述,我们为什么要用R语言,R语言适合的领域,复合型人才的知识结构,如何创造场景,如何发现价值,以有序金融市场和混乱的区块链市场,做为2个场景进行分析,介绍如何发现规律,实现价值。

我主要为分三个部分进行介绍:

  • 思维模式:跨界,是需要综合素质的长期积累。
  • 金融市场:市场在变化,要跟上市场的变化
  • 区块链:链上数据,让交易无所遁形

由于时间有限,同时又了思路上的介绍,还请有问题的朋友,给我留言再进行沟通。后面如果有时间,我也争取把这种思维模式形成文章。

2. 会议体验和照片分享

本次大会我体会到的一些关键字:没有广告,创新和新想法,新朋友和老朋友,年轻的同学,第一场雪。

2.1 会议体验证和总结

会后和嘉宾聊天,完全没有想到,“数据科学”的理念已非常快的速度被大学被认同,已开设专业,做为重要的教学方向。同时,也遇到了一些困境,没有适合的教材,没有落地的场景。

把教学到实际业务结合,确实一直都是学术界与工业界的鸿沟,单独领域都有非常多的人才,但是能够打通这2个端的人才,是非常稀缺的,是需要复合型知识体系的人来打通的。

我的分享。

能容纳1000人的会场。

2.2 相关照片

分享嘉宾大合照:仅包括了第一天到场的嘉宾。

部分工作人员大合照:仅包括了第一天到位的工作人员。

微软MVP合照,中间2个女生是台湾的MVP,很有意思的在这里碰上了。

老朋友(从左向右):叶鹏,张丹,李舰,谢佳标,张杰

我和黄小伟

我和袁欣

新朋友,老朋友,跨界的朋友,台湾的朋友,用过R语言让我们有共同的话题,感谢华东师范大学和统计之都,所有主办方的小伙们,辛苦了!明年再见。

转载请注明出处:
http://blog.fens.me/meeting-r-20181208

打赏作者

2018南京信息工程大学:R语言与计量经济学

跨界知识聚会系列文章,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。

关于作者

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/meeting-nuist-20181201

前言

学生面临毕业的竞争,如何能脱颖而了,不仅需要有良好的知识储备,更要具有动手能力,同时了解市场的需求是什么。很多同学,在学校读书学习,最后都变成了,“死读书,读死书”,完成不知道社会是什么样的,只是把书本上和老师教的内容掌握,这是完全不行的!!!

当老师充分的认识到,学生需要更多的知识来源时,就会选择与行业专家来合作,从而打开学生的视野。那么,本次的教学就是这样的一个目的,南京信息工程大学经济管理学院的鲁老师找到我,希望我给他的学生带来一次,R语言与计量经济的培训,让学生不仅学到知识,更多看看外面的世界是什么样子的。

目录

  1. 我的培训主题:基于R语言的数据挖掘与计量经济学
  2. 会议体验和照片分享

1. 我的培训主题:基于R语言的数据挖掘与计量经济学

50人的小班课程,定位就是把R语言和计量经济学的知识结合起来,让学生们提高动手能力,掌握一门技能,提高毕业时求职的竞争力。本次培训的活动主页

课程大纲:2018年全国高校计量经济学及R语言应用师资培训大纲

本期培训内容以“计量经济学及应用”考核大纲为基础,重点讲解R语言编程、金融数据计算、数据分析与可视化等内容,并对2018年度计量经济学及应用试题进行实操演练。

经过2天的密集的授课,让同学们从3个维度获得了提升:

  • IT思维:熟悉的R语言编程
  • 统计思维:把计量经济学的模型通过R语言落地
  • 金融市场思维:了解金融市场,把书里上的知识与市场进行了对接。

2. 会议体验和照片分享

我的介绍和照片分享。

张丹,青萌数海CTO,微软MVP,资深R语言技术专家,,《R的极客理想-量化投资篇》作者,微软MVP。10年编程经验,获得10项SUN及IBM技术认证。前民生银行大数据分析师。个人博客 http://fens.me, Alexa全球排名70K。

2.2 会议体验证和相关照片

本次的场地南京信息工程大学经济管理学院,由学院的鲁老师负责制定整体的教学计划。整体来说,课程安排的很紧很充实,也很累。嗓子疼!!又赶上了南京的大雾霾天,和北京真是有的一比了。

大合照

我在讲课

上课啦

动手实践,讨论问题

教师里问问题的学生

学校正门

体育场

图书馆

据说全国排名1-2的气象学院

野鸭湖

最后,课程获得了,同学们和老师的好评!希望同学们能消化吸收,未来的世界是属于你们的。

转载请注明出处:
http://blog.fens.me/meeting-nuist-20181201

打赏作者

矩阵数字经济智库专访: 顶层设计决定行业基础

架构师的信仰系列文章,主要介绍我对系统架构的理解,从我的视角描述各种软件应用系统的架构设计思想和实现思路。

从程序员开始,到架构师一路走来,经历过太多的系统和应用。做过手机游戏,写过编程工具;做过大型Web应用系统,写过公司内部CRM;做过SOA的系统集成,写过基于Hadoop的大数据工具;做过外包,做过电商,做过团购,做过支付,做过SNS,也做过移动SNS。以前只用Java,然后学了PHP,现在用R和Javascript。最后跳出IT圈,进入金融圈,研发量化交易软件。

架构设计就是定义一套完整的程序规范,坚持架构师的信仰,做自己想做的东西。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/architect-matrix-interview

前言

受矩阵数字经济智库邀请,做一起对于行业发展的专访。专访的过程,涉及了大数据,区块链,宏观经济,个人转型等多个领域,我也是根据个人的理解,对上述的一些问题做了总结。

2018年,我经历了很多,大病初愈,去了微软总部参观,从从银行的舒适区出来,经历区块链快速下跌的市场,关注金融改革,了解中美贸易的影响,看到国内经济的从乱序到稳定。

总结一句话:2018市场的变化真是太快了,各行各业都缺少顶层设计者。

目录

  1. 专访背景
  2. 如何从技术转型
  3. 量化投资,更需要规范的市场环境
  4. 顶层设计,是行业发展先行条件

1. 专访背景

十年前,银行核心系统的升级改造促进了大数据的积累;十年后,数字化转型的需求使得大数据在各个行业广泛应用。经过十年的数据积累和科技分析能力的提升,金融大数据的分析和应用已经进入到了一个新的层次,金融改变人们的生活,生活也会改变着金融,而大数据已经成为改变人们的生活和金融行为的重要手段和方式,大数据的应用让金融和人们的生活更加了解、互相改进和互相适应。

应矩阵数字经济智库之约,我们邀请到青萌数海CTO张丹,国内顶尖的R语言专家,金融大数据专家,曾在民生银行等金融机构工作,积累了丰富业务经验和对金融数据深刻理解,共同探讨国内大数据的未来发展。官方文章发布地址

2. 如何从技术转型

从最初的编程技术入手,作为国内顶尖的R语言专家,张丹无论在技术水平还是作品产出都居于一线水准。之后进入金融领域做量化投资,而目前主要做数据科学相关的行业研究,发现数据规律。

一路跨界,从IT技术到量化投资再到数据科学,张丹认为当一个人在一个领域取得了很深入的理解,包括技术能力、思维模式、业务思路、整个产业的上下游企业关系等,将知识理解形成系统的方法论,作为基础再进入一个新的领域,也会很快成为新领域的专家。

作为技术出身的张丹,对待新事物的认知往往采取理性的态度。对于目前热议的区块链金融,他认为金融是指银行、证券、信托、保险、基金等金融领域,而区块链金融仅仅是利用币的交易属性进行流通。因此,区块链金融应该是金融业务对区块链的金融支持,而不是颠覆传统金融,单独以区块链为基础的金融。只有当投资银行、商业银行、信托等金额机构,对整个区块链的账户体系,资金流转,信用体系等,提供各种各样的金融服务支撑之后,才能开展基于区块链的金融类型服务。

在谈及自己深入研究的大数据领域时,张丹认为大数据是基于技术领域衍生出来的一个概念,同时也是社会所需要的技术。大数据带来了一次生产力的变革,大数据会成为一个长期的机会。在未来,数据会成为每个人所必须的知识。

当我们以大数据的视角去看待日常的生活时,会为我们带来很多的改变。将大数据结合人工智能、物联网等技术,在多方面可以提高人的工作效率。人工智能领域突破,如AlphaGo,会打破了人类固有的认知,进而形成的新的思维方式,是人类应该学习的。

张丹曾在金融行业设计和开发智能投顾系统,他认为的智能投顾是利用已有的金融市场交易规则和评判标准,帮助外行人做投资决策。而之所以可以这样做,是因为投资方法是建立在西方的现代金融学理论之上的,有固定的规则、评价方法、运作模式且已经得到市场的认可,基于这个市场基础,可以利用算法进行建模,提升收益。但国内推出智能投顾问服务,更多是站在卖方市场,缺少对买方的利益的保障。

3. 量化投资,更需要规范的市场环境

张丹所认为的量化投资是对传统投资的提升,并不能代替传统投资的模式。量化投资应与传统投资相辅相成,量化本身不能量化一切东西,还需要人的思考,用量化的工具进行辅助决策,会极大地提升工作效率。

张丹认为近两年中国市场的管制逐渐加强,使得很多可以通过量化、程序化的交易通道被堵塞,导致量化投资受到政策上的影响和限制,但并不影响量化的决策继续进行。对于数字货币交易市场,还处于鱼龙混杂的时期,区块链生态都面临着洗牌,量化投资可以帮助币市恢复理性。让纯投机的人离场,通过更多的数据指标支撑,重新建立数据货币的秩序。

4. 顶层设计,是行业发展先行条件

当谈及金融大数据的未来时,张丹乐观的认为,金融数据会不断延伸到各行各业,及至个人的生活交易。金融大数据也会衍生出各种的数据,在数据量和数据维度方面不断的进行拓展。金融数据的未来会成为一个机会,在如何把握这样的机会上,张丹认为我们应明确区分金融属性的数据和金融业的数据,在此基础上抓住未来的发展机会。

而对于未来区块链行业发展的方向上,他提出,行业内最需要精英进行顶层设计,技术资源和资本是相对丰富的,但真正能调配这些资源的顶层设计者是难求的。

他通过研究公链上数据的交易行为,来评价公链项目的优劣。每条公链都有自己的使命和独特的性质。公链上数据所呈现的行为,应该是反映这个项目的价值观。通过数据分析验证公链项目的言行一致,是判断公链是否是空气项目的重要标准。

行业的发展瞬息万变,但一个行业的发展离不开站在顶端看世界的人,高瞻远瞩的布局会奠定行业的趋势。未来的大数据和区块链等行业会如何发展,让我们拭目以待。

转载请注明出处:
http://blog.fens.me/architect-matrix-interview

打赏作者

用R语言实现数据离散化

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-discretization

前言

在做数据挖掘模型的时候,我们有时会需要把连续型变量转型离散变量,这种转换的过程就是数据离散化,分箱就是离散化常用的一种方法。

数据离散化处理属于数据预处理的一个过程,R语言在数据处理上有天然的优势,也有直接用于离散化计算的包,无监督的离散化可以用infotheo包,有监督的离散化可以用discretization包来处理复杂的离散化操作。

目录

  1. 数据离散化的需求
  2. 无监督的数据离散化
  3. 有监督的数据离散化

1. 数据离散化的需求

数据离散化,教课书上面的定义是,把无限空间中有限的个体映射到有限的空间中。数据离散化操作,大多是针对连续型变量进行的,处理之后数据从连续型变量转变为离散型变量。

离散化处理的特点:

  • 快速迭代,离散化的过程,离散特征增加和减少都很容易,易于扩展。
  • 高效计算,稀疏向量内积乘法运算速度快,计算结果方便存储。
  • 适应性,有些分类模型适合用离散化数据做为数据指标,比如决策树虽然支持输入连续型变量,但决策树模型本身会先将连续型变量转化为离散型变量,做逻辑回归时,也通常会先把连续型特征变量离散化,变成0或1。
  • 鲁棒性,数据离散化会让特征变化不是特别明显,特别是对于降低异常数据干扰。
  • 稳定性,牺牲了数据的微小变化,但保证了模型的稳定性。
  • 过拟合,减少的数据信息,降低了过拟合的风险。
  • 业务性,业务上已经定义出了离散值的含义,需要做离散化处理。

离散化处理通常对连续型变量进行处理,但同时也可以对离散型变量再进行离散化,适用于数据聚合或重新分组。

2. 无监督的数据离散化

我们可以无监督的数据离散化方法,进行数据的分箱操作,包括等宽分箱法、等频分箱法、通过kmeans分箱法等。

  • 等宽分箱法,将观察点均匀划分成n等份,每份的间距相等。
  • 等频分箱法,将观察点均匀分成n等份,每份的观察点数相同。
  • kmeans分箱法,先给定中心数,将观察点利用欧式距离计算与中心点的距离进行归类,再重新计算中心点,直到中心点不再发生变化,以归类的结果做为分箱的结果。

接下来,我们用R语言来实现上面提到的几种分箱的操作。

2.1 准备数据

本文所使用的系统环境

  • Win10 64bit
  • R: 3.2.3 x86_64-w64-mingw32/x64 b4bit

首先,生成一组数据,这组织通过3个正态分布的随机数进行叠加,主要用于体现分箱的不同特征。


# 设置随机数种子,生成符合正态分布N(0,1)的数据1000个点
> set.seed(0)
> a1<-rnorm(1000)

> set.seed(1)
> a2<-rnorm(300,0,0.2)

> set.seed(2)
> a3<-rnorm(300,3,0.5)

# 按顺序,合并3种数据
> aa<-c(a1,a2,a3)

# 查看数据
> head(aa,30)
 [1]  1.26295 -0.32623  1.32980  1.27243  0.41464 -1.53995 -0.92857 -0.29472 -0.00577  2.40465  0.76359
[12] -0.79901 -1.14766 -0.28946 -0.29922 -0.41151  0.25222 -0.89192  0.43568 -1.23754 -0.22427  0.37740
[23]  0.13334  0.80419 -0.05711  0.50361  1.08577 -0.69095 -1.28460  0.04673

画出数据的散点图,x轴为索引序号,y轴为值。


> plot(aa)

查看数据的分布形状,x轴为值,y轴为这个值出现的次数。


# 画出数据的直方图
> hist(aa,200)

通过散点图和直方图,就可以很明显的看到数据的特征,数据有倾斜的,值在0和3附近是比较多的。

2.2 infotheo包使用

在R语言中,我们可以使用infotheo包,来做等宽分箱和等频分箱。

项目主页:https://cran.r-project.org/web/packages/infotheo/

安装infotheo包,是非常简单的,只需要一条命令。


~ R
> install.packages("infotheo")
> library(infotheo)

进行等宽分箱,将观察点均匀划分成n等份,每份的间距相等。


> d1<-discretize(aa,"equalwidth",5)
> table(d1)
d1
  1   2   3   4   5 
 40 467 703 217 173 

# 可视化分箱
> plot(aa,col=d1$X)

分为5组,第一组最少,第三组最多,每组值的区间是一样的。

进行等频率分箱,将观察点均匀分成n等份,每份的观察点数相同。


> d2<-discretize(aa,"equalfreq",5)
> table(d2)
d2
  1   2   3   4   5 
320 320 320 320 320 

# 可视化分箱
> plot(aa,col=d2$X)

分为5组,每组的数量都相同。

kmeans分箱法,先给定中心数为5。


> d3<-kmeans(aa,5)
> table(d3$cluster)
  1   2   3   4   5 
121 258 303 267 651 

# 5个中心
> d3$centers
     [,1]
1 -1.6196
2  1.2096
3  3.0436
4 -0.7228
5  0.0736

# 可视化分箱
> plot(aa,col=d3$cluster)

5组聚类的结果。

每一种方法,对于分箱的离散化的结果都是不同的,使用哪一种方法,最好都有业务上的解释,不能随便乱用。

3. 有监督的数据离散化方法

有监督的离散化的方法,可以用R语言中discretization包来操作。discretization包,是一个用来做有监督离散化的工具集,主要用于卡方分箱算法,它提供了几种常用的离散化工具函数,可以按照自上而下或自下而上,实施离散化算法。

项目主页:https://cran.r-project.org/web/packages/discretization/

安装discretization包是非常简单的,只需要一条命令。


~ R
> install.packages("discretization")
> library(discretization)

discretization提供了几个主要的离散化的工具函数:

  • chiM,ChiM算法进行离散化
  • chi2, Chi2算法进行离散化
  • mdlp,最小描述长度原理(MDLP)进行离散化
  • modChi2,改进的Chi2方法离散数值属性
  • disc.Topdown,自上而下的离散化
  • extendChi2,扩展Chi2算法离散数值属性

3.1 卡方分箱

卡方分箱是依赖于卡方检验的分箱方法,在统计指标上选择卡方统计量(chi-Square)进行判别。卡方分箱的基本思想是判断相邻的两个区间是否有分布差异,如果两个相邻的区间具有非常类似的分布,则这两个区间可以合并;否则,它们应当保持分开。基于卡方统计量的结果进行自下而上的合并,直到满足分箱的限制条件为止。

卡方分箱的实现步骤:

1. 预先设定一个卡方的阈值。以这个阈值为标准,我们对数据进行卡方检验,通过显著性水平和自由度,计算出数据的卡方值与这个阈值进行比较。

  • 显著性水平,当置信度90%时显著性水平为10%,ChiMerge算法推荐使用置信度为0.90、0.95、0.99。
  • 自由度,比分类数量小1。例如:有3类,自由度为2。

类别和属性独立时,有90%的可能性,计算得到的卡方值会小于4.6。大于阈值4.6的卡方值就说明属性和类不是相互独立的,不能合并。如果阈值选的大,区间合并就会进行很多次,离散后的区间数量少、区间大。

2. 初始化:根据要离散化的数据对实例进行排序,每个实例属于一个区间
3. 合并区间:
1) 计算每一个对相邻区间的卡方值
2) 将卡方值最小的一对区间合并

卡方统计量衡量了区间内样本的频数分布与整体样本的频数分布的差异性,在做分箱处理时可以使用两种限制条件:

  • 分箱个数:限制最终的分箱个数结果,每次将样本中具有最小卡方值的区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止。
  • 卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。

4.评估指标

分为箱之后需要评估,常用的评估手段是计算出WOE和IV值。对于WOE和IV值的含义,参考文章:https://blog.csdn.net/kevin7658/article/details/50780391

3.2 数据准备

有监督的离散化算法,只少需要数据为2列,一列用于离散化的向量数据,一列是分类的评价标准数据,所以我们需要重新选择一个数据集,具有分类标准的数据。

我们使用一个系统自带的数据集iris,这个着名的Fisher的鸢尾花数据。iris包含150个记录,和5个变量的数据框,名为Sepal.Length(萼片的长度),Sepal.Width(萼片的宽度),Petal.Length(花瓣的长度),Petal.Width(花瓣的长度)和Species(种类,setosa,versicolor和virginica)。

查看数据集


> data(iris)
> head(iris,10)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa

接下来,我们分别用不同的算法,把这个数据集进行离散化处理。

3.3 chiM算法进行离散化

ChiM()函数,使用ChiMerge算法基于卡方检验进行自下而上的合并。通过卡方检验判断相邻阈值的相对类频率,是否有明显不同,或者它们是否足够相似,从而合并为一个区间。

chiM(data,alpha)函数解读。

  • 第一个参数data,是输入数据集,要求最后一列是分类属性。
  • 第二个参数alpha,表示显著性水平。
  • 自由度,通过数据计算获得是2,一共3个分类减去1。

下面使用chiM()进行计算。


# 离散化计算
> chi1<-chiM(iris,alpha=0.05)

# 查看前10条结果
> head(chi1$Disc.data,10)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1             1           3            1           1  setosa
2             1           2            1           1  setosa
3             1           2            1           1  setosa
4             1           2            1           1  setosa
5             1           3            1           1  setosa
6             1           3            1           1  setosa
7             1           3            1           1  setosa
8             1           3            1           1  setosa
9             1           1            1           1  setosa
10            1           2            1           1  setosa

chi2算法的结果解读,从输出结果可以看出,Sepal.Length Sepal.Width Petal.Length Petal.Width,这几个变量被自动地离散化处理了。

查看这4个列的离散化情况。


> apply(chi1$Disc.data,2,table)
$Sepal.Length
 1  2  3  4 
52 21 65 12 

$Sepal.Width
 1  2  3 
57 56 37 

$Petal.Length
 1  2  3  4 
50 45 21 34 

$Petal.Width
 1  2  3 
50 54 46 

$Species
    setosa versicolor  virginica 
        50         50         50 

再查看每个列的阈值。


# 查看分组阈值
> chi1$cutp
[[1]]
[1] 5.45 5.75 7.05

[[2]]
[1] 2.95 3.35

[[3]]
[1] 2.45 4.75 5.15

[[4]]
[1] 0.80 1.75

以第一组Sepal.Length举例,被分为4类,当源数据Sepal.Length列的值,小于 5.45值为1类,大于5.45同时小于5.75为2类,大于5.75同时小于7.05为3类,大于7.05为4类。

我们把离散化后的数据,与源数据进行合并进行观察。第一列是离散化后的数据,第二列是源数据。


> chi1df<-cbind(chi1$Disc.data$Sepal.Length,iris$Sepal.Length)
> head(chi1df,20)
      [,1] [,2]
 [1,]    1  5.1
 [2,]    1  4.9
 [3,]    1  4.7
 [4,]    1  4.6
 [5,]    1  5.0
 [6,]    1  5.4
 [7,]    1  4.6
 [8,]    1  5.0
 [9,]    1  4.4
[10,]    1  4.9
[11,]    1  5.4
[12,]    1  4.8
[13,]    1  4.8
[14,]    1  4.3
[15,]    3  5.8
[16,]    2  5.7
[17,]    1  5.4
[18,]    1  5.1
[19,]    2  5.7
[20,]    1  5.1

这样就完成了卡方分箱的操作,接下来的其他几个函数的使用,与chiM()的算法类似,就不再过多讨论了。

3.4 其他算法

chi2()算法,查看分组阈值。


> chi2<-chi2(iris,alp=0.5,del=0.05)
> chi2$cutp
[[1]]
[1] 3.5 4.5 6.5

[[2]]
[1] 3.5 4.5

[[3]]
[1] 1.5 2.5 3.5

[[4]]
[1] 1.5 3.5

modChi2()算法,查看分组阈值。


> chi3<-modChi2(iris,alp=0.5)
> chi3$cutp
[[1]]
[1] 1.5 2.5

[[2]]
[1] 2.5

[[3]]
[1] 1.5 2.5

[[4]]
[1] 1.5 2.5

extendChi2()算法,查看分组阈值。


> chi4<-extendChi2(iris,alp = 0.5)
> chi4$cutp
[[1]]
[1] 1.5 2.5

[[2]]
[1] 1.5 2.5

[[3]]
[1] 1.5 2.5

[[4]]
[1] 1.5 2.5

> m1<-mdlp(iris)
> m1$cutp
[[1]]
[1] 5.55 6.15

[[2]]
[1] 2.95 3.35

[[3]]
[1] 2.45 4.75

[[4]]
[1] 0.80 1.75

disc.Topdown()算法,查看分组阈值。


> d1<-disc.Topdown(iris,method=1)
> d1$cutp
[[1]]
[1] 4.30 5.55 6.25 7.90

[[2]]
[1] 2.00 2.95 3.05 4.40

[[3]]
[1] 1.00 2.45 4.75 6.90

[[4]]
[1] 0.10 0.80 1.75 2.50

最后,分箱需要注意的是,分完箱之后,某些箱区间里可能数据分布比例极不均匀,那么这样子会直接导致后续计算WOE时出现inf无穷大的情况,这是不合理的。这种情况,说明分箱太细,需要进一步缩小分箱的数量。

本文详细地介绍了无监督的离散化方法和有监督的离散化方法,针对不同的场景,我们可以选择不同的方法进行使用。R语言中,包提供了各种离散化的工具函数,使用起来很方便,可以大幅提供数据处理过程的效率。

转载请注明出处:
http://blog.fens.me/r-discretization

打赏作者

HiBlock社区:区块链链上数据的认知与探索

跨界知识聚会系列文章,“知识是用来分享和传承的”,各种会议、论坛、沙龙都是分享知识的绝佳场所。我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果。从听众到演讲感觉是不一样的,把知识分享出来,你才能收获更多。

关于作者

  • 张丹(Conan), 程序员/Quant: Java,R,Nodejs
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/meeting-hiblock-20180826

前言

数字货币百花齐放,数字货币开发是区块链开发者的必修课也是入门课,通过ERC20智能合约很快就可以掌握开发技巧,但数字货币的安全如何保障?数字货币交易过程中产生了大量的数据,资金流转规律、操盘方式、筹码分布等等,通过数据预测数字货币价格走势也不是没有可能,除此之外区块链产生的数据还有什么价值?

本次的沙龙2个主题,一个是安全,一个是数据。

目录

  1. 我的演讲主题:区块链链上数据的认知与探索
  2. 会议体验和照片分享

1. 我的演讲主题:区块链链上数据的认知与探索

本次的沙龙2个主题,一个是安全,一个是数据,都是技术流!!所以,来听的也都是技术流,很少人,但很聊的来。

我本次分享的主题为:区块链链上数据的认知与探索,PPT下载,主要内容来自我的1篇博客文篇:区块链链上数据的认知与探索(未发布)。

分享主题的目录大纲如下:

  1. 认识区块链
  2. 区块浏览器
  3. 链上数据探索

主题简介:区块链上所有的交易都是公开透明的,链上账本会记录所有参与者交易行为,包括资金流转规律,庄家操盘,筹码分布等,价值巨大,从数据科学的角度,分享对区块链链上数据进行的认知与探索。

本此分析主要是从数据的角度切入,开始先介绍区块链,让大家有所认知;然后介绍区块链有什么样的数据,区别场内数据和场外数据;最后引出主题,对场外数据进行数据探索,通过账本的交易流水发现这些数据中的规律性的行为,坐庄行为,散户行为,拉盘行为….

数据是很有意思的,希望大家能够了解链上数据,用技术的武器去发现和鉴别真实的交易。

2. 会议体验和照片分享

本次线下沙龙的核心主题为,技术维度解读数字货币安全与数据价值,会议的主页:http://www.huodongxing.com/event/3453087067011

30人的小沙龙,定位就是区块链的技术圈,同业交流。我的分享是 “区块链链上数据的认知与探索” 也是在我这次转型积累的新的经验,跨学科的知识结合,从数据的角度理解区块链。

会议主题:

  • 14:00-14:05 开场 主办方介绍
  • 14:05-14:30 参会者自我介绍
  • 14:30-15:30《智能合约审计》分享嘉宾:赵威
  • 15:30-16:30《区块链链上数据的认知与探索》分享嘉宾:张丹
  • 16:30-17:00 合影 交流

我的介绍和照片分享。

分布式科技CTO,《R的极客理想-量化投资篇》作者,微软MVP。10年编程经验,获得10项SUN及IBM技术认证。前民生银行大数据分析师。个人博客 http://fens.me, Alexa全球排名70K。

2.2 会议相关照片

本次的场地在北京朝阳区建国路89号华贸商务楼16号B1 联合创业办公社,看上去更像是一个活动吧。

主持人:成芳

张丹,区块链链上数据的认知与探索

赵威, 智能合约审计

会后交流

政策条文: 分享开始前特意被关照,只能讲技术,不要讲其他的,最近太敏感,可能随时会被叫停!我们搞技术的人,底线是一定不会触碰的!!

布置会场。

大合照

主办方的小伙伴很辛苦,就一个小姑娘!坚持支持分享,保持高质量,坚持!坚持!

转载请注明出处:
http://blog.fens.me/meeting-hiblock-20180826

打赏作者