自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Forever-守望

大数据、数据挖掘、算法

  • 博客(90)
  • 资源 (5)
  • 收藏
  • 关注

原创 也来说说接私活过程中遇到的奇葩

但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设。其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能被表示成一系列独立事件。

2021-09-14 11:32:37 341 1

原创 Hadoop高可用(HA)方案总结

一 、Hadoop1.0时期的NameNode及Secondary NameNode在早期的hadoop时代,hdfs集群存在严重的单点问题,即集群只有一个NameNode节点,尽管有SecondaryNameNode,CheckPointNode,BackupNode这些机制来对单点的问题做一定的防反,但单点问题是依然存在的。在主NameNode挂掉之后,集群的管理不能自动的切换到另外一个N...

2020-04-24 10:11:36 1002

原创 hive自定义函数开发与部署

在利用Hive或者Spark-sql进行数据分析任务时,经常会遇到一些Mysql等传统数据库中有的函数而hive中没有,或者需要自己定义一些复杂的字符串处理、复杂计算计算逻辑的时候,找不到可以用的Hive函数时。尽管可以编写一些map-reduce等程序来向集群提交任务,但毕竟不如操作SQL来爽快。为此,hive和Spark-sql都提供了一些接口类,我们基本这些接口类可以定义自己的Hive函数,...

2020-04-20 15:38:37 787

原创 用户标签Http接口性能调优

项目背景:用户画像库有10+亿级别用户的用户画像数据,存储库为Hbase rowkey设计为用户ID的Hash值并经过域分区设计 使得记录基本能分布在各个region上,满足前端根据用户ID查询用户画像数据的需求、同时避免Hbase 在读写时出现热点region。问题: 前端APP的访问需求是并发500、峰值TPS达到30000TPS、响应时间50ms内。这对一个普通的应用而言并不难,在数据...

2020-04-03 11:23:16 388

原创 hbase写ES丢数据参数调优总结

通过ES对百亿级hbase数据构建索引,在读取Hbase至写入hbase过程中,发现有写入缓慢及数据丢失的现象,经过本人排查、调优后的一些经验总结如下,方便遇到相关问题的同学参考:hbase写ES丢数据总结1、ES连接池打满 新的ES写入线程获取连接时会失败,旧的连接在提交Bulk时可能出错 DO: 1、增加重试及休眠时间随重试次数延长 2、减少并发打开ES连接的线程...

2020-04-03 11:15:43 934

原创 spark.mllib源码阅读-聚类算法1-KMeans

KMeans聚类是聚类分析比较简单的一种,由于其简单、高效、易于理解实现等优点被广泛用于探索性数据分析中。 关于KMeans算法的介绍、分析的相关文章可谓汗牛充栋,留给我能写的东西并不多了,在这里,我通过罗列相关文章的方式,将涉及KMeans聚类的各方面做一个尽量详尽的总结。最后简单介绍一下Spark下KMeans聚类的实现过程。KMeans聚类算法原理:关于KMeans算法的原理及单机版实现,可

2017-04-21 15:16:18 4402 1

原创 spark.mllib源码阅读-分类算法5-GradientBoostedTrees

Gradient-Boosted Trees(GBT或者GBDT) 和 RandomForests 都属于集成学习的范畴,相比于单个模型有限的表达能力,组合多个base model后表达能力更加丰富。关于集成学习的理论知识,包括GBT和Random Forests的一些比较好的参考资料:周志华教授的"Ensemble Methods: Foundations and Algorithms",系统的

2017-04-19 15:23:38 4479

原创 spark.mllib源码阅读-分类算法4-DecisionTree

本篇博文主要围绕Spark上的决策树来讲解,我将分为2部分来阐述这一块的知识。第一部分会介绍一些决策树的基本概念、Spark下决策树的表示与存储、结点分类信息的存储、结点的特征选择与分类;第二部分通过一个Spark自带的示例来看看Spark的决策树的训练算法。另外,将本篇与上一篇博文"spark.mllib源码阅读bagging方法"的bagging子样本集抽样方法结合,也就理解了Spark下的决

2017-04-11 09:58:52 4398

原创 spark.mllib源码阅读-bagging方法

在训练集成分类器时,关键的一步在于如何从全训练样本集中构建子样本集提供给子分类器进行训练。目前主流的两种子样本集构造方式是bagging方法和boosting方法。bagging方法的思想是从全样本集中有放回的进行抽样来构造多个子样本集,每个子样本集中可以包含重复的样本。对每个子样本集训练一个模型,然后取平均得到最后的集成结果。baggingbagging方法的主要目的是为了降低模型的varian

2017-04-05 20:59:45 2471

原创 spark.mllib源码阅读-分类算法3-SVM

Spark2.1版本目前只实现了linear SVM(即线性支持向量机),非线性SVM及核技巧目前还没有实现。因此本篇主要介绍的是Spark中的线性SVM及参数求解。SVM的理论及推导可以参考支持向量机通俗导论(理解SVM的三层境界)由于Spark实现的是线性SVM,在此,我将简单介绍一下线性分类器与线性可分、线性SVM、线性不可分下的线性SVM等基本概念与原理,最后再结合Spark介绍以下线性S

2017-03-31 13:35:01 3502

原创 spark.mllib源码阅读-分类算法2-NaiveBayes

朴素贝叶斯模型简述:贝叶斯模型通过使用后验概率和类的概率分布来估计先验概率,具体的以公式表达为P(Y)可以使用训练样本的类分布进行估计。如果X是单特征也很好估计,但如果X={x1,x2,..,xn}等n个特征构成,那估计n个特征的联合概率分布P(X)=P(x1,x2,...,xn)将变得非常困难。由于贝叶斯模型的参数难于估计,限制了其的应用。朴素贝叶斯模型是贝叶斯模型的简化版本,通过假设特征之间独

2017-03-29 17:47:08 3646

原创 spark.mllib源码阅读-分类算法1-LogisticRegression

传统的线性回归模型z(x)=wx+b,其输出为负无穷至正无穷的区间,如果输出值为一个事件发生的概率,那么就要求输出区间为[0,1],传统的一些线性回归模型就不能work了,一个很简单的想法就是在z(x)线性输出的基础上增加一个从0到1光滑的单调递增的函数。同时对于很多事件来说,在事件确定发生的概率区间内 条件的微弱变化几乎不影响事件的发生,而在事件发生与不发生的交界区间 条件的微弱变化对事件发生的

2017-03-25 15:20:47 3075

原创 spark.mllib源码阅读-回归算法2-IsotonicRegression

IsotonicRegression是Spark1.3版本引入的一个带约束的回归模型。IsotonicRegression又称保序回归,保序回归确保拟合得到一个非递减逼近函数的条件下 最小化均方误差,相关的介绍可以阅读http://fa.bianp.net/blog/2013/isotonic-regression/,借用该文的一篇图来说明一下图中横轴为序号,纵轴y为输入数据,假设x为要拟合的数据

2017-03-24 13:22:53 2693

原创 spark.mllib源码阅读-回归算法1-LinearRegression

Spark实现了三类线性回归方法:1、LinearRegression:普通线性回归模型2、LassoRegression:加L1正则化的线性回归3、RidgeRegression:加L1正则化的线性回归Spark采用了模型和训练分离定义的方式,模型和模型的迭代计算都很清晰:如LinearRegressionModel和LinearRegressionWithSGD,LassoModel和Lass

2017-03-23 10:25:33 2646

原创 spark.mllib源码阅读-优化算法3-Optimizer

Spark中的求解器,根据输入的训练数据及设定的迭代次数、正则化项、参数收敛精度等进行迭代求解模型的参数。Spark内部实现来两类求解器,基于随机梯度下降(miniBatch选取样本)的GradientDescent、基于大规模数值优化算法的LBFGS。在整体架构上,两个类都继承自Optimizer,并需要调用Gradient和UpdaterGradientDescentGradientDesce

2017-03-22 16:14:51 2776

原创 spark.mllib源码阅读-优化算法2-Updater

Updater是Spark中进行机器学习时对用于更新参数的轮子,参数更新的过程是1、第i轮的机器学习求解得到的参数wi2、第i+1轮计算得到的梯度值3、正则化选项来计算第i+1轮的机器学习要求解的参数wi+1 Spark实现了三类Updater,SimpleUpdater、L1Updater及SquaredL2Updater,他们之间关系为SimpleUpdater:无正则化的Updater,直接

2017-03-21 15:11:52 2090

原创 spark.mllib源码阅读-优化算法1-Gradient

Spark中定义的损失函数及梯度,在看源码之前,先回顾一下机器学习中定义了哪些损失函数,毕竟梯度求解是为优化求解损失函数服务的。监督学习问题是在假设空间F中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(lossfunction)或代价函数(cost function)来度量预测错误的程度。损失函数是f(

2017-03-20 13:03:10 3095

原创 用户画像怎么做

大数据时代,大家都在说精准营销,所谓精准营销即是将你的商品、服务定向推广到真正需要它的人实现商品服务与用户的精确匹配、达到降低推广费用、提升推广效率的目的,这一点在当今互联网红利消退、获客成本越来越高的今天,更加重要。诸如此类的还有千人千面的个性化服务、智能感知服务等等。需要实现以上目的,需要商品、服务提供者对用户做到足够的了解。怎么做到对用户的了解:通常情况下,我们会基于用户在平台内部的注册信息

2017-03-07 17:21:08 4941

原创 CNN和RNN在NLP任务中的对比实验

这篇博客主要是拜读IBM Research发表的论文“Comparative Study of CNN and RNN for Natural Language Processing”,结合自己的体会做一个阅读笔记。        目前深度学习主要包括CNN(卷积神经网络)和RNN(递归神经网络)两大阵营,基于卷积的CNN对识别目标任务的结构具有一定的优势,而RNN由于其记忆功能对序列识别建模具备

2017-02-16 10:42:27 11321

原创 房屋价格数据采集与分析

随着互联网的发展,可供分析的信息越来越多,利用互联网上的信息来对生活中的问题做一些简单的研究分析,变得越来越便利了。本文就从数据采集、数据清洗、数据分析与可视化三部分来看看新的一年里房市的一些问题。数据采集:         数据采集即从网页上采集我们需要的指定信息,一般使用爬虫实现。当前开源的爬虫非常多,处于简便及学习的目的,在此使用python的urllib2库模拟http访问网页,并Beau

2017-01-23 11:15:52 8567 27

原创 使用Spark集群进行ETL的架构介绍

什么是ETL:ETL(extract提取、transform转换、load加载)。ETL负责将分散的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后,进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘提供决策支持的数据。使用Spark开发ETL系统的优势:1、由于海量的日志记录、交易记录,单机进行ETL变得越来越困难。搭建一套具备大规模数据处理能力的E

2017-01-13 14:11:49 27086 7

原创 maven环境下使用java、scala混合开发spark应用

熟悉java的开发者在开发spark应用时,常常会遇到spark对java的接口文档不完善或者不提供对应的java接口的问题。这个时候,如果在java项目中能直接使用scala来开发spark应用,同时使用java来处理项目中的其它需求,将在一定程度上降低开发spark项目的难度。下面就来探索一下java、scala、spark、maven这一套开发环境要怎样来搭建。1、下载scala sdkht

2017-01-09 16:42:06 9411

原创 聊聊在线教育的推荐系统

今天不谈推荐系统架构,也不谈具体的推荐算法,仅从一个本人亲历过的推荐产品来讨论个性化推荐怎么做更友好一点的问题。 在线教育产品中主要存在着两大类的推荐需求,题目、视频等教育资源的推荐和 辅导老师的推荐,这两大类的推荐都是将平台上的资源与实际需求者进行匹配。下面主要讨论题目、视频等教育资源得推荐为例。实际上,推荐系统是用户与平台资源池进行交互的纽带,其为用户较小信息负载,将最合理的资源推荐给用户,进

2017-01-03 15:51:23 4617

原创 HMM与序列标注

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数(隐状态)的马尔可夫过程。其难点是从可观察的参数中(显状态)确定该过程的隐含参数(隐状态),然后利用这些参数来作进一步的分析。举一个经典的例子:一个东京的朋友每天根据天气{下雨,天晴}决定当天的活动{公园散步,购物,清理房间}中的一种,我每天只能在twitter上看到她发的推特,我前天公园散步

2016-12-26 16:29:33 7414

原创 hive数据导出至本地文件,如何指定分隔符

有时候需要将hive库中的部分数据导入至本地,这样子做可视化和小规模的数据挖掘实验都是比较方便的。数据导入至本地的HQL语法如下: INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1;但是hive对字段分隔时默认使用的分隔符是^A,使用文本编辑器打开文件显示出来就是乱码,同时,后续提取字段值时需要指定这个特殊的分隔符,在p

2016-12-21 11:46:04 20237 2

原创 基于图的任务流引擎GraphScheduleEngine

GraphScheduleEngine是什么:GraphScheduleEngine是一个基于DAG图的任务流引擎,不同语言编写、运行于不同机器上的模块、程序,均可以通过订阅GraphScheduleEngine的消息来启动、运行、结束自身的任务。开发GraphScheduleEngine的初衷:在数据挖掘、推荐引擎的离线计算等任务中,会涉及诸多的子任务,每个子任务之间通常还存在着复杂的依赖关系,

2016-12-19 17:19:53 3697

原创 Java中使用CountDownLatch进行多线程同步

CountDownLatch介绍在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法:1、synchronized关键字进行同步。2、Lock锁接口及其实现类ReentrantLock、ReadWriteLock锁实现同步。3、信号量Semaphore实现同步。其中,synchronized关键字和Lock锁解决的是多个线程对同一资源的并发访问问题。信号量Semaphore解决的是

2016-12-05 14:37:00 6638

原创 TensorFlow实验环境搭建

初衷:由于系统、平台的原因,网上有各种版本的tensorflow安装教程,基于linux的、mac的、windows的,各有不同,tensorflow的官网也给出了具体的安装命令。但实际上,即使tensorflow安装成功,还是会遇到需要安装其他辅助工具的情况,同时,换一台机器又要面临整个环境重新安装的问题。由于docker制作一次镜像,可以拷贝重复使用的原因,在这里探讨一下在docker上制作一

2016-12-02 11:48:59 3396 1

原创 Java中Semaphore(信号量)的使用

Semaphore的作用:在java中,使用了synchronized关键字和Lock锁实现了资源的并发访问控制,在同一时间只允许唯一了线程进入临界区访问资源(读锁除外),这样子控制的主要目的是为了解决多个线程并发同一资源造成的数据不一致的问题。在另外一种场景下,一个资源有多个副本可供同时使用,比如打印机房有多个打印机、厕所有多个坑可供同时使用,这种情况下,Java提供了另外的并发访问控制--资源

2016-11-29 10:30:44 39656 16

原创 CNN在中文文本分类的应用

深度学习近一段时间以来在图像处理和NLP任务上都取得了不俗的成绩。通常,图像处理的任务是借助CNN来完成的,其特有的卷积、池化结构能够提取图像中各种不同程度的纹理、结构,并最终结合全连接网络实现信息的汇总和输出。RNN由于其记忆功能为处理NLP中的上下文提供了途径。

2016-11-25 22:45:18 30837 32

原创 Java中的Lock锁

Lock锁介绍:在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景、高效的性能,java还提供了Lock接口及其实现类ReentrantLock和读写锁 ReentrantReadWriteLock。 相比synchronized来实现同步,使用Lock实现同步主要有以下差异性: 1、使用synchronized关键字时,锁的控制和释放是在syn

2016-11-22 13:39:08 829

原创 synchronized与条件同步

在并发编程中,有这样的需求:当满足某个条件时线程执行同步块中的代码,条件不满足时,让线程在此等待,直至条件满足再执行同步代码块。java的Object类即提供了一类这样的方法wait(),notifyAll()/notify(),调用wait()方法后,线程A释放对同步代码块的控制并进入休眠状态,在条件再次满足时,调用notifyAll()/notify()方法唤醒线程A,线程A将被唤醒并重新试图

2016-11-17 14:32:37 1552

原创 JDBC线程池创建与DBCP源码阅读

创建数据库连接是一个比较消耗性能的操作,同时在并发量较大的情况下创建过多的连接对服务器形成巨大的压力。对于资源的频繁分配﹑释放所造成的问题,使用连接池技术是一种比较好的解决方式。在Java中,连接池已经有很多开源实现了,在这里使用commons-dbcp2这个包来创建JDBC连接池:public final class JDBCUtil{    private static DataSource

2016-11-16 18:32:11 2082

原创 Java中的synchronized关键字

Java中的多线程同步:讨论synchronized之前先看简单看一些java中的多线程同步。当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常。比如,有个初始银行账户Account、其初始值为0,有两个小伙伴A、B去银行的两个窗口同时往Account这个账户存钱100¥,这个时候需要先获取账户原来的值,然后在原始值的

2016-11-12 14:08:55 454

原创 Java中的static关键字

static 概念:在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思。Java程序运行过程会涉及以下内存区域:寄存器: JVM内部虚拟寄存器,存取速度非常快,程序不可控制。栈:保存局部变量的值,包括:a.用来保存基本数据类型的值;b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧

2016-11-11 17:20:52 473

原创 Java中的final关键字

在JAVA中经常会遇到出现final关键字的场合,final关键字在不同的上下文环境中,其含义也有所不同,同时,自己也出现过误用final关键字的情况。在此,对final关键字的左右和使用场合做一个总结:final关键字基本含义:字面意思:被final修饰的对象是无法改变的。在Think in Java这本书中,讨论了使用final的三种情况:一、final数据:在程序设计中,经常需要在程序开始运

2016-11-09 14:46:59 580

原创 聊聊机器学习中的无监督学习

无监督式机器学习的两大类问题:聚类问题和Autoencoder问题,聚类问题解决的其实是模糊...

2016-11-02 13:35:53 12092 2

原创 短文本情感分析

一、什么是情感分析:情感分析(SA)又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客观分析等。情感极性分析的目的是对文本进行褒义、贬义、中性的进行判断。情感程度分析主要是对同一情感极性中再进行划分或者细分,以描述该极性的强度。例如“喜爱”和“敬爱”都是褒义词,但是“敬爱”相对来说褒义的程度更

2016-10-12 21:09:37 29363 7

原创 人体呼吸信号的数据挖掘

生理信号中的呼吸信号是一类典型的时间序列信号,可以从移动设备检测到的心电信号中提取得到或者采用其它方式获取,对呼吸信号进行分析并挖掘其中的异常呼吸事件 对研究人体睡眠质量及其他心脑血管疾病有极大的帮助。通常这一类信号的处理会包括两大类过程:信号预处理1、从原始信号中提取呼吸信号: 这一步因原始信号的不同而存在较大的差异,在此不做叙述2、提取得到的呼吸信号的前处理: 通常为了后续做数据挖掘、信号检测

2016-09-14 23:37:39 11751 2

原创 Spark编译及spark开发环境搭建

最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一套windows下的spark的开发环境,方便代码的编写和调试。中间遇到了比较多的问题,在此也做一个记录/总结。Spark编译编译条件:官方给出的spark预编译版本是不支持spark on hive

2016-09-04 10:07:07 3195

朴素贝叶斯分类法

使用朴素贝叶斯方法实现的中文文本分类算法

2015-01-10

R软件语言入门教程

关于R语言比较基础全面的教程,R的语法、数据结构、常用函数都有介绍

2014-07-23

大数加法程序

大数加法程序 大数加法程序 大数加法程序 C,C++

2012-07-01

c++桌面时钟程序

利用c++和windows api开发了一个小型的桌面时钟重新换,欢迎下载

2012-06-26

定时关机程序

dev c++可以编译运行,代码优化的还不是很好哈

2012-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除