微博传播数量和传播深度的预测--基于pyspark和某个回归算法
8-28决定参加一下这个千万条的数据处理任务,因为场景和自己做过的一个回归分析预测差不多,第一天开始在小规模的数据上做准备工作。
第三次大修改版本
date 20160830 星期二
将这些运算转移到Linux平台上,因为有的迭代完全让我的电脑的内存受不了 这次版本的主要的目的是计算出某个微博的深度的时间序列的变化
第四次大修改版本
date 20160831 星期三
从原始数据提取出随着时间变化的序列的深度和转发的次数的测试工作完成了 本次修改两个任务:第一将函数按照两个部分分别整合起来; 第二将采样数据替换成原始测试数据跑一遍,完成基本的数据处理 下一次版本的主要目的是,通过这些已知的关系,搭建数据预测的模型,用训练数据训练,用测试数据测试,然后修正参数,得到最好的模型
第五次大修改版本
date 20160901 星期四
今天上午遇到的严重的问题是内存不够,因为我把计算过程中,尤其是初始数据的RDD也缓存起来了,这很大,所以不够用了。 更改只缓存重要的结果,例如,时间序列的,转发次数和转发深度这一些RDD,这样程序差不多能完全执行下来。 只是第二个计算深度的版本还是有些问题,需要在以后用到的时候进一步修改,尤其是针对特定的时间段,谁在转发,转发的人最大的粉丝个数。
这个版本主要解决的问题是将计算的结果保存到文件中,方便回归模型调用文件中处理好的数据进行训练和预测。 首先计划实现某一个时间段的预测,其他的整体的预测还是以后再做。
第六次大修改版本
date 20160901 星期四
今天下午最大的收货是看到了曙光
但是成功距离我以前想的还是有一段距离的 本次版本将完整计算出所有需要的数据,保存到文件中,希望今天能完成
第七次大修改版本
date 20160902 星期五
今天多计算了几个需要的参数,并且优化了深度和广度的生成方式。 但是有一个参数生成失败,而且深度获取有严重的bug是算法的问题。这个还没想到好的方法改。 今天还是没能下手做第一个预测。
第八次大修改版本
date 20160905星期一
今天做了一个小突破,覆盖人数算出来了 今天剩下的目标是,重新抹平生成的数据 然后用这个程序跑测试集
第九次大修改版本
date 20160906 星期二
把程序简化了很多,函数关系互相的顺序调用,这样关系清楚了,也减少不必要的计算量。 对训练集和测试机分别生成四类文件,微博id对应的粉丝数,微博id对应的转发量,微博id对应的深度,微博id对应的覆盖人数
第十次大修改版本
date 20160907 星期三
昨天有一些需要的数据没完全生成,因为vsphere中的ubuntu磁盘不够了,还没搞明白怎么扩展。任务丢失就失败。 但是部分的数据生成了。够用。
今天首先根据时段15预测时间段16的时候的数据,遇到一个致命的问题,特征向量和label加一起用labeledpoint时候得到超出数组错误。 因为模型需要的是sprasevector而我传入的是densevector,而这个转换现在spark好像不支持。 从mllib转向新的ml中的模型,还是这个错误。label是非负数,但是却出现了负值索引的数组。这一个预测做不出来,就没法批量下手呀。。
第十一次大修改版本
date 20160908 星期四
给虚拟机扩了30G但是交换区好像要手动启动了,否则会很慢。。 仔细研究了一下模型对数据的请求,打算吧特征向量转化为libsvm格式,方便模型自己加label。
第十二次大修改版本
date 20160909 星期五
第一次做出来时间段15的转发次数,下面想办法做延伸,怎么搞292个时间段的预测。
第十三次大修改版本
date 201609012 星期一
委屈求全的求出了所有时段的预测结果。现在特征向量有点匮乏。解决了两个主要的问题:
第一:k-v分裂之后,想在zip的时候发现zip有两个要求不仅长度相等,分区也相同才可以。所以迂回一下,首先分别zipWithIndex然后翻转k-v然后pire RDD取join再将values()map出k-v就可以了。
第二个:拼接字符串,看似很简单,加上循环就比较操蛋了。学会了一个join函数,python的join函数可以对数组批量连接。
第十四次大修改版本
date 20160913 星期二
不管其他问题首先计算出第一版的结果:
用生成的预测结果文件取出来加上key然后join太费劲,288个迭代起来,没完没了。 以
前就是因为这个弊端,选择了生成单独的文件。
所以捣鼓一上午之后选择shell脚本生成需要的结果。 将表头和数据分别黏贴起来。修改了几个小小的bug。 最终提交了一个版本的结果。
现在的问题:
原始数据有改动,但是这个影响不大。
预测结果排序有问题,这个可以解决,当时没解决。
还有一个比较困难的问题是深度生成的算法还是有硬伤,后面时段的深度可能比前面的时段的深度浅。
待续
微博传播数量和传播深度的预测--基于pyspark和某个回归算法的更多相关文章
- 深度学习基础-基于Numpy的多层前馈神经网络(FFN)的构建和反向传播训练
本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及花书的读书笔记.本文将以多分类任务为例,介绍多层的前馈神经网络(Feed Forward Networks,FFN)加上 ...
- 机器学习(ML)八之正向传播、反向传播和计算图,及数值稳定性和模型初始化
正向传播 正向传播的计算图 通常绘制计算图来可视化运算符和变量在计算中的依赖关系.下图绘制了本节中样例模型正向传播的计算图,其中左下角是输入,右上角是输出.可以看到,图中箭头方向大多是向右和向上,其中 ...
- 小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播
下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) ...
- 基于 Keras 用深度学习预测时间序列
目录 基于 Keras 用深度学习预测时间序列 问题描述 多层感知机回归 多层感知机回归结合"窗口法" 改进方向 扩展阅读 本文主要参考了 Jason Brownlee 的博文 T ...
- UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)
UFLDL深度学习笔记 (二)Softmax 回归 本文为学习"UFLDL Softmax回归"的笔记与代码实现,文中略过了对代价函数求偏导的过程,本篇笔记主要补充求偏导步骤的详细 ...
- DDos攻击,使用深度学习中 栈式自编码的算法
转自:http://www.airghc.top/2016/11/10/Dection-DDos/ 最近研究了一篇论文,关于检测DDos攻击,使用了深度学习中 栈式自编码的算法,现在简要介绍一下内容论 ...
- 股票价格涨跌预测—基于KNN分类器
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- C++从零实现简单深度神经网络(基于OpenCV)
代码地址如下:http://www.demodashi.com/demo/11138.html 一.准备工作 需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能够使用Op ...
- 掌握Spark机器学习库-07.14-保序回归算法实现房价预测
数据集 house.csv 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.cl ...
随机推荐
- python中遇到的各种问题
一 编码问题 python的默认编码是ascii码,可以修改为utf-8 在python\Lib\site-packages\下添加一个文件sitecustomize.py 内容是 import sy ...
- java总结第四次//常用类
六.常用类 主要内容:Object类.String类.Date类.封装类 (一)Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则 ...
- 【python cookbook】【数据结构与算法】6.在字典中将键映射到多个值上
问题:一个能将键(key)映射到多个值的字典(即所谓的一键多值字典[multidict]) 解决方案:如果想让键映射到多值,需要将这多个值保持到另一个容器如列表或集合中: >>> d ...
- cpu进程调度---RT Throttling【转】
转自:http://book.2cto.com/201302/16291.html RT Throttling是对分配给实时进程的CPU时间进行限制的功能.使用实时调度策略的进程由于bug等出现不可控 ...
- IBatisNet Demo (升级from 1.1)
sqlMap.config, 要修改provider的设置 <providers resource="providers.config"/> <database& ...
- DBLINK的session无法关闭,报异常!
------解决方法-------------------------------------------------------- --ALTER SESSION alter session clo ...
- Eclipse中Outline里各种图标的含义
在使用Eclipse或者MyEclipse开发的时候,你一定看到过Outline和Package Explorer中小图标,很多刚刚接触编程的童鞋们可能不会在意它们代表的含义,但如果你花几分钟的时间了 ...
- C++11的一些新特性
3.1.9崭新的Template特性 Variadic Template 可变参数模板 void print() { } template <typename T, typename… Type ...
- C#.Net理论
-------------2014年8月28---------------------------- 1.C#的委托是什么,事件是不是一种委托?答:委托可以把一个方法作为参数代入另一个方法.委托可以理 ...
- javascript 中==和===的区别
对于JavaScript中比较运算符,可能大家用的比较多的是“==”.对于“===”很多人可能很陌生.=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等:= ...