社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

值得思考,机器学习模型做出的决策是你想要的吗?

生信宝典 • 4 年前 • 589 次点击  

分享一篇理论知识,对我们理解和应用模型会有帮助!

区分预测模型和分类模型是很重要的一个事情。在很多决策应用中,分类模型代表着一个“不成熟”的决定,它组合了预测模型和决策制定,但剥夺了决策者对错误决定带来的损失的控制权 (如随机森林中的服从大多数原则,51棵树预测结果为患病49棵树预测结果为正常91棵树预测结果为患病``9棵树预测结果为正常返回的结果都是患病)。如果采样标准或损失/收益规 (在预测疾病时,更看重敏感性而非假阳性)则发生改变,分类模型也需要相应的改变。而预测模型是与决策分开的,可用于任何决策制定。

分类模型适用于频繁发生的非随机性(或者说确定性)的结果,而不适用于两个个体有同样的输入而输出却不同的情况。对于后者,模型的趋势(比如概率)则是关键因素。

分类模型的适用条件:

  1. 分类结果很不同

  2. 分类变量有很强的分类能力,可以在接近概率为1的情况下预测出其中一个分类结果

机器学习这一领域在某种程度上独立于统计学领域。因此,机器学习专家往往不强调概率思维。概率思维和理解不确定性和波动性 (variation)是统计学的重要特征。顺便说一下,关于概率思维最好的书之一是Nate SilverThe Signal and The Noise: Why So Many Predictions Fail But Some Don’t。在医学领域,David Spiegelhalter的《患者管理和临床试验中的概率预测》(Probability Prediction In Patient Management and Clinical Trials)是一篇经典论文。

摒除概率思维后,机器学习提倡频繁使用分类器,而不是使用风险预测模型。情况已经变得有些极端:许多机器学习专家实际上把逻辑回归 (logistic regression)列为一种分类方法(其实不是)。我们现在需要认真思考:分类真正意味着什么。分类实际上是一种决策。最佳决策需要充分利用现有数据来进行预测,并通过最小化损失函数/最大化效用函数来做出决策。不同的终端用户有不同的损失函数/效用函数 (在预测疾病时,如更看重敏感性,还是假阳性),进而有不同的决策风险阈值。分类模型则假设每个用户都有相同的效用函数,就是分类系统所用的效用函数。

分类通常是一种被迫的选择。比如在市场营销中,广告预算是固定的,分析师通常还没有笨到直接使用模型把潜在客户归类为需要忽略的人或需要花费资源进行投放的人。相反,他们对概率进行建模,根据潜在客户购买产品的估计概率对其进行排序绘制一个Lift曲线。为了获得“最大的效果”,营销人员会选择n个可能性最高的客户作为目标进行广告投放。这是合理的,而且不需要分类。

模型使用者(如医生)经常提出的一个观点是,最终他们需要做出二元决策 (binary decision),因此需要进行二元分类。而事实并非如此。首先,通常情况下,当预测出患病的概率是中等时,最好的决定是不做决定;去收集更多数据。在许多其他情况下,决定是可撤销的,例如,医生开始给病人低剂量的药物,然后决定是否改变剂量或更换药物。在外科治疗中,动手术的决定是不可改变的,但何时动手术取决于外科医生和病人,并取决于疾病的严重程度和症状。无论如何,如果需要进行二元分类,必须在所有情况都考虑到时,而非在数据建模时。

什么时候强制做出选择是合适的?我认为需要考虑这个问题是机械的 (确定性的)还是随机/概率的。机器学习的提倡者经常想把为前者 (机械性问题)所做的方法应用到存在生物变异、抽样变化和测量误差的问题上。而实际上最好是将分类模型仅仅应用于高信噪比的情况下,比如有一个已知的黄金标准,可以重复实验,每次得到几乎相同的结果。模式识别就是一个例子:

  • 视觉、声音、化学成分等。

    如果创建一个光学字符识别算法 (OCR),该算法可以被任意数量的样品进行训练并尝试把图像分类为字母A, B,……等。

    这样一个分类器的用户可能没有时间来考虑每个分类是否足够可信。

    但这种分类器信噪比是极高的。

    此外,每个字母都有一个“正确”答案。

    这种情况主要是机械性或非随机性的结果。

    而预测死亡或疾病时,两个症状相同的患者却很容易有不同的疾病发展方向。

当预测概率居中时,或者当结果有固有的随机性时,就需要进行概率估计。概率的一个优点是,它们是自己的错误的度量。如果预测疾病发生的概率是0.1,而当前的决定是不进行治疗;这个决定犯错的概率也是0.1。而如果发病概率是0.4,这会促使医生进行另一次实验检测或或采用活检等其它检测方式。当信噪比较小时,分类模型通常不是一个好的应用方式; 而是需要对趋势也就是概率进行建模。

美国气象局一直用概率来预测降雨。我不想得到一个分类结论“今天要下雨”。而是想着是否带伞应该由我来根据下雨的概率权衡后作出决定。

无论是从事信用风险评分、天气预报、气候预测、市场营销、病人疾病的诊断,还是评估病人的预后,我都不想使用分类的方法。而是希望获得带有可信区间或置信区间的风险估计得分。我的观点是,机器学习分类器最好用于机械的/确定性的高信噪比的数据或应用场景中,而概率模型应该用于大多数其他情况。

这与许多分析师忽略的一个微妙问题有关。复杂的机器学习算法可以通过进行高阶交互等处理问题的复杂性,但在信噪比较低时需要大量的数据。基于可加性假设的回归模型(当它们是正确的时,它们在绝大多数情况都是正确的)可以在没有大量数据集的情况下产生准确的概率模型。当被预测的结果变量有两个以上的水平时,一个回归模型可以获得各种感兴趣的量,如预测均值、分位数、超标概率 (exceedance probabilities)、瞬时危险率 (instantaneous hazard rates)等。

分类模型的一个特殊问题也反映了这样一个重要概念。使用机器学习分类模型的用户都知道,一个高度不平衡的样本训练集会获得一个奇怪的二元分类器。例如,如果训练集中有1000名患者和100万名非患者,那么最佳分类器可能将每个人都划分为非患者;这样获得的正确率是0.999。出于这个原因,对数据进行子集抽样的奇怪做法被用来平衡训练集中样本的频率,从而产生看起来合理的分类器 (回归模型的用户永远不会为了得到答案而排除好的数据)。然后,他们必须以某种不明确的方式构造分类器,以弥补训练集中样本组成的偏差。很简单,一个基于发病率为1/2的情况训练的模型将不能应用于发病率为1/1000的新数据的预测。分类器必须在新的样本上重新训练,检测到的模式可能会发生很大的变化。另一方面,Logistic回归巧妙地处理了这种情况,要么(1)将导致患病率如此之低的变量作为预测变量,要么(2)只需要重新校准另一个发病率高的数据集的截距。分类器对发病率的极端依赖可能足以使一些研究人员总是使用概率估计,如logistic回归进行代替。人们甚至可以说,当结果变量的变化很小时,根本不应该使用分类器,而应该只对概率建模。

选择一种方法的关键因素之一是它应该具有正确统计属性的敏感的准确性评分规则。机器分类的专家很少有了解这一极其重要问题的背景,选择一个不正确的准确性得分,如正确分类的比例,将导致一个虚假的模型。这里对此进行了详细讨论。

References

  1. https://www.fharrell.com/post/classification/


机器学习系列教程


从随机森林开始,一步步理解决策树、随机森林、ROC/AUC、数据集、交叉验证的概念和实践。


文字能说清的用文字、图片能展示的用、描述不清的用公式、公式还不清楚的写个简单代码,一步步理清各个环节和概念。


再到成熟代码应用、模型调参、模型比较、模型评估,学习整个机器学习需要用到的知识和技能。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/115361
 
589 次点击