数据科学

数据科学专业人员,机器学习专家以及有兴趣了解该领域的人员的问答

2
放大局部敏感哈希
我正在尝试建立一个余弦局部敏感哈希,这样我就可以找到候选的相似项目对,而不必比较每个可能的对。我已经基本工作了,但是我数据中的大多数配对似乎在-0.2到+0.2范围内具有余弦相似度,因此我试图将其切成小方块,并选择余弦相似度0.1及更高的东西。 我一直在阅读第3章“挖掘海量数据集”。它讨论了通过放大局部敏感族来提高候选对选择的准确性。我想我只是想了解数学上的解释,但是我很难理解我是如何实际实现的。 我到目前为止所拥有的如下 我说有1000部电影,每部电影都有来自1M用户的评分。每部电影都由用户分数的稀疏向量表示(行数=用户ID,值=用户分数) 我建立了N个随机向量。向量长度与电影向量的长度(即用户数量)匹配。向量值为+1或-1。我实际上将这些向量编码为二进制以节省空间,其中+1映射为1,-1映射为0 我通过获取电影的点积和N个随机向量中的每一个来为每个电影构建草图向量(或者更确切地说,如果我通过水平放置N个随机向量并将它们彼此叠置来创建矩阵R,则草图因为电影m是R * m),然后取结果向量中每个元素的符号,所以我以每张+1和-1s电影的草图向量结尾,我再次将其编码为二进制。每个向量的长度为N位。 接下来,通过执行以下操作寻找相似的草图 我将素描矢量分成r位的b个带 r位的每个带都是一个数字。我将该数字与乐队编号结合起来,然后将电影添加到该编号下的哈希存储桶中。每部电影可以添加到多个存储桶中。 然后,我看着每个水桶。同一存储桶中的所有电影都是候选对。 将此与mmds的3.6.3进行比较,我的AND步骤是当我查看r位的波段时-如果r位具有相同的值,则一对电影通过AND步骤。我的OR步骤发生在存储桶中:如果电影都在任何存储桶中,则它们都是候选对。 这本书建议我可以通过添加更多的AND和OR步骤来“放大”我的结果,但是我对如何实际执行操作感到困惑,因为对于进一步的层的构造过程的解释是检查成对相等性而不是检查拿出桶号。 谁能帮助我了解如何执行此操作?

2
scikit分类器需要多少时间进行分类?
我计划使用scikit线性支持向量机(SVM)分类器对包含100万个带标签文档的语料库进行文本分类。我打算做的是,当用户输入某个关键字时,分类器将首先将其分类为一个类别,然后在该类别目录的文档中进行后续的信息检索查询。我有几个问题: 如何确认分类不会花费太多时间?我希望用户不必花时间等待分类完成才能获得更好的结果。 使用适用于网站/ Web应用程序的Python的scikit库适合吗? 有谁知道亚马逊或翻车如何对用户查询进行分类,或者他们使用完全不同的逻辑?

2
基于向量运算的随机梯度下降?
让我们假设我想使用具有N个样本的数据集来训练随机梯度下降回归算法。由于数据集的大小是固定的,因此我将重复使用数据T次。在每次迭代或“纪元”时,在对整个训练集进行随机重新排序后,我都会使用每个训练样本一次。 我的实现基于Python和Numpy。因此,使用向量运算可以显着减少计算时间。提出批量梯度下降的矢量化实现非常简单。但是,在随机梯度下降的情况下,我无法弄清楚如何避免在每个时期迭代所有样本的外部循环。 有人知道随机梯度下降的任何矢量化实现吗? 编辑:有人问我,如果我的数据集大小固定,为什么要使用在线梯度下降。 从[1]中可以看出,在线梯度下降的收敛速度比批量梯度下降的慢,且经验成本最低。但是,它收敛得更快,达到了预期成本的最小值,从而衡量了通用性能。我想通过交叉验证来测试这些理论结果对我的特定问题的影响。没有矢量化的实现,我的在线梯度下降代码要比批处理梯度下降代码慢得多。这显着增加了完成交叉验证过程所需的时间。 编辑:根据ffriend的要求,我在这里包括了我的在线梯度下降实现的伪代码。我正在解决回归问题。 Method: on-line gradient descent (regression) Input: X (nxp matrix; each line contains a training sample, represented as a length-p vector), Y (length-n vector; output of the training samples) Output: A (length-p+1 vector of coefficients) Initialize coefficients (assign value 0 to all coefficients) Calculate outputs …

3
网络分析经典数据集
有一些用于机器学习分类/回归任务的经典数据集。最受欢迎的是: 鸢尾花数据集 ; 泰坦尼克号数据集 ; 潮流汽车 ; 等等 但是,有人知道类似的数据集用于网络分析/图论吗?更具体-我正在寻找用于比较/评估/学习的Gold标准数据集: 集中度措施; 网络聚类算法。 我不需要大量可公开获得的网络/图表,但是需要几个实际上必须知道的数据集。 编辑: 为“黄金标准数据集”提供确切的功能非常困难,但是这里有一些想法。我认为,真正的经典数据集应满足以下条件: 文章和教科书中有多个参考文献; 包含在著名的网络分析软件包中; 足够的生存时间; 在许多有关图形分析的课程中的用法。 关于我的兴趣领域,我还需要标记顶点的类和/或预先计算(或预定义)的“权限分数”(即中心度估计值)。问完这个问题后,我继续搜索,下面是一些合适的示例: Zachary的空手道俱乐部:成立于1977年,被引用超过1.5k次(根据Google Scholar),顶点具有Faction属性(可用于聚类)。 鄂尔多斯协作网络:不幸的是,我还没有以数据文件的形式找到这个网络,但是它很有名,如果有人用数学家的专业数据丰富网络,它也可以用于测试聚类算法。
10 dataset  graphs 


2
交叉验证:K折与重复随机子采样
我想知道针对分类问题选择哪种类型的模型交叉验证:K折或随机子采样(引导采样)? 我最好的猜测是使用数据集的2/3(约1000个项目)进行训练,并使用1/3进行验证。 在这种情况下,K折仅给出三个迭代(折),这不足以看到稳定的平均误差。 另一方面,我不喜欢随机子采样功能:有些项目永远不会被选择进行训练/验证,而有些项目会被多次使用。 使用的分类算法:随机森林和逻辑回归。

2
调试神经网络
我使用scipy.optimize.minimize(共轭梯度)优化功能在python中构建了一个人工神经网络。 我已经实施了梯度检查,仔细检查了所有内容,等等,我确定它可以正常工作。 我已经运行了几次,它达到了“优化成功终止”,但是当我增加隐藏层的数量时,假设成功终止后,假设的成本增加了(其他所有条件保持不变)。 凭直觉,似乎随着增加隐藏层的数量,成本应该降低,因为它能够生成更复杂的假设,可以更好地拟合数据,但是事实并非如此。 我很想了解这里发生的事情,或者我是否正确实施了神经网络?

4
如何调试数据分析?
我遇到了以下问题,我很典型地进行侦察。 我有一些大数据,例如几百万行。我对它进行了一些非平凡的分析,例如,由几个子查询组成的SQL查询。我得到一些结果,例如,说明属性X随时间增加。 现在,有两种可能的结果可能导致这种情况: X确实随着时间增加 我的分析中有错误 如何测试第一次发生而不是第二次发生?逐步调试器(即使存在)也无济于事,因为中间结果仍然可以包含数百万行。 我唯一能想到的就是以某种方式生成一个小的合成数据集,该数据集具有我要测试的属性,并将其作为单元测试进行分析。有工具可以做到这一点吗?特别是但不限于SQL。

1
集群存储在ElasticSearch中的客户数据
我在弹性搜索集群中存储了一堆客户资料。这些配置文件现在用于为我们的电子邮件订阅创建目标组。 现在,目标群体是通过使用Elasticsearch多面搜索功能手动形成的(例如,让所有23岁的男性顾客拥有一辆汽车和3个孩子)。 如何使用数据科学,机器学习,集群或其他方法自动搜索有趣的组? r编程语言似乎是完成此任务的好工具,但我无法形成这种群体搜索的方法。一种解决方案是以某种方式找到最大的客户群并将其用作目标组,因此问题是: 如何自动选择相似客户的最大集群(按目前尚不知道的参数相似)? 例如:我的程序将连接到elasticsearch,将客户数据卸载到CSV,然后使用R语言脚本将发现很大一部分客户是没有孩子的男性,而另一大部分客户是汽车,并且眼睛是棕色。

5
如何创建一个好的停用词列表
我正在寻找有关如何整理停用词列表的一些提示。有人知道/可以推荐一个好方法从数据集中提取停用词列表以进行预处理和过滤吗? 数据: 数年来,大量的可变长度的人类文本输入(搜索词和整个句子(最多200个字符))。文本中包含大量垃圾邮件(例如来自机器人的机器输入,单个单词,愚蠢的搜索,产品搜索等),似乎只有几%有用。我意识到有时候(很少)人们会问一些很酷的问题来搜寻我的身边。这些问题是如此的酷,以至于我认为有必要更深入地研究它们,以了解人们随着时间的流逝如何搜索以及人们对使用我的网站感兴趣的主题。 我的问题: 是我真的在预处理方面苦苦挣扎(即丢弃垃圾邮件)。我已经从网络上尝试过一些停用词列表(NLTK等),但是这些并不能真正满足我对这个数据集的需求。 感谢您的想法和讨论!


2
批次归一化是否意味着乙状结肠比ReLU更好地工作?
批次归一化和ReLU都是消失梯度问题的解决方案。如果我们使用批处理规范化,那么我们应该使用S型吗?还是ReLU的功能使其即使在使用batchnorm时仍值得使用? 我想在batchnorm中完成的规范化将向负发送零次激活。这是否意味着batchnorm解决了“ Dead ReLU”问题? 但是tanh和logistic的连续性仍然很吸引人。如果我使用batchnorm,tanh是否会比ReLU更好? 我确定答案取决于。那么,您的经验中有什么起作用,您的应用程序的显着特征是什么?

1
为什么我的Keras模型会学会识别背景?
我正在尝试使用预训练的模型(也在该数据集上进行训练)在Pascal VOC2012上训练Deeplabv3 +的Keras实现。 我得到了奇怪的结果,其准确度迅速收敛到1.0: 5/5 [==============================] - 182s 36s/step - loss: 26864.4418 - acc: 0.7669 - val_loss: 19385.8555 - val_acc: 0.4818 Epoch 2/3 5/5 [==============================] - 77s 15s/step - loss: 42117.3555 - acc: 0.9815 - val_loss: 69088.5469 - val_acc: 0.9948 Epoch 3/3 5/5 [==============================] - 78s 16s/step - loss: 45300.6992 …


4
SGDClassifier:具有先前未知标签的在线学习/ partial_fit
我的训练集包含大约50k项,我可以通过它们进行初步学习。每周添加约5k条目;但“消失”的数量相同(因为用户数据必须在一段时间后删除)。 因此,我使用在线学习是因为以后无法访问完整的数据集。目前,我正在使用一个SGDClassifier有效的工具,但我遇到了一个大问题:新类别正在出现,现在我不能再使用模型了,因为它们不在最初的模型中fit。 有没有办法使用SGDClassifier其他模型?深度学习? 我现在是否必须从头开始都没关系(即使用以外的东西SGDClassifier),但是我需要一些能够使用新标签进行在线学习的东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.