作为某商品类目公司的市场分析师,你可能需要为二值目标变量(purchase)建立逻辑回归模型,判断某个顾客是否会产生购买。输入数据集存放在SAS安装文件的SAMPSIO.DMEXA1中,该数据集包含1966个顾客观测值信息。它包含31个区间变量输入和18个分类变量输用于构建模型。该逻辑回归模型产生的打分公式应用在新的数据集中,给那些可能产生购买的顾客发送邮件。
1 创建SAS EM工程
2 添加输入数据源节点
设置SAMPSIO.DMEXA1数据集作为输入数据源
选择变量选项卡,设置purchase为目标变量,变量amount的模型角色为rejected设置目标变量的层次,选择分类变量选项卡,目标变量的顺序值决定了事件级别。二值目标变量purchase拥有两种值0和1.,0表示NO,1表示YES。默认情况下,目标的顺序值设置为降序。在该实例中,主要判断顾客是否产生购买(event level = YES)。另外,还可以设置目标变量的目标信息。最后,关闭输入数据源节点。
3 添加数据划分节点
对输入数据集运用层次抽样方法创建训练和验证数据集。训练数据集被用来拟合回归模型,验证数据集用来评估回归模型。层次抽样技术保留购买者和非购买者在训练集和验证集中的初时比率。
首先,在流程图空间加入数据划分节点,打开数据划分节点,在划分选项卡,设置输入数据集的70%作为训练集,30%作为验证集,测试为0。针对类型输入变量STATECOD,选择层次抽样方法单选按钮。
激活层次选项卡,在status列中,设置STATECOD的状态为use。
关闭数据划分节点。
4 添加变量转换节点
打开转换节点,创建二值变量wealth,当income大于40000同时homeval大于100000,则其值为1,否则为0。
在主菜单中,选择工具,创建变量。
创建新的分类变量,对age进行分箱处理,划分为4个年龄组。右击age变量,选择transform,选择bucket菜单
右击frequent输入变量,查看分布
从图中可以发现,frequent的倾斜度很大,极值会影响参数的预测。
右击frequent,选择transform,选择方法log,进行转换。再查看导出变量的分布。
5 添加回归模型节点
在输入数据源节点,可以在区间变量和分类变量选项卡中,查看观测值的缺失值,在本案例中发现,没有缺失值。在实际中,若存在缺失值,可以加入replacement节点,进行处理。在回归模型中不能直接处理缺失值观测值。
打开回归模型节点,激活变量选项卡,在工具菜单选择interactive builder,选择recency变量,设置degree为2,点击多项式按钮,产生新的变量recency * recency;然后,选择recency和ntitle,点击cross,产生新变量recency * ntitle。
选择selection选项卡,方法选择stepwise。在Criteria中,设置Entry 和stay Significance Levels 为0.1
关闭回归节点,运行回归模型节点,查看结果。
回归窗口是对输入变量重要性的统计性运用图形的方式进行描述。该模型有9个参数,对应8个输入变量。点击柱状图,可以识别相应的参数。柱状图的高度表示参数的重要性,颜色表示效果增加的方向。红色表示增长的效果,即相应输入的值越大,则贡献越大。反之,则越小。
6 创建模型提升图
右击模型节点,选择模型管理器。在工具菜单,选择创建lift图。
7 部署模型
SAS EM有两种方式部署模型,打分代码模块和打分数据集。
打分代码模块用来在外部环境产生预测的目标值。它可以创建sas,c以及java等不同语言的代码。Sas代码可以直接嵌入在sas应用程序中产生预测。C语言形式的必须进过编译。
方式1:创建评价数据集
在流程图空间加入输入数据源节点,设置数据集角色为score,关闭输入数据源节点
添加SAS打分节点和SAS代码节点
打开SAS打分节点,设置如下
执行该节点
打开SAS代码节点,在数据选项卡中,选择score单选按钮
在export选项卡中,点击add,选择predict,得到数据集。然后,在program选项卡中输入下面的sas代码
data &_pre;
set &_score;
if p_purchaseyes lt 0.60 then delete;
run;
proc print data = &_pre;
var custid p_purchaseyes;
run;
从而得到预测结果。
通过ODBC将结果导入到数据库中
libname MYLIB ODBC dsn='dsn name';
proc datasets library=MYLIB;
delete MY_SCORE_NAME;
run;
quit;
data MYLIB.MY_SCORE_NAME;
set &_SCORE;
keep variable;
run;
方式2:创建打分代码模块
打开打分节点,选择Score code选项卡
联系客服