假设我们有一些数据点可以用作训练集。每行由4个列(特征)组成,这些列取布尔值。第5列表示类别,它也取布尔值。以下是一个例子(几乎是随机的):
1,1,1,0,10,1,1,0,11,1,0,0,10,0,0,0,01,0,0,1,00,0,0,0,0
现在,我想构建一个模型,使得对于任何给定的输入(新行),系统不返回类别本身(就像常规分类问题的情况),而是返回该特定输入属于类别0或类别1的概率。我该怎么做?此外,我如何生成与该计算相关的置信区间或错误率?
回答:
并非所有分类算法都会返回概率,因为并非所有算法都有潜在的概率模型。例如,分类树只是一组规则,你可以遵循这些规则将每个新输入分配到特定类别。
一个具有潜在概率模型的分类算法的例子是逻辑回归。在这个算法中,特定输入x
属于某个类的概率是
prob = 1 / (1 + exp( -theta * x ))
其中theta是一个与x
维数相同的系数向量。通常,要从概率转化为分类,你只需设定一个阈值,例如
if prob < 0.5 return 0;else return 1;end
其他分类算法可能有概率解释,例如随机森林本质上是一个具有多个分类树的投票算法。如果80%的树投票支持类别1,而20%的树投票支持类别2,那么你可以输出80%的概率属于类别1。但这是模型工作方式的一个副作用,而不是一个明确的潜在概率模型。