美文网首页Data Science For Business
4. 为数据寻找合适的模型

4. 为数据寻找合适的模型

作者: BT小芒 | 来源:发表于2020-09-08 15:38 被阅读0次

Fundamental concepts:基于数据寻找最佳的模型参数;选择数据挖掘的目标;目标函数(objective functions);损失函数(loss functions)。

Exemplary(典范的) techniques:线性回归(linear regression);逻辑回归(logistics regression);支持向量机(support-vector machines)。

参数学习(parameter learning)or参数化建模(parametric modeling):通过调整参数,让模型能够最大程度地匹配数据的过程,叫做参数学习或参数化建模。

Classification via Mathematical Functions(分类和数学函数)

图4-1 通过决策树将坐标区域(样本集)分割成了4个叶子节点

参考图4-1,创造同质性区域的目的是根据已知的数据来预测新数据会落在哪个区域当中,此时我们知道了他落在哪个区域后,我们便可根据区域和目标变量的关系来预测这条新数据的目标变量(target variable)是·还是+号。

通过以上方法我们可以预见到,可能会有更好的分割方法几乎完美地对不同目标变量的结果进行预测,而且这条线不一定要与坐标轴直接垂直,就想下图所示:

图4-3 通过一条直线对原样本空间进行分割示例

上图的方式叫做线性分类,他的本质是对已知的各变量进行加权后的求和,后续内容将对此做详细介绍。

Linear Discriminant Functions(线性判别函数)

通过一元二次函数来构造,可知上图4-3中的直线可表示为:

Age=(-1.5)\times Balance+60

如果元素x是在线的上方,我们可以预测他是+号结果,如果在下方我们可以预测他是·结果。

等式4-1,分类函数:

class(x)= + if  -1.0\times Age-1.5\times Balance+60 >0

class(x)= · if  -1.0\times Age-1.5\times Balance+60 \leq 0

这被称为线性辨别,并且这个函数是一个各个attributes的一个加权求和的结果。

在2元情况下,这个分割是一条线,在3元的情况下,这个分割就是通过一个分割面来实现的,在更高维度时,这个分割的形式就是一个超平面(hyperplane)。而我们所关注的,仅仅是目标变量如何能表示成各个变量的一个加权的求和结果。

由此可以看出,线性化模型是多变量监督学习分割的一个特殊形式,监督分割的目的依然是将样本集根据变量进行分割,而将数值化的变量引入的目的是创造一个他们之间关系的数学函数。

等式4-2,一般性线性模型:

f(x)=w_{0}+ w_{1}x_{1}+w_{2}x_{2}+\cdot \cdot \cdot

而4-1中的公式可被表示为如下形式:

f(x)=60-1.0\times Age-1.5\times Balance

我们只需要检查f(x)的正负性,就可以预测元素x的目标变量结果。

图4-5 将不同的样本分开可以找到N多条满足条件的线

像上图所示,我们应该怎样选到最合适的那一条线来当做模型呢?

Optimizing an Objective Function(寻找最佳的目标函数)

逻辑回归做的并不是回归的事情,逻辑回归实际上是用于给概率预测进行分类。

线性回归、逻辑回归、支持向量机都是在给数据建模时的相似工具,主要的区别是这三个技术方式每一个都使用一个不同的目标函数。

An Example of Mining a Linear Discriminant from Data(线性模型总结举例)

图4-7 一个数据集和两个线性分类线,用于区分鸢尾花属于Iris Setosa(山鸢尾,图中黑点)还是Iris Versicolor(变色鸢尾,图中圆圈),判别使用的变量为Sepal width(花萼宽度)和Petal width(花瓣宽度)

Linear Discriminant Functions for Scoring and Ranking Instances(用于样本评分和排行的判别函数)

有些时候我们不满足于对样本进行分类定性,而是要得出这个样本与这个类别的匹配程度有多少。

接下来我们将使用 逻辑回归 的方法来对一个用户churn概率的问题进行分析。

考虑公式4-2(f(x)=w_{0}+ w_{1}x_{1}+w_{2}x_{2}+\cdot \cdot \cdot )的情形,当x处在决策线(x轴)上时f(x)=0,当x靠近决策线时f(x)的值会很小,当x在+方向上离决策线很远时f(x)的值会很大,这样就通过f(x)的值得出了一个每个样本属于分类的匹配度的排名。

Support Vector Machines(SVM),Briefly(支持向量机简介)

简短来说,支持向量机就是线性判别;概括来说,SVMs是基于公式4-2(f(x)=w_{0}+ w_{1}x_{1}+w_{2}x_{2}+\cdot \cdot \cdot )中线性函数的各个特征来对样本进行分类的。

概念介绍:非线性支持向量机(nonlinear support vector machines),非线性支持向量机,将线性支持向量机的函数当做变量来使用,故可描述为:使用新变量(已有线性判别函数)组成的线性判别函数,对于最初的原始变量来说就是一个非线性判别函数,即非线性支持向量机。

支持向量机:相比于找到分割样本集的直线,支持向量机更偏好于找到能够满足分割样板的最宽的区间,如下图所示:

图4-8 图4-2中的样本点以及最大化分割距离(margin)的分类方法

在SVM的观点中,margin越宽越好,一旦找到最宽的margin值,那么这个线性margin面积的中线就是最佳的线性判别函数,上图中两条虚线中间的距离叫做margin,SVM的目标就是最大化margin,即最大化平行边线间的距离。

对于SVM机制的解释为,鉴于得到的是有限数据,更多未知数据可能比学习集数据更靠近中线,落在margin内,甚至落在中线的另一侧,所以为了减小这种可能性,需要采取最大化margin的判断思路,来得到margin中线这样的一条分割判定函数线。

另一个对SVM的理解是,如何应对落在判定函数线反侧的特异数据点,图4-2中的数据点没办法通过一条线进行完美的分割,当然绝大多数情况下的数据集都是没办法一条线完美分割的,这些降落在margin内或中线对侧的错误的点,这里引出一个概念损失函数。

Sidebar:loss functions(补充:损失函数)

“损失”在整个数据科学中都被广泛运用当做错误惩罚。损失函数决定基于模型的预测值多少惩罚应该被分配到每个样本上,在此处上下文中,是基于点到分界中线的距离。

有些损失函数比较常用,如图4-9中所示:

图4-9 展示了2个损失函数。x轴表示了到决策线的距离,y轴表示了一个不符模型的点(否定实例)造成的损失,损失值为点到分割中线的距离。(当是一个符合模型的元素时是对称的情况,即损失为负,不计损失)如果否定实例在分割线的负向一边,那么此处没有损失。如果它在正向一边(错误方向距离为正值),那么不同的损失函数会给定义不同的惩罚。

图4-9中,横轴是到分割中线的距离,预测错误的点具有正值的距离数值,而预测正确的点具有负值的距离数值(图中的选择是任意的)。

hinge loss(铰链损失函数)

支持向量机经常使用铰链损失函数,名字的由来就是函数图形看起来像是铰链。铰链损失函数中,当一个元素不在margin的错误一侧时不产生损失,仅当某个元素在分割线的错误一侧并且超出了margin的范围时,才会产生正值的损失值。同时,损失值会随着这个元素离分割线的距离增加而线性增加,因此,惩罚点数越多、点的距离和分割线越远,损失值就越大。

zero-one loss(0-1损失函数)

和名字的意思一致,正确的决策分配一个为0的损失,错误的决策分配一个为1的损失。

squared error(平方误差)

考虑一个不一样的损失计算方法,平方误差将损失正比于惩罚点到分割线的距离的平方。平方误差常用于数字值预测(回归),而不是分类预测。平方误差对错误结果可以产生显著的预测惩罚值(损失值)。在分类预测中,平方误差法会给落在错误侧的元素很大的惩罚值(损失值)。不幸的是,在分类预测当中,平方误差法也会给落在正确一侧的原处点很大的惩罚值(不就是平方结果没有正负号么……)。对于大多数商业问题,在分类或类别可能性预测的场景下使用平方误差法,会违背商业目标的原则。

Regression via Mathematical Functions(通过数学函数进行回归)

线性回归函数的函数式和线性判别函数的函数式一样,都是等式4-2,如下:

f(x)=w_{0}+ w_{1}x_{1}+w_{2}x_{2}+\cdot \cdot \cdot

线性回归要做的内容就是,根据学习集数据,找到一个线性预测公式 ,使得学习集中的各元素到此线的距离之和最小。

如果预测值是10,实际值是12或8,那么错误值就是2,这个2被称为绝对误差(absolute error),然后我们就可以通过训练集的数据去最小化绝对误差的总和,或者绝对误差的平均值,这很有意义,但常规的线性回归并不是用这样的步骤来执行的。

标准的线性回归使用最小化误差平方结果的方式来执行,因此得名“最小平方”回归。使用最小平方和的方式主要是因为这个方法简单方便好算。

平方误差法有一个天然的缺陷,就是边远的数据点会对函数结果产生严重的扭转。使用绝对值误差法相比于平方误差法,受边缘点的影响会小很多。

Class Probability Estimation and Logistic "Regression"(分类概率预测和逻辑归回)

逻辑回归就是用赔率来代替事情发生的概率来做预测,比如,一件事发生的概率是80%不发生的概率是20%那么赔率(odds)就是80:20或者4:1。但赔率的分布范围是零到正无穷,但根据点到分割线的距离来判断概率(离线越远概率越大)的话,距离值的分布范围是负无穷到正无穷,两者范围不符,故采用取对数的形式来进行变形,就是(log-odds),任何0到无穷的数的对数分布范围是负无穷到正无穷。

有以下几个要点需要记住:

1. 在概率预测中,逻辑回归和和线性分类、线性回归数值预测,使用了同样的线性模型;

2. 逻辑回归模型的输出可以理解成赔率的对数形式(log-odds);

3. 这些log-odds可以直接被转换成各类型的概率,因此逻辑回归经常被当做分类模型。你已经在不知不觉中使用了很多次逻辑回归模型它被广泛用于信用卡默认金额预测,offer的接受概率等领域。

逻辑回归是一个对分类进行预测的模型,而不是一个对数值进行预测单模型,不要认错呦。

* Logistic Regression: Some Technical Details

公式4-3 log-odds 线性方程:

\log(\frac{p_{+} (x)}{1-p_{+} (x)} )=f(x)=w_{0}+w_{1} x_{1}+w_{2} x_{2}\cdot\cdot\cdot (这里log实际上是ln即e为底数

公式4-3表示被特征向量x表示的某个数据项,这个类别的log-odds值和线性方程f(x)相等。

通常我们想要的是各类型的概率而不是log-odds,故解出公式4-3中的p_{+} (x)可得公式4-4:

p_{+} (x)=\frac{1}{1+e^(-f(x))} e^-f(x)e的负f(x)次方)

如果把f(x)当做自变量,公式4-4的值当做因变量绘图,如下:

图4-10 逻辑函数公式4-4以f(x)为自变量的函数图形,这个曲线被称为sigmoid曲线,因为图形像S字母,这个曲线将概率压缩进了正确的0-1的概率正确区间

逻辑回归模型适配到数据的标准目标函数如下:

g(x,w)=p_{+}(x)  如果x是+类型;

g(x,w)=1-p_{+}(x) 如果x是·类型

g函数给了得到x的特征后,对x的可能性评估的结果。现在考虑对所有元素的g函数值求和,并对不同的参数模型套用得出各自的\sum_{i=1}^ng(x,w),能够给出最大的sum的g值的模型,就是和学习集数据匹配最好的模型。最好的模型通常对正元素给出最高的概率,同时对负元素给出最低的概率。

Example: Logistic Regression versus Tree Induction

虽然决策树和线性分类都会用到线性决策分割线,但有以下两个差异点:

1. 决策树的分割线都是垂直于坐标轴(样本空间坐标轴)的,如图4-1,而线性分类的分割线可以是朝向任何方向的(即斜率任意),换句话说,决策树每次选择一个特征变量,但线性分类使用一个多特征变量的加权组合一次性使用所有特征变量;

2. 决策树使用递归的方法来划分样本空间,也就是可以把样本空间分割出很小的小块;但线性分类仅使用一条分割线将样本空间平面分成两个区域,这个函数会涉及到所有的变量,并且可以适用于所有样本元素。

这里举了一个威斯康辛州乳腺癌数据的案例,分别通过线性回归分类和决策树分类进行了建模,发现线性回归分类准确度为98.9%,而决策树的准确率为99.1%,但这并不一定代表决策树模型更合适,后续章节会继续讨论模型评估。

Nonlinear Functions, Support Vector Machines, and Neural Networks(神经网络)

最常用的适配复杂参数和非线性函数的方法为非线性支持向量机神经网络。

神经网络就是多层次的模型“stack”of models,通过原始数据的特征生成第一级分析结果,然后将第一层的结果当做新特征进行二次逻辑回归或其他模型分析,从而组成stack。

多层神经网络的低层级target variable的最佳结果如何选择,取决于最终高层的结果如何选择,也就是说,神经网络的最终学习结果是一个复杂函数,那么将复杂函数的各参数逐步分解,就可以得到底层各模型的target variable的最优化模型结果,也就是自上而下的择优归纳过程。

Note:神经网络对很多任务都有效用(没说啥新鲜玩意)

Summary

线性回归、逻辑回归、支持向量机,这几个概念的关键区别在于:如何定义一个模型最好地适配了学习集数据

下一章节开始讲过拟合相关的问题。

相关文章

  • 4. 为数据寻找合适的模型

    Fundamental concepts:基于数据寻找最佳的模型参数;选择数据挖掘的目标;目标函数(objecti...

  • Keras--第一个神经网络模型

    步骤如下:1. 导入数据2. 定义模型3. 编译模型4. 训练模型5. 评估模型6. 代码整理数据集:采用免费的数...

  • 【Tensorflow】MNIST解析

    1.准备数据2.搭建模型3.训练模型4.保存模型5.测试模型6.查看模型

  • 2021-04-10 ch4模型泛化和过拟合

    泛化和过拟合 构建泛化能力强的模型 正确的数据 合适的模型(图像:CNN) 合适的优化算法(梯度下降、adam) ...

  • 05.laravel的model

    1.创建模型 2.模型的白名单机制,用于赋值 3.向模型填充数据 4.从模型读取数据 orderBy的意思是排序。...

  • 数据科学家基本技能(书摘)

    数据分析技能 数据清洗 建立数据模型 运用合适的统计方法来分析数据 开发运用机器学习算法 检验模型的正确与否 实现...

  • BI方法论-数据分析

    本文以W产品为例,来梳理如何通过数据分折和模型,明确用户偏好的活动内容和习惯的触达资源,确保用户在合适的时机合适的...

  • Zookeeper简介

    一、Zookeeper数据模型 Zookeeper的数据模型为层次模型(data tree),也被称为树形模型。在...

  • Django-07-处理注册功能

    1.模型类 stu/models.py 模型映射至数据库: 4.视图 stu/views.py

  • [机器学习实战-分类-决策树]-以鸢尾花分类实验为例

    整套流程:1.数据获取,划分训练集测试集2.模型训练->模型预测->模型评估3.模型的保存与加载4.模型可视化ir...

网友评论

    本文标题:4. 为数据寻找合适的模型

    本文链接:https://www.haomeiwen.com/subject/xulwsktx.html