最近看到一篇关于Spark架构的博文,作者是 Alexey Grishchenko。看过Alexey博文的同学应该都知道,他对Spark理解地非常深入,读完他的 “spark-architecture” 这篇博文,有种醍醐灌顶的感觉,从JVM内存分配到Spark集群的资源管理,步步深入,感触颇多。因此,在周末的业余时间里,将此文的核心内容译成中文,并在这里与大家分享。如在翻译过程中有文字上的表达纰漏,还请大家指出。

Read More »

本文篇幅较短,内容源于自己在使用SparkSQL时碰到的一个小问题,因为在之后的数据处理过程中多次使用,所以为了加深印象,在此单独成文,以便回顾。至于文章中使用的方法,或许不是最好的,如果你有更好的方法,还请分享一下。

Read More »

此文是一篇译文,是本人于今年四月应CSDN编辑之邀翻译的一篇文章,原文发表于今年三月 [Escaping from Saddle Points](共两篇),此文是第一篇文章的译文,第二篇文章尚未翻译,如有需要请点击原文 Saddles Again。文章讲述了各式各样的 critical points 以及使用何种方法来来避开 saddle point(鞍点),个人觉得比较实用,属于纯理论知识,因此重新整理了一番,受益匪浅。详细内容请看正文。

Read More »

最近在处理数据时,需要将原始数据与Redis的数据进行join,在读取Redis的过程中,碰到了一些问题,顺便做个笔记,希望对其他同学也有所帮助。实验过程中,当数据量还是十万级别的时候,逐个读取Redis并无压力;但当数据量达到千万级别时,问题就油然而生了,即使是使用Spark的mapPartitions也无法解决。因此,就考虑使用Redis的pipeline了(如果你有更好的方法,还请不吝赐教)。PS:本文主要针对的是Scala语言,因为目前在网上还没有看到Scala版本的Redis pipeline,希望此文能给初学者提供一个参考。

Read More »

在做数据分析时,往往会碰到很多K-V结构,而处理K-V这种Pair型的数据结构是非常常见的事。譬如对Pair数据按照key进行分组、聚合,或是根据key对value进行fold运算等。本文讲解的就是spark的combineByKey算子。下面首先会对combineByKey的各个参数进行简单的介绍,然后通过一个实例来加深对它的理解。

Read More »

算法性能的好坏跟数据是密不可分的,因此找到一组更具代表性的特征子集显得更加重要。在实际项目中,因为有的特征对模型而言是冗余的,它对算法的性能会产生负面影响,此时就需要做特征选择。特征选择的目的就是从一组特征集合中去除冗余或不相关的特征从而达到降维的目的。说到降维,它不仅包括特征选择,还包括了特征提取,而本文主要介绍两种常用的特征选择方法。

Read More »

以前在使用python的时候,都是使用root用户安装好的全局python,现在,因为root用户安装的Python版本太低,同时自己没有root权限去对全局Python升级,所以要在非root用户下安装自己指定的Python。因此,就重新整理了一份如何在Linux环境下使用非root用户安装python及其相关的库,以备不时之需。

Read More »

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

$$\theta^* = \arg \min_\theta \frac{1}{N}{}\sum_{i=1}^{N} L(y_i, f(x_i; \theta)) + \lambda\ \Phi(\theta)$$

Read More »

本文主要介绍几种常用的用于分类的性能评估指标,同时介绍如何绘制ROC曲线以及计算AUC值的便捷方法。最后再附上一个绘制ROC曲线和计算AUC的Python源码实现。

Read More »

Github源码:https://github.com/csuldw/MachineLearning/tree/master/PCA

PCA(principle component analysis) ,主成分分析,主要是用来降低数据集的维度,然后挑选出主要的特征。原理简单,实现也简单。关于原理公式的推导,本文不会涉及,你可以参考下面的参考文献,也可以去Wikipedia,这里主要关注实现,算是锻炼一下自己,对PCA在理论的基础上画个圆满的句号。

Read More »

本文主要回顾下几个常用算法的适应场景及其优缺点!(提示:部分内容摘自网络)。

机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在深度学习很火热,神经网络也是一个不错的选择。假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者这里有些技巧可以参考,下面来分析下各个算法的优缺点,基于算法的优缺点,更易于我们去选择它。

Read More »

介绍

在学习机器学习的时候,首当其冲的就是准备一份通用的数据集,方便与其他的算法进行比较。在这里,我写了一个用于加载MNIST数据集的方法,并将其进行封装,主要用于将MNIST数据集转换成numpy.array()格式的训练数据。直接下面看下面的代码吧(主要还是如何用python去读取binnary file)!

Read More »

接触Python已将近两年了,写过的代码也不少,每次对代码的编写都没有统一的规范,所以,根据自己以往的经验,专门为自己定制了一份用于编写Python代码时使用的代码规范。

Read More »

背景

做实验的时候,需要将独立测试集的数据与别人server跑出来的结果进行比较,比如下面这个:http://bioinfo.ggc.org/bindn/ 。但是这个server一次性只能提交一个fasta文件,也就是说,我有很多数据的话,就要分多次提交。如果是人工的去操作,会比较耗时,而且工作量特别大,因此这里就需要模拟网页的数据提交。这就是本文的主要内容,

Read More »