当我参加Course的机器学习课程时,我发现我可以使用我工作的公司的一个数据库(~50‘s记录)来做一些线性回归实验。
但是提出这个实验所涉及的步骤之一是定义这个任务所需的技术栈。
根据我的理解,应包括下列任务:
对于#1,我可以采取一些途径,比如执行自定义的.NET或Java程序,甚至使用ETL流程(这更多地是将数据复制到其他地方,而不是扰乱生产数据库)。
在第二,有趣的部分开始:我应该考虑一个专门的工具,一个<100毫米的记录数据库?如果是这样的话,你会建议如何将这些数据转换成类似矩阵的表示法?
我相信#3依赖于#4:我看到了大量基于文本或csv文件的示例(例如: R,或Matlab/Octave)。这些是这些计算的标准格式吗?或者我应该从数据库中读取
第四,从我所能理解的角度来看,使用R是一条路,对吗?
最后,我应该考虑一个多任务的多处理器服务器,还是考虑到这是一个实验,在这个实验中花费几个小时的计算时间并不是个大问题,一台4GB的机器就可以完成这个任务?
我知道这个问题可能被认为过于宽泛,但我真的想听听你说我应该考虑什么,即使我错过了什么(或走错了路)。
对于这些数据,您可以将其视为波士顿的房价:它是一个30个特性(列)数据集,用于预测其中一个列的值。
(问题最初张贴在堆栈溢出上)
发布于 2016-10-12 02:07:21
因为还没有人提到有效的RAM方法:
与其将所有内容加载到RAM中,您还可以使用在线/核心外学习。
例如,Python的Scikit-学习有SGDClassifier类。将其损失函数设置为"log“,则得到logistic回归。使用partial_fit函数,您可以将直接从数据库(或从某些CSV文件.)读取的小批数据提供给它。
沃巴瓦比特也值得一试。这是为核心外学习而做的--几乎不用任何内存,你也找不到任何更快的东西。
您还可以使用Python的喀拉斯库来构建一个神经网络(或者在最简单的情况下只是逻辑回归),您也可以用少量的数据来填充它,而不是将所有数据加载到内存中。与其他两种建议相比,神经网络还可以学习非线性依赖关系。
此外,试着从更少的样本开始--用10k、100k、1M样本绘制学习曲线,看看是否需要1亿个样本才能获得好成绩。
发布于 2016-09-11 00:24:06
如果您的整个数据集都符合RAM,则会更容易。因此,检查它有多大,以GB和获得足够的RAM。多处理器可能帮不上什么忙。所以试着用几个核来获得最高频率的程序。您可以将数据提取到csv中,并使用R或Scikit进行建模。
发布于 2016-09-11 23:12:51
您可以使用传统的回归库对1亿条记录使用R或Python。根据我的经验,您将需要大约16 be的RAM,可能会更多!!在运行算法和预处理步骤时,四核处理器将很好。最好将转换后的数据存储到即时数据库中。
https://datascience.stackexchange.com/questions/13912
复制