数据挖掘算法简介 (5/10) - 逻辑回归

5.   逻辑回归(Microsoft Logistic Regression Algorithm

a.    目的:

逻辑回归主要用于对二进制的结果建模。

这里先介绍一下广义的 逻辑回归(logistic regression)是怎么回事。Logistic回归其实与多重线性回归有很多相同之处,最大的区别就在于他们的因变量不同,其它的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归,如果是poisson分布,就是poisson回归等等。只要注意区分它们的因变量就可以了。Logistic回归的因变量除了可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。

Microsoft的逻辑回归算法是 Microsoft 神经网络算法的一种变体。那什么是Microsoft 神经网络算法呢?下面有一节会较详细地介绍。简单来说,Microsoft 神经网络算法组合输入属性的每个可能状态和可预测属性的每个可能状态,并使用定型数据计算概率。 之后,可以根据输入属性,将这些概率用于分类或回归,并预测被预测属性的结果。Microsoft 神经网络算法创建由多至三层神经元组成的网络。 这些层分别是输入层、隐藏层和输出层。逻辑回归作为神经网络算法的一种特例,它只有输入和输出层,而无隐藏层。虽然此算法与神经网络算法有许多共性,但逻辑回归算法更易于定型。逻辑回归算法的一大优势是,该算法可采用任何类型的输入,因此非常灵活。

b.   原理

逻辑回归用于确定多个因素对一对结果的影响。 Microsoft 逻辑回归使用修改后的神经网络,对输入和输出之间的关系进行建模。 测量每个输入对输出的影响,并权衡不同输入在完成的模型中的作用。 名称逻辑回归来自这样一个事实:使用逻辑转换(即对数转换)压缩数据曲线,以使极值的影响减至最小。

c.    方法

Microsoft 逻辑回归算法是 Microsoft 神经网络算法的一种变体,其中,HIDDEN_NODE_RATIO 参数设置为 0 这样设置以后,所创建的神经网络模型就不包含隐藏层,因此等效于逻辑回归。

假定可预测列仅包含两个状态,但您仍希望进行回归分析,以将输入列与可预测列包含特定状态的概率关联起来。 下图展示了将可预测列的状态设置为 1 0,计算该列包含特定状态的概率以及对输入变量执行线性回归时将获得的结果。

未能使用线性回归正确建模的数据

X 轴表示输入列的值。 Y 轴表示可预测列为某状态或其他状态的概率。 此时的问题是,线性回归无法将该列限制在 0 1 之间,即使它们分别是该列的最小值和最大值。 解决此问题的一种方法是进行逻辑回归。 逻辑回归将创建一条包含最大和最小约束的 S 形曲线,而不是一条直线。 下图展示的是对上例中的数据进行逻辑回归后得到的结果。

使用逻辑回归建模的数据

请注意这条曲线是如何始终未能高于 1、低于 0 的。 您可以使用逻辑回归来说明哪些输入列对于确定可预测列的状态很重要.

d.   数据要求

一个逻辑回归模型必须包含一个键列、输入列和至少一个可预测列。

单键列 - 每个模型都必须包含一个用于唯一标识每条记录的数值列或文本列。 不允许复合键。

输入列 - 每个模型都必须至少包含一个输入列,该输入列包含用作分析因素的值。 可以根据需要拥有任意多的输入列,但是具体取决于每个列中值的数量,添加额外列会增加定型模型所需的时间。

至少有一个可预测列 - 模型必须至少包含一个可预测列。注意,该预测列不但可以是DiscreteDiscretized类还可以是连续数值。 还可以将可预测列的值视为模型的输入,或者将其指定为仅用于预测。 不过,嵌套表不允许用于可预测列,但是可作为输入使用。

e.    查看模型

您可以使用 Microsoft 神经网络查看器或 Microsoft 一般内容树查看器浏览模型。

使用 Microsoft 神经网络查看器查看模型时,Analysis Services 显示影响特定结果的因素,这些因素按重要性进行排序。 您可以选择一个属性以及要比较的值。

f.     预测

定型模型之后,您可以针对模型内容创建查询以获取回归系数和其他详细信息,还可以使用模型进行预测。

g.    自定义参数与性能优化

                                         i.     设置算法参数

1.    HOLDOUT_PERCENTAGE

指定在用于计算维持错误的定型数据中事例所占的百分比。 在对挖掘模型定型时,HOLDOUT_PERCENTAGE 被用作停止条件的一部分。默认值为 30

2.    HOLDOUT_SEED

指定一个数字,以在随机确定维持数据时作为伪随机生成器的种子。 如果将 HOLDOUT_SEED 设置为 0,则算法将根据挖掘模型的名称生成种子,以保证模型内容在重新处理的过程中保持不变。默认值为 0

3.    MAXIMUM_INPUT_ATTRIBUTES

定义算法在调用功能选择之前可以处理的输入属性数。 如果将此值设置为 0,则表示关闭功能选择。默认值为 255

4.    MAXIMUM_OUTPUT_ATTRIBUTES

定义算法在调用功能选择之前可以处理的输出属性数。 如果将此值设置为 0,则表示关闭功能选择。默认值为 255

5.    MAXIMUM_STATES

指定算法支持的最大属性状态数。 如果属性的状态数大于该最大状态数,算法将使用该属性的最常见状态,同时忽略剩余状态。 默认值为 100

6.    SAMPLE_SIZE

指定用来给模型定型的事例数。 算法提供程序将使用该数字或不包含在由 HOLDOUT_PERCENTAGE 参数指定的维持百分比中的总的事例百分比,取两者中较小值。

换言之,如果将 HOLDOUT_PERCENTAGE 设置为 30,则算法将选择使用该参数的值与事例总数百分之七十值两者中的较小者。默认值为 10000

                                       ii.     建模标志

支持以下建模标志与 Microsoft 逻辑回归算法配合使用。

1.    NOT NULL

指示该列不能包含 Null 如果 Analysis Services 在模型定型过程中遇到 Null 值,则会导致错误。适用于挖掘结构列。

2.    MODEL_EXISTENCE_ONLY

表示列将被视为具有两个可能状态:Missing  Existing Null 表示缺失值。适用于挖掘模型列。

h.   应用

Logistic回归最常用的三个用途是:

一是寻找关键因素 - 例如使用人口统计信息预测相关结果,如某种特定疾病的风险;或者浏览并权衡导致结果的因素。 例如,查找影响客户反复光顾某一商店的因素; 也可以对文档、电子邮件或具有多个属性的其他对象进行分类。另一个例子:设想这样一组人员,他们共享类似的人口统计信息并从 Adventure Works 公司购买产品。 通过对与特定结果(如购买目标产品)相关的数据进行建模,您可以查看人口统计信息对客户购买目标产品的可能性的影响。

二是预测 - 如果已经建立了logistic回归模型,则可以根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大。

三是判别 - 实际上跟预测有些类似,也是根据logistic模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。

实际中的logistic回归用途是极为广泛的,logistic回归几乎已经成了流行病学和医学中最常用的分析方法,因为它与多重线性回归相比有很多的优势。