数据科学

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

2
给定我有一个在P(Y | X)上训练时具有良好性能的模型,找到最佳P(X | Y)
输入数据: > T恤的功能(颜色,徽标等)XXX >利润率YYY 我已经在上面的和Y上训练了一个随机森林,并在测试数据上达到了合理的准确性。所以我有XXXYYY 。P(Y|X)P(Y|X)P(Y|X) 现在,我想找到即给定我期望这么高的利润率的X特征的概率分布。P(X|Y)P(X|Y)P(X|Y)XXX 如何使用随机森林(或任何其他判别模型)来做到这一点? 对我来说,一个建议可能是从生成模型而不是判别模型开始。但是,我的理解是,生成模型通常需要训练大量数据,除非做出一些非常严格的假设,例如在朴素贝叶斯的情况下的条件独立性?XXX 其他建议可能只是切换和Y并训练判别模型。现在X将是利润率,Y将是at衬衫的特征。给定目标利润率,P (Y | X )将直接给我t恤功能的概率分布。但是这种方法对我来说似乎并不正确,因为我一直将X作为偶然变量,而将Y视为有效。XXXYYYXXXYYYP(Y|X)P(Y|X)P(Y|X)XXXYYY 而且,据我所知,对于药物发现也提出了类似的问题,并设计了算法,这些算法提出了具有高度成功性的候选新药物。有人可以指点我研究这一领域的文学吗? 更新: 我也碰到过这个和这个,其被用于药物发现约甘斯举行会谈。生成式对抗网络似乎很适合我的问题陈述,因此我一直在阅读有关它们的信息。但是我了解的一件事是GAN以无监督的方式生成样本。他们试图生成样本,就像首先捕获X的基础分布,然后从该分布进行采样一样。但是我对X | Y感兴趣。X和Y在上面定义。除了GAN,我是否应该探索其他东西?有指针吗? 后续问题: 想象一下,我受过GAN培训,学习了如何制作T恤(输出样本Xs)。在给定的Y下,如何获得前5件衬衫?


2
多少数据足以训练我的机器学习模型?
我从事机器学习和生物信息学研究已有一段时间了,今天我与一位同事就数据挖掘的主要一般问题进行了交谈。 我的同事(是机器学习专家)说,他认为,机器学习最重要的实践方面是如何理解您是否收集了足够的数据来训练机器学习模型。 这句话令我感到惊讶,因为我从未在这方面给予过如此重视。 然后,我在Internet上寻找了更多信息,并且根据经验,我在FastML.com上发现了这篇文章,根据您的经验,您需要的数据实例大约是功能的10倍。 两个问题: 1-这个问题在机器学习中真的特别重要吗? 2 - 是的10倍规则工作?这个主题还有其他相关资料吗?

1
在Tensorflow中分批训练
我目前正在尝试在大型csv文件(> 70GB,超过6000万行)上训练模型。为此,我正在使用tf.contrib.learn.read_batch_examples。我正在努力了解此函数实际上是如何读取数据的。如果我使用的批大小为例如50.000,它会读取文件的前50.000行吗?如果我想遍历整个文件(1个纪元),是否必须对estimator.fit方法使用num_rows / batch_size = 1.200的步数? 这是我当前正在使用的输入函数: def input_fn(file_names, batch_size): # Read csv files and create examples dict examples_dict = read_csv_examples(file_names, batch_size) # Continuous features feature_cols = {k: tf.string_to_number(examples_dict[k], out_type=tf.float32) for k in CONTINUOUS_COLUMNS} # Categorical features feature_cols.update({ k: tf.SparseTensor( indices=[[i, 0] for i in range(examples_dict[k].get_shape()[0])], values=examples_dict[k], shape=[int(examples_dict[k].get_shape()[0]), 1]) for …

1
Tensorflow神经网络TypeError:提取参数具有无效的类型
我正在使用tensorflow创建一个简单的神经网络,并收集了我自己的数据,但是,它不配合使用:PI遇到了一个错误,我无法解决或无法找到解决方法,我希望您能提供帮助。 错误消息: TypeError:2861.6152的获取参数2861.6152的类型无效,必须为字符串或Tensor。(无法将float32转换为张量或操作。) 错误是指我的代码中的以下行: _, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output}) 我已经弄清楚,当我在代码中注释掉以下行时,不会发生该错误: prediction = neural_network_model(champion_data) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, item_data)) optimizer = tf.train.AdamOptimizer().minimize(cost) _, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output}) 因此,这些行之一在某处获得的外观与预期的外观并不完全相同。我已经尝试了显而易见的方法(将np.array()从batch_input和batch_output中删除,或将其替换为list()),但这并不能解决问题。我目前的假设是Neuro_network_model(champion_data)的输出某种程度上具有错误的形状或类型,但是我不确定如何进行测试或解决(如果确实如此)。 完整的代码可以在这里找到:https : //gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88 编辑:我已经验证了输入到neuro_network_model的冠军数据,预测和成本都是张量。我一直在尝试使用以下假设解决问题:该问题某种程度上在于代码的feed_dict = {}部分,但到目前为止还没有到位

4
从句子中提取信息
我正在创建一个简单的聊天机器人。我想从用户响应中获取信息。一个示例场景: Bot : Hi, what is your name? User: My name is Edwin. 我希望从句子中提取出埃德温的名字。但是,用户可以通过不同的方式进行响应,例如 User: Edwin is my name. User: I am Edwin. User: Edwin. 我试图依靠单词之间的依赖关系,但结果效果不佳。 关于可以使用哪种技术来解决此问题的任何想法? [更新] 我使用命名实体识别以及部分语音标记器和解析器进行了测试。我发现大多数模型都是以某种方式训练的,即人名或专有名词的实体的第一个字符必须为大写。这对于普通文档可能是正确的,但是对于聊天机器人则无关紧要。例如 User: my name is edwin. 大多数NER未能意识到这一点。
11 python  nlp 

2
无法找出卷积神经网络中的线性嵌入层?
我从“学习具有深度排名的细粒度图像相似性”一文中获得了网络体系结构,但是我无法弄清楚如何使用线性嵌入层合并三个并行网络的输出。本文中有关此层的唯一信息是 最后,我们将三个部分的嵌入标准化,然后将它们与线性嵌入层组合。嵌入的尺寸为4096。 谁能帮助我弄清楚作者在谈论这一层时的确切含义?

6
机器学习中模型的定义
这个定义不太适用,因为我们并不总是假设基础分布。那么,真正的模型是什么?具有指定超参数的GBM可以视为模型吗?模型是规则的集合吗?

1
如何在Keras中定义自定义效果指标?
我尝试根据以下方法在Keras(Tensorflow后端)中定义自定义指标功能(F1-Score): def f1_score(tags, predicted): tags = set(tags) predicted = set(predicted) tp = len(tags & predicted) fp = len(predicted) - tp fn = len(tags) - tp if tp>0: precision=float(tp)/(tp+fp) recall=float(tp)/(tp+fn) return 2*((precision*recall)/(precision+recall)) else: return 0 到目前为止,还不错,但是当我尝试将其应用于模型编译时: model1.compile(loss="binary_crossentropy", optimizer=Adam(), metrics=[f1_score]) 它给出了错误: TypeError Traceback (most recent call last) <ipython-input-85-4eca4def003f> in <module>() 5 model1.add(Dense(output_dim=10, …


2
使用卷积神经网络进行文档分类
我正在尝试使用CNN(卷积神经网络)对文档进行分类。短文本/句子的CNN已在许多论文中进行了研究。但是,似乎没有论文将CNN用于长文本或文档。 我的问题是文档中的功能太多。在我的数据集中,每个文档都有1000多个标记/单词。为了将每个示例提供给CNN,我使用word2vec或手套将每个文档转换成矩阵,从而得到一个大矩阵。对于每个矩阵,高度是文档的长度,宽度是单词嵌入矢量的大小。我的数据集有9000多个示例,并且训练网络需要花费大量时间(整整一周),这使得难以微调参数。 另一种特征提取方法是对每个单词使用一个热向量,但这会创建非常稀疏的矩阵。当然,这种方法比以前的方法花费更多的时间进行训练。 那么,有没有一种在不创建大型输入矩阵的情况下提取特征的更好方法? 以及如何处理可变长度的文件?当前,我添加了特殊字符串以使文档具有相同的长度,但是我认为这不是一个很好的解决方案。

2
“意图识别器”如何工作?
亚马逊的Alexa,Nuance的Mix和Facebook的Wit.ai都使用类似的系统来指定如何将文本命令转换为意图,即计算机可以理解的东西。我不确定这的“正式”名称是什么,但我称其为“意图识别”。基本上是从“请将灯光设置为50%亮度”到的一种方法lights.setBrightness(0.50)。 指定方法的方式是,让开发人员提供与意图相关的“样本话语”列表,并可选地标记“实体”(基本参数)的位置。这是Wit.ai的示例: 我的问题是:这些系统如何工作?由于它们都非常相似,因此我认为它们都有一些开创性的成果。有谁知道它是什么? 有趣的是,Houndify使用了一个更类似于正则表达式的系统["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]。我认为这已集成到他们语音识别系统的波束搜索中,而Alexa,Wit.ai和Mix似乎具有单独的“语音”->“文本”和“文本-> Intent”系统。 编辑:我找到了一个起点- 一种通过非正式语音命令进行人机交互的机制。它使用一种称为“潜在语义分析”的方法来比较话语。我将继续阅读。至少它为我提供了引文网络的起点。 编辑2: LSA本质上是比较文本每一段中使用的单词(单词袋)。我看不到它在这种情况下如何很好地工作,因为它完全失去了单词顺序。尽管对于这些类型的命令来说,单词顺序并不重要。 编辑3: 隐藏主题马尔可夫模型看起来可能很有趣。

1
如何确定字符序列是英文单词还是杂音
您将尝试从单词列表中提取什么样的功能以供将来预测,是现有单词还是仅是字符混乱? 我在那儿找到了对任务的描述。 您必须编写一个程序来回答给定单词是否为英语。这很容易-您只需要在词典中查找单词-但有一个重要限制:您的程序不得大于64 KiB。 因此,我认为可以使用逻辑回归来解决问题。我没有大量的数据挖掘经验,但是这项任务对我来说很有趣。 谢谢。


1
在小文本文件上应用word2vec
我是word2vec的新手,请耐心等待。我有一组文本文件,每个文件包含一组1000-3000之间的推文。我选择了一个通用关键字(“ kw1”),并希望使用word2vec查找与“ kw1”语义相关的术语。例如,如果关键字是“ apple”,我希望基于输入文件看到相关的术语,例如“ ipad”,“ os”,“ mac”...。因此,对于每个输入文件,这组与“ kw1”相关的术语会有所不同,因为word2vec将在单个文件上进行训练(例如,5个输入文件,在每个文件上运行word2vec 5次)。 我的目标是在给定公共关键字(“ kw1”)的情况下,为每个输入文件查找相关术语集,该关键字将用于其他目的。 我的问题/疑问是: 将word2vec用于此类任务是否有意义?考虑到输入文件的大小,使用它在技术上是否正确? 我已经从code.google.com下载了代码:https : //code.google.com/p/word2vec/,并进行了如下尝试: time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50 ./distance vectors.bin 从结果中可以看出,当我使用“距离”工具获取与“ kw1”相关的术语时,收到了很多嘈杂的术语(停用词)。因此,我确实删除了停用词和其他嘈杂的用语,例如用户提及。但是我还没有看到word2vec需要清除输入数据的地方...? 您如何选择正确的参数?当我更改“ -window”,“-iter”等参数时,我看到的结果(运行距离工具)有很大不同。我应该使用哪种技术来找到参数的正确值。(由于我将按比例放大数据集,因此对我来说,人工尝试和错误是不可能的)。

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.