适用于:
SQL Server 2019 及更早版本的 Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
重要
SQL Server 2017 Analysis Services 中弃用了数据挖掘,现已在 SQL Server 2022 Analysis Services 中停止使用。 文档不会更新为已弃用和已停用的功能。 若要了解详细信息,请参阅 Analysis Services 向后兼容性。
Microsoft逻辑回归算法是Microsoft神经网络算法的变体,其中 HIDDEN_NODE_RATIO 参数设置为 0。 此设置将创建不包含隐藏层的神经网络模型,因此相当于逻辑回归。
Microsoft逻辑回归算法的实现
假设可预测列仅包含两种状态,但仍希望执行回归分析,将输入列与可预测列包含特定状态的概率相关。 下图说明了如果将 1 和 0 分配给可预测列的状态,您将获得的结果,以及计算该列包含特定状态的概率,并针对输入变量执行线性回归。
x 轴包含输入列的值。 y 轴包含可预测列将是一种或另一种状态的概率。 问题在于,线性回归不会限制列介于 0 和 1 之间,即使这些是列的最大值和最小值。 解决此问题的一种方法是执行逻辑回归。 逻辑回归分析不会创建直线,而是创建一条包含最大值和最小约束的“S”形状曲线。 例如,下图演示了对上一示例所用的相同数据执行逻辑回归时将实现的结果。
,
请注意曲线如何从不高于 1 或低于 0。 可以使用逻辑回归来描述哪些输入列在确定可预测列的状态方面非常重要。
特征选择
所有 Analysis Services 数据挖掘算法都自动使用功能选择来改进分析和减少处理负载。 用于逻辑回归模型中特征选择的方法取决于特性的数据类型。 由于逻辑回归基于Microsoft神经网络算法,因此它使用应用于神经网络的特征选择方法的子集。 有关详细信息,请参阅功能选择(数据挖掘)。
评分输入
在神经网络模型或逻辑回归模型的上下文中评分意味着将数据中存在的值转换为一组使用相同刻度的值的过程,因此可以相互比较。 例如,假设收入的输入范围为 0 到 100,000,而 [儿童数] 的输入范围为 0 到 5。 此转换过程允许你比较每个输入的重要性,而不考虑值的差异。
对于训练集中显示的每个状态,模型将生成一个输入。 对于离散输入或离散化输入,如果缺少状态至少出现在训练集中一次,则会创建一个附加输入来表示缺失状态。 对于连续输入,最多创建两个输入节点:一个用于缺失值,如果训练数据中存在,则为所有现有值或非 null 值创建一个输入。 每个输入都使用 z 分数规范化方法 (x - μ)\StdDev缩放为数字格式。
在 z 分数规范化期间,平均值(μ)和标准偏差是在完整的训练集中获得的。
连续值
值存在: (X - μ)/σ (X 是正在编码的实际值)
值缺失: - μ/σ (负μ除以σ)
离散值
μ = p (状态的先前概率)
StdDev = sqrt(p\(1-p))
值存在: \(1 - μ)/σ (1 减去 μ 再除以 σ)
值缺席:(- μ)/σ (负μ除以σ)
了解逻辑回归系数
统计文献中有多种方法用于执行逻辑回归,但所有方法的一个重要部分是评估模型的拟合度。 提出了各种拟合优度统计,其中包括赔率比和协变量模式。 有关如何度量模型拟合的讨论超出了本主题的范围;但是,可以检索模型中系数的值,并使用这些系数来设计自己的拟合度量值。
注释
作为逻辑回归模型的一部分创建的系数不表示奇数比率,不应解释为此类系数。
模型图中每个节点的系数表示该节点的输入的加权总和。 在逻辑回归模型中,隐藏层为空;因此,只有一组系数存储在输出节点中。 可以使用以下查询检索系数的值:
SELECT FLATTENED [NODE_UNIQUE NAME],
(SELECT ATTRIBUTE_NAME< ATTRIBUTE_VALUE
FROM NODE_DISTRIBUTION) AS t
FROM <model name>.CONTENT
WHERE NODE_TYPE = 23
对于每个输出值,此查询返回指向相关输入节点的系数和 ID。 它还返回包含输出值和截距的行。 每个输入 X 都有自己的系数(Ci),但嵌套表还包含一个“自由”系数(Co),根据以下公式计算:
F(X) = X1*C1 + X2*C2 + ... +Xn*Cn + X0
激活: exp(F(X)) / (1 + exp(F(X)) )
有关详细信息,请参阅 逻辑回归模型查询示例。
自定义逻辑回归算法
Microsoft逻辑回归算法支持影响生成的挖掘模型的行为、性能和准确性的多个参数。 还可以通过在用作输入的列上设置建模标志来修改模型的行为。
设置算法参数
下表介绍了可用于Microsoft逻辑回归算法的参数。
保留百分比
指定用于计算保留误差的训练数据中的事例百分比。 在训练挖掘模型时,HOLDOUT_PERCENTAGE被用作停止条件的一部分。
默认值为 30。
HOLDOUT_SEED
指定一个数字,用于在随机确定保留数据时对伪随机生成器进行种子设定。 如果HOLDOUT_SEED设置为 0,则算法会根据挖掘模型的名称生成种子,以确保在重新处理期间模型内容保持不变。
默认值为 0。
MAXIMUM_INPUT_ATTRIBUTES
定义算法在调用功能选择之前可以处理的输入属性数。 将此值设置为 0 以关闭功能选择。
默认值为 255。
MAXIMUM_OUTPUT_ATTRIBUTES
定义算法在调用功能选择之前可以处理的输出属性数。 将此值设置为 0 以关闭功能选择。
默认值为 255。
MAXIMUM_STATES
指定算法支持的最大属性状态数。 如果属性的状态数大于最大状态数,则算法使用属性的最常用状态并忽略剩余状态。
默认值为 100。
SAMPLE_SIZE
指定要用于训练模型的事例数。 算法提供程序使用此数字或未包含在由HOLDOUT_PERCENTAGE参数指定的保留百分比(以较小的值为准)的事例总数的百分比。
换句话说,如果HOLDOUT_PERCENTAGE设置为 30,则算法将使用此参数的值,或等于事例总数的 70% 的值(以较小者为准)。
默认值为 10000。
建模标志
支持以下建模标志与Microsoft逻辑回归算法一起使用。
不可为空
指示该列不能包含 null。 如果 Analysis Services 在模型训练期间遇到 null,则会出现错误。
适用于数据挖掘结构列。
MODEL_EXISTENCE_ONLY
表示将列视为具有两种可能状态: Missing 和 Existing。 null 是缺失值。
适用于挖掘模型列。
要求
逻辑回归模型必须包含键列、输入列和至少一个可预测列。
输入列和可预测列
Microsoft逻辑回归算法支持下表中列出的特定输入列内容类型、可预测列内容类型和建模标志。 有关在挖掘模型中使用内容类型的含义的详细信息,请参阅内容类型(数据挖掘)。
| 列 | 内容类型 |
|---|---|
| 输入属性 | 连续、离散、离散化、键、表 |
| 可预测属性 | 连续、离散、离散化 |
另请参阅
Microsoft逻辑回归算法
线性回归模型查询示例
逻辑回归模型的挖掘模型内容(Analysis Services - 数据挖掘)
Microsoft神经网络算法