说到回归,大家先入为主的概念应该是线性回归,所以我们先聊聊什么是线性回归,唤起大家的回忆,进而聊聊回归,再从这个基础上类比地介绍逻辑回归,最后介绍这机器学习算法的实现方式。
线性回归
我们最熟知的线性回归就是一元线性回归:只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。相关的场景有把数据画成二维平面上的散点图,再计算绘制回归线。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
以上概念来自百度百科-线性回归。
从特殊到一般,那么回归一定是个更加“大”的概念,回归分析是一种数学模型,这里还是引用百度百科的说明:回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,通常这里Y1,Y2,…,Yi是因变量,X1、X2,…,Xk是自变量。
逻辑回归(Logistic Regression)
logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w‘x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w‘x+b作为因变量,即y =w‘x+b,而logistic回归则通过函数L将w‘x+b对应一个隐状态p,p =L(w‘x+b),然后根据p 与1-p的大小决定因变量的值。如果L是logistic函数,就是logistic回归,如果L是多项式函数就是多项式回归。
在机器学习中逻辑回归常用来分类,逻辑回归和线性回归在机器学习领域的差别就在“逻辑”二字,博主的理解是如真假这种有限类别就是这里的“逻辑”,也就是说在这里回归的结果不是一个连续的数值量,而是一个离散的标称量(类别)。二分类问题使用sigmoid,多分类问题使用softmax。
最优化算法
训练算法
通过训练集数据进行训练,习得 W ′ W' W′和b,把参数b用 w 0 w_0 w0替代,置于 W ′ W' W′向量中,训练学习到的结果就是特征参数向量 W ′ W' W′。这里最常用的是梯度上升的方法,迭代模型参数拟合数据集。随机梯度上升是梯度上升的升级版。详细实现和原理暂不介绍,仅介绍两个的区别和相对的使用特性:梯度上升在每次更新回归系数是都要遍历整个数据集,被称作“批处理”;而随机梯度上升采用增量式更新,一次仅用一个样本点来更新系数,是一个在线学习算法;在数据体量大的时候,两种方式效果差别很明显。
加入特征多项式
相比直接用特征和标签进行训练而言,将特征预处理形成特征多项式进行训练的效果往往会更好,sklearn中搭建一个这样的pipeline也非常便捷且好用。
如下以线性回归为例,创建一个pipeline模型:
def polynomial_model(degree=1):
polynomial_features = PolynomialFeatures(degree=degree,
include_bias=False)
linear_regression = LinearRegression()
pipeline = Pipeline([("polynomial_features", polynomial_features),
("linear_regression", linear_regression)])
return pipeline
分析:用matplotlib画出分类边界
画出图像是为了方便具象化分析数据,matplotlib是机器学习最常用的数据可视化分析的库,在逻辑回归中,使用它来在一张二维平面图上分别画出数据散点图,和逻辑回归的模型图,来观察分析训练的成果。