一、线性回归
现有一组爱豆数据,包含了每个人的年龄、身高、体重等数据。
姓名 | 年龄 | 身高 | 体重 |
---|---|---|---|
A | 19 | 173 | 58 |
B | 16 | 164 | 49 |
C | 13 | 169 | 54 |
… | … | … | … |
现在,我希望拟合出一个公式,输入年龄和身高,就能输出这个爱豆的体重(预测值)。于是,我建立了一个线性回归模型:
y = a x 1 + b x 2 + c y=ax_1+bx_2+c y=ax1+bx2+c
其中,y代表体重,x1和x2分别代表年龄和身高,c为截距项。
接着,我们可以通过python函数来完成模型拟合,以求解a、b和c这三个参数。
import statsmodels.api as sm
import numpy as np
X=np.array([[19,173],[16,164],[13,169]])
Y=np.array([58,49,54])
# 添加常数项
X = sm.add_constant(X)
# 使用 OLS 方法进行多元线性回归
model = sm.OLS(Y, X).fit()
# 输出回归系数和截距
print(model.params)
最终输出:
那么,当下一个来面试的爱豆报出自己的年龄和身高为16,166时,我就可以酷酷地说出:
“内?那么你的体重一定是…
model.predict([1,16,166])#http://cn.voidcc.com/question/p-zkfmuesb-tr.html,1是用来添加常数项的
51!”
“哦?内,内!”
(以上均为虚构,如有雷同纯属无聊)
二、逻辑回归
假设现在我不做面试官,而是改行做星探了。此时,我想要拟合一个模型,输入一个素人的年龄、身高、体重等信息,给我快速输出这个素人最可能/最适合去哪个娱乐公司。
姓名 | 年龄 | 身高 | 体重 | 公司 | 公司代码 |
---|---|---|---|---|---|
A | 19 | 173 | 58 | YG | 0 |
B | 16 | 164 | 49 | YG | 0 |
C | 13 | 169 | 54 | SM | 1 |
… | … | … | … | … | … |
此时我无法再构建一个线性模型来预测了,因为我想要的输出结果不是一个值,而是“类别”或是“属于某个类别的概率”。因此,我们引入了逻辑回归模型。它和线性回归模型的联系如下:
从本质上来看,逻辑回归还是需要先拟合一个线性模型,虽然它是长这样的:
显然,这没什么意义,我们也不可能对着这样一个图像去求解它的最佳参数。因此,我们需要引入Sigmoid链接函数,来把它变成这个样子:
因此,逻辑回归的核心公式如下:
三、二者的区别和联系
- 线性回归和逻辑回归都是广义线性回归模型的特例
- 线性回归只能用于回归问题,逻辑回归用于分类问题(可由二分类推广至多分类)
- 线性回归无联系函数或不起作用,逻辑回归的联系函数是对数几率函数,属于Sigmoid函数
- 线性回归使用最小二乘法作为参数估计方法,逻辑回归使用极大似然法作为参数估计方法
四、参考
- https://zhuanlan.zhihu.com/p/39363869
- https://www.yunyingpai.com/data/657132.html