TheRProjectforStatisticalComputing2016.6.8•什么是R?•为什么选择R?•探索性数据分析•统计推断•回归分析•机器学习•Hadoop与R相结合什么是R?•R是GNU的一个开源工具,具有S语言血统,擅长统计计算和统计制图。•最受欢迎的数据分析和可视化平台之一•首次出现1993年;2011年随大数据的爆发而流行起来•R22岁喽12年前默默无闻2011年广为人知RSPSSEXCELSAS为什么选择R?为什么选择R?•免费、支持Windows/MacOS/Linux•开源人人可以为之做贡献有强大的工具包可以贡献自己的工具包为什么选择R?数据获取•可以完成数据分析涉及的几乎所有步骤数据清理数据分析结果报告发布结果探索性数据分析•数据分析中的必要步骤–正式的数据分析前要做的一个步骤•功能–帮助我们了解数据•常用方法–作图:相比于抽象的数据,图形可以让我们更直观的了解数据的属性和数据模式,为进一步的正式分析提高一些分析思路和线索;R具有强大的作图系统,这也是R的卖点之一探索性数据分析•数据分析中的必要步骤–正式的数据分析前要做的一个步骤•功能–帮助我们了解数据•常用方法–作图:相比于抽象的数据,图形可以让我们更直观的了解数据的属性和数据模式,为进一步的正式分析提高一些分析思路和线索;R具有强大的作图系统,这也是R的卖点之一探索性数据分析•举例•数据:UCI机器学习库中的家庭电能消耗数据集•目标:了解居民用电量•主要过程:作图探索性数据分析探索性数据分析探索性数据分析探索性数据分析探索性数据分析•图的作用就是让我们熟悉数据,了解数据的模式•探索性数据分析的难点不在于分析本身,而在于如何有效地作图,以及如何解读图里蕴含的信息统计推断•基于数据得出正式结论的过程–不正确性:有噪音。噪音的存在会影响结论的有效性,统计推断的过程就是从统计意义上确定结论是否成立统计推断•比如,基于某个数据集画出的图,我们发现,龙卷风引起的致死率比洪水的致死率更高。•这是一个描述性的结论,而不是正式结论。因为我们的采样有可能发生偏差,只采集了某些省份的数据。这样的偏差会给我们的数据引入噪音和不确定性。•因此,我们看到的龙卷风的致死率比洪水的致死率高可能只是一个表面现象。而在统计层面,两者并没有差异。统计推断•在探索性分析中我们推测的结论并不是一个正式的结论。•要想得到正式的结论,是需要进行统计推断的。•选举:候选人Avs.候选人B谁会胜出?–民意抽样调查–假设支持调查结果支持候选人A的人远远多于支持候选人B的人,是否可以下结论候选人A会胜出呢?这个过程就需要统计推断。–统计推断不仅会告诉我们一个结论,并且会告诉我们这个结论是错误的概率。如果下结论A会胜出,那么通常的统计标准是结论出错的概率小于5%(国际通用的标准,表示这个结论是个正式结论)。回归分析•线性回归分析–线性模型拟合数据•预测变量•结果变量回归分析•房价–房子的面积–地理位置–多少个卧室,多少个卫生间–家具是否齐全–……结果变量预测变量回归分析•回归分析的作用–以上预测变量中哪个变量对房价的影响最大?–预测:根据历史数据拟合出一个模型以后,希望能够被给予新的变量以后去预测结果变量。回归分析最重要的作用整个数据科学希望达到的目标机器学习•通过海量数据训练模型,并用模型去预测新的数据•分类问题机器学习•健身动作是否到位•目标:训练一个分类器,预测人们健身的动作是否正确。机器学习•步骤:–探索性数据分析了解数据的维度training-read.csv(“pml-training.csv”)training-read.csv(“pml-testing.csv”)dim(training)机器学习•步骤:–数据预处理①将空变量赋0②载入caret包(R中可以进行机器学习的包),删除接近于0的遍历training-training[,colSums(is.na(training))==0]testing-testing[,colSums(is.na(testing))==0]nzv_train-nearZeroVar(training)training-training[,-nzv_train]nzv_test-nearZeroVar(testing)testing-testing[,-nzv_test]机器学习•步骤:–数据预处理③将无用变量删除training-training[,-c(1:6)]testing-testing[,-c(1:6)]dim(training)机器学习•步骤:–建立模型①划分训练集和测试集训练集:建立模型测试集:验证模型预测的准确率Caret包中的createPartition()函数可以完成测试集和训练集的划分inTrain-createDataPartition(y=training$classe,p=0.7,list=FALSE)training_set-training[inTrain,]cv_set-training[-inTrain,]机器学习•步骤:–建立模型②模型的建立Caret包中的randomForest()函数可以模型的建立rf_fit-randomForest(classe~.,data=training_set)机器学习•步骤:–测试模型准确率将训练出的模型参数与需要预测的数据集传到predict()函数中,可以知道当前模型预测出的结果;把当前模型预测出的结果与真实数据传入到一个函数中,就可以得到想要的结果。training_pred-predict(rf_fit,newdata=training_set)confusionMatrix(training_pred,training_set$classe)机器学习training_pred-predict(rf_fit,newdata=training_set)confusionMatrix(training_pred,training_set$classe)机器学习•步骤:–对一个全新的模型进行预测,输出结果test_pred-predict(rf_fit,newdata=testing)test_predHadoop与R相结合•Hadoop的家族如此之强大,为什么还要结合R语言?–a.Hadoop家族的强大之处,在于对大数据的处理,让原来的不可能(TB,PB数据量计算),成为了可能。–b.R语言的强大之处,在于统计分析,在没有Hadoop之前,我们对于大数据的处理,要取样本,假设检验,做回归,长久以来R语言都是统计学家专属的工具。Hadoop与R相结合•Hadoop的家族如此之强大,为什么还要结合R语言?–c.从a和b两点,我们可以看出,hadoop重点是全量数据分析,而R语言重点是样本数据分析。两种技术放在一起,刚好是取长补短!。Hadoop与R相结合•模拟场景:对1PB的新闻网站访问日志做分析,预测未来流量变化用R语言,通过分析少量数据,对业务目标建回归建模,并定义指标用Hadoop从海量日志数据中,提取指标数据用R语言模型,对指标数据进行测试和调优Hadoop与R相结合•以计算机开发人员的思路,所有事情都用Hadoop去做,没有数据建模和证明,”预测的结果”一定是有问题的。•以统计人员的思路,所有的事情都用R去做,以抽样方式,得到的“预测的结果”也一定是有问题的。Hadoop与R相结合•如何让Hadoop结合R语言?–RHadoop•RHadoop是一款Hadoop和R语言的结合的产品,由RevolutionAnalytics公司开发,并将代码开源到github社区上面。RHadoop包含三个R包(rmr,rhdfs,rhbase),分别是对应Hadoop系统架构中的,MapReduce,HDFS,HBase三个部分。Hadoop与R相结合•如何让Hadoop结合R语言?–Rhive•RHive是一款通过R语言直接访问Hive的工具包,是由NexR一个韩国公司研发的。Hadoop与R相结合•如何让Hadoop结合R语言?–重写Mahout•用R语言重写Mahout的实现也是一种结合的思路•Mahout是基于Hadoop的数据挖掘和机器学习的算法框架,Mahout的重点同样是解决大数据的计算的问题。Hadoop与R相结合•上面说的都是R如何调用Hadoop•当然我们也可以反相操作,打通JAVA和R的连接通道,让Hadoop调用R的函数。未有成型商品