文章目录
- 1、什么是线性回归
- 1.1、损失函数
- 2、什么是逻辑回归
- 2.2、损失函数
案例来源
1、什么是线性回归
用一个例子来解释什么是线性回归比较容易理解
假设你想在商场开一家店,想提前预测一下开这家店会不会赚钱,就需要计算成本和收入,成本可以很轻松计算出来(房租+人工+设备),但是收入怎么计算呢。这个时候正好你有一份同类型店的数据,是日均人流量和日均收入的数据,画成散点图的形式可以发现,每增加一定人流量,收入也是成比例增加的,此时我们想到了线性回归来预测我们的收入,
线性回归:一个自变量一个应变量,两者之间可以用一条直线近似表示两个变量之间的关系,通过知道一个变量预测另外一个变量的值,这个例子中,自变量x就是日均人流量,因变量y就是收入,线性回归其实就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。找直线的过程就是在做线性回归,只不过这个叫法更有逼格而已。
1.1、损失函数
既然找直线,肯定有一个评判标注,来判断那条直线是最好的,只要算一下实际收入和我们找出的直线,根据人流量预测出来的收入之间的差距就行了。说白了就是算两点的距离。当我们把所有实际收入和预测出来的收入的差距算出来然后做个加和,我们就能量化出现在我们预测的收入和实际收入之间的误差。然后把每条小竖线的长度加起来就等于我们现在通过这条直线预测出的收入与实际收入之间的差距。那每条小竖线的长度的加和怎么算?欧式距离加和,公式如下。(其中y(i)表示的是实际收入,y^(i)表示的是预测收入)
损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准。这个函数的值越小,说明直线越能拟合我们的数据
使用python代码实现线性回归
库安装
pip install -U scikit-learn
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from pylab import *def linear_regression():mpl.rcParams['font.sans-serif'] = ['SimHei']X = np.array([[2, 5, 7, 9, 12, 13, 15]]).reshape(7, 1)Y = np.array([[12, 31, 44, 51, 72, 76, 85]]).reshape(7, 1)# 建立线性回归模型regr = linear_model.LinearRegression()# 拟合regr.fit(X, Y)# 不难得到直线的斜率、截距a, b = regr.coef_, regr.intercept_print("----:", a, b)# 作图# 1.真实数据的点plt.scatter(X, Y, color='blue', label='原始数据点')# 2.拟合的直线plt.plot(X, regr.predict(X), color='red', linewidth=4, label='拟合线')plt.xlabel("人流量")plt.ylabel("收入")plt.grid()plt.legend()plt.show()
2、什么是逻辑回归
什么是分类问题?
例:判断以下每条数据所属哪个类别,就是分类问题。体温、水生都是这条数据的特征,通过这些特征判断所属种类就是一个分类问题。
什么叫二分类问题?
只有两个类别,就叫二分类问题,是哺乳类就是1,不是就是0。
逻辑回归是怎么解决二分类问题?
举例说明:左边:x轴是卖出咖啡的数量,y轴是直观的可以发现,我们预测的y值是一个连续的值,每个x对应一个y值,我们称这类问题为回归问题
右边:x轴是卖出咖啡的数量,红色部分是卖出咖啡去除成本还不能盈利,蓝色部分是可以盈利。这个图就可以看出是一个分类问题,并且还是一个二分类问题。
逻辑回归 = 线性回归 + sigmoid函数
通过sigmoid函数,我们可以很轻松的将回归问题的结果变成从[0,1]之间的某一个数,将线性回归的结果作为sigmoid函数的输入
2.2、损失函数
逻辑回归中的损失函数通常使用的是对数损失函数(Log Loss)或交叉熵损失函数(Cross-Entropy Loss),它用于衡量模型的预测结果与真实标签之间的差异。
对于二分类问题,在逻辑回归中使用的是对数损失函数,其表达式如下:
L(y, ŷ) = -[y * log(ŷ) + (1 - y) * log(1 - ŷ)]
其中,
L 表示损失函数。
y 是真实标签(0 或 1)。
ŷ 是模型的预测概率值。
当 y = 1 时,损失函数的第一项 y * log(ŷ) 起作用,当预测概率 ŷ 越接近 1(即预测为正类别的概率越高),损失函数的值趋近于 0。当预测概率 ŷ 越接近 0(即预测为负类别的概率越高),损失函数的值趋近于无穷大,表示错误的预测。
当 y = 0 时,损失函数的第二项 (1 - y) * log(1 - ŷ) 起作用,当预测概率 ŷ 越接近 0(即预测为负类别的概率越高),损失函数的值趋近于 0。当预测概率 ŷ 越接近 1(即预测为正类别的概率越高),损失函数的值趋近于无穷大,表示错误的预测。
通过最小化损失函数,我们可以调整模型的参数(权重和偏置)来使预测结果尽可能接近真实标签,从而提高模型的准确性。