我正在处理患者数据。我想根据一组症状预测前N种疾病
这是我的数据集的一个样本:我总共有大约1200个独特的症状和大约200个独特的诊断
ID Symptom combination Diagnosis
Patient1: fever, loss of appetite, cold Flu
Patient2: hair loss, blood pressure Thyroid
Patient3: hair loss, blood pressure Flu
Patient4: throat pain, joint pain Viral Fever
..
..
Patient30000: vomiting, nausea Diarrohea
我计划使用此数据集,使用症状列为每行患者数据使用Word2vec生成单词向量。生成向量后,我想构建一个分类器,每行中的向量是我的自变量,诊断是目标分类变量
我应该取向量的平均值来生成word2vec生成的特征向量吗?若有,有何澄清?
我建议您不要使用word2vec,而是使用二进制矢量器。您将得到一个sparce二进制矩阵作为您的数据。然后应用任何多类分类。这两个都可以从scikit学习中获得
目前还不清楚向量应该如何增加模型的威力。如果word2vec模型是在一个不相关的数据集上训练的,它们甚至可能适得其反。从该数据集中学习到的闭合向量实际上可能代表目标的对比症状
您可以将症状的一组词向量平均起来,以获得相同维度的单个特征向量。(如果每个词向量为100d,则将它们平均得到一个100d摘要向量。)
但这样的平均是相当粗糙的,并且有一定的风险稀释平均中每个症状的信息
(作为一个简化的、程式化的例子,假设一名护士在晚上9点测量了一名患者的体温,发现它是102.6°F。然后,在早上7点,又发现它是94.6°F。一名医生问,“我们的患者体温如何?”,护士说平均值是“98.6°F”。“哇,”医生说,“很少有人在正常的健康体温下如此准时。下一个病人!”他隐藏了重要的信息:病人同时有发烧和危险的体温过低。)
听起来你有一个可控的症状词汇表,只有一些已知的、有上限的、数量不太多的症状标记:大约1200个
在这种情况下,将这些转化为每个症状存在/不存在的分类向量可能比基于word2vec的方法效果要好得多。可能您有100个不同的症状或10000个不同的症状。无论哪种方式,您都可以将它们转化为1和0的大向量,按顺序表示每个可能的症状,以及大量的分类ers将很好地处理这些输入
如果将症状列表视为文字,文字的简单“文字袋”表示本质上就是这种分类表示:1200维的“一个热点”向量
除非这是一个要求你使用word2vec的学术练习,否则这不是一个好的开始,也可能不是最佳解决方案的一部分。要训练好的词向量,你需要比你拥有的更多的数据。(要重复使用其他地方的词向量,它们应该与你的领域很好地匹配。)
如果你有数万到数十万个术语,以及它们各自使用的许多上下文示例,在一个密集的共享空间中描绘其含义的细微变化,那么单词向量最有可能发挥作用。对于word2vec来说,只有30000个“文本”,每个标记约3-5个,只有约1200个唯一标记,相当小
(我在我的报告中提出了类似的观点。)
一旦你将每一行转化为一个特征向量——不管是通过平均症状词向量,还是更好地创建一个词包表示法——你可以而且应该尝试许多不同的分类器,看看哪种分类器效果最好
许多是彼此的替代品,根据数据的大小,在一个循环中对许多进行测试可能需要不到一个小时或几小时的时间
如果完全不知道从哪里开始,那么this ^{} graphical guide 左上角“分类器”区域中列出的任何内容都值得尝试:
如果你想考虑一个更广泛的可能性,并得到一个模糊的直觉的想法,哪一个可以在下面的高维数据中最好地发现某些类型的“形状”,你可以看看所有这些在{a4}中演示的,这些图形表示它们如何处理嘈杂的2D分类挑战。(而不是你的1200d挑战赛):
相关问题 更多 >
编程相关推荐