我有一个PHP / MySQL应用程序,可以存储症状和适当的药物。我应该使用什么机器学习算法来预测任何症状的药物。另外,训练集的格式是什么?
答案 0 :(得分:2)
在ML中没有针对这种情况的“最佳解决方案”,这种方法/数据几乎总能满足我的需求吗?因此,尝试使用简单的ML技术(例如决策树),如果它不起作用,尝试更复杂的东西。如果不起作用,请尝试更改数据......
答案 1 :(得分:2)
你的数据最终会像这样:
row_id symptom_x symptom_y degree_of_symptom_z ... best_drug
1 false true 0.8 drug_x
2 true null 0.0 drug_q
您将使用统计分类器根据症状学习最佳药物。然后你会喂它新的症状,它会表明最好的药物。
可能存在许多可用的症状,因此算法需要能够处理许多列。
我将从支持向量机开始,并尝试Logistic回归。
查看RapidMiner。
答案 2 :(得分:1)
我认为您最好的办法是确定一个可以很好地集成到您环境中的可靠库。
一般来说:
虽然我最近没有使用过,但我相信如果NN不够好,SVM仍然是你最好的选择。这不是时髦的新事物,但如果没有太多的调整,它们通常会很好。但是,使用经过良好调整的弱算法(即一个具有您理解的文档的算法和一个可以尝试大量超帧参数的实现)几乎总是比一个调整不佳的强算法更好。当然,如果你真的不知道你在做什么。
换句话说:保持简单,并确保在特征选择阶段使用许多常识。
答案 3 :(得分:0)
看到你可能会有很多这个问题的未知变量,我建议使用贝叶斯网络来接近它。
根据该简要描述以及之前使用医疗诊断软件(如WebMD等)的经验,这只是猜测。
贝叶斯网络在处理大量未知变量时往往具有比大多数其他ML算法更高的“精度”(例如,神经网络往往需要更准确的数据才能进行准确的回归 - 因此可以提出准确的建议)。
您需要对过度拟合预防,平滑和其他可能遇到的问题进行一些研究。
同样,这不是一个明确的答案。您没有提供任何详细数据供我根据假设进行猜测。在决定之前,我强烈建议进行更深入的研究。
答案 4 :(得分:0)
您需要自己尝试数百种算法,预处理等。
任何都没有通用的“最佳算法”。
特别是对于数据驱动的东西,当其他人没有你的数据时。
所以,尝试了很多事情,看看哪些适合你。因为对他人有用的东西不一定对你有用,反之亦然。
此外,必须获得经验和专业知识才能取得好成绩。
答案 5 :(得分:0)
这是一个分类问题:您已标记了要用于训练模型的数据。
由于您将遇到一些错误,您应该决定是否最小化您的误报或假阴性结果并平衡您的算法以实现这一目标。
你可以使用一个简单的决定三,看看表现如何,使用像医生的一些真实处方一样的测试集。
请注意,您的处方可能需要多种药物或不需要药物。
您应该考虑的一个问题是,如果您服用某些药物,则不能服用其他药物,并且患者可能会有一些过敏症状。 出于这个原因,我建议你看一下http://en.wikipedia.org/wiki/Association_rule_learning和Prolog。
答案 6 :(得分:0)
尝试K个最近的邻居,我认为这是分类问题。 您的处方可能需要一种或多种药物,而另一个问题是该机器可能并不总是准确的,因为它将有机会确定未经培训的药物。您需要一个非常详细的数据集。
以下示例是基于ml-idea(机器学习思想)的Github- ML-Idea
尽管没有完善的算法,但只要做好数据计数,就可以正确准备数据。
`
//symptoms
//1 = 'Symptom 1';
//2 = 'Symptom 2';
//3 = 'Symptom 3';
//4 = 'Symptom 4';
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['drug a', 'drug A', 'drug x', 'drug x', 'drug a', 'drug x'];
$classifier = new KNearestNeighbors(6, true);
$classifier->train($samples, $labels);
$data = $classifier->predict([2, 1]);
echo "<pre>";
print_r($data);
echo "</pre>";
`