
线性回归回归问题:目标是预测连续数值(体重)钢绞线每米多少公斤,而不是分类标签
术语:
自变量(特征)因变量(目标)比如,已知身高,求体重,这里,体重是 因变量 ,身高是 自变量 。
K:斜率(weight 权重)X:自变量b:截距(bias 偏置)公式是:Y = k X + b Y = kX + b Y = k X + b ,这只是 一元线程回归 #后端 #Python #机器学习我们需要算出来,斜率是多少,截距是多少 回归方程函数 为什么还有这个公式呢,因为正常情况下不可能只有一个特征。
这 T 表示 k 的转置(把列向量变成行向量,用于点积)
公式:y = k x + b y = k^x + b y = k x + b
公式的由来
假设已知有多个特征,如下,所以一元线程回归
所以变成了如下:
如何把 b 截距引进来的,所以要在最开始加一个 w0,表示 截距 b,x0 用 1 表示。这样再实现矩阵相乘就可以了。
线性回归案例:
钢轨伸缩长度与温度昆虫鸣叫次数与天气国内GDP与双十一销售额线性回归APIfrom sklearn.linear_model import LinearRegression
# 案例基于身高,预测体重
# 1. 获取数据
x_train = [[160], [166], [172], [174], [180]] y_train = [56.3, 60.6, 65.1, 68.5, 75]
x_test = [[176]]
# 2. 数据预处理
# 3. 特征工程
建强“数字中枢”,筑牢指挥调度“核心阵地”
# 4. 模型训练
# 创建回归模型
estimator = LinearRegression estimator.fit(x_train, y_train)
# 5. 模型预测
y_predict = estimator.predict(x_test) print(y_predict) # 70.3047619
# 6. 模型评估
# 斜率
print(estimator.coef_) # 0.92942177
# 截距
print(estimator.intercept_) # -93.27346938775517
这里不画拟合回归线。
损失函数上面我们能得知,用 API 生成一条拟合回归线。
我们一眼能看出红色的直线。但是这个线是怎么求出来的呢?
是通过:误差 = 预测值 - 真实值,越小越好 所以需要损失函数,衡量每个样本的预测值与真实值效果的函数 ,也叫代价函数、成本函数、目标函数
更好的拟合所有的点,也就是 误差最小,误差和最小 损失函数计算方式
我们来计算出来,斜率(权重)和截距(偏置)
损失函数:用来描述每个样本值 和 预测值之间的关系的误差 = 预测值 - 真实值已知:
拿 点5 举例子
kx + b代入 = 180k + b再减去真实值 = 180k + b - 75得出公式是:k x + b − y kx + b - y k x + b − y ,其中 y 是真实值。
注意下图:w 其实是 k,这里写错了
这样计算之后,可能有的结果是正的,有的结果是负的。
所以又分为三种计算方式
最小二乘:每个样本的误差值的平方和均方误差:最小二乘 / 样本数平均绝对值误差:每个样本的误差的绝对值的平均值最小二乘解法如下根据上面的例子
损失函数 L ( k , b ) = ( 160 k + b − 56.3 ) 2 + ( 166 k + b − 60.6 ) 2 + ( 172 k + b − 65.1 ) 2 + ( 174 k + b − 68.5 ) 2 + ( 180 k + b − 75 ) 2 损失函数 L(k,b) = (160k + b - 56.3)^2 + (166k + b - 60.6)^2 + (172k + b - 65.1)^2 + (174k + b - 68.5)^2 + (180k + b - 75)^2 损失函数 L ( k 钢绞线每米多少公斤, b ) = ( 160 k + b − 56.3 ) 2 + ( 166 k + b − 60.6 ) 2 + ( 172 k + b − 65.1 ) 2 + ( 174 k + b − 68.5 ) 2 + ( 180 k + b − 75 ) 2
为了简便运算,这里先固定 b = -100
于是公式变成了如下:
损失函数 L ( k , b = − 100 ) = ( 160 k + ( − 100 ) − 56.3 ) 2 + ( 166 k + ( − 100 ) − 60.6 ) 2 + ( 172 k + ( − 100 ) − 65.1 ) 2 + ( 174 k + ( − 100 ) − 68.5 ) 2 + ( 180 k + ( − 100 ) − 75 ) 2 损失函数 L(k,b = -100) = (160k + (-100) - 56.3)^2 + (166k + (-100) - 60.6)^2 + (172k + (-100) - 65.1)^2 + (174k + (-100) - 68.5)^2 + (180k + (-100) - 75)^2 损失函数 L ( k , b = − 100 ) = ( 160 k + ( − 100 ) − 56.3 ) 2 + ( 166 k + ( − 100 ) − 60.6 ) 2 + ( 172 k + ( − 100 ) − 65.1 ) 2 + ( 174 k + ( − 100 ) − 68.5 ) 2 + ( 180 k + ( − 100 ) − 75 ) 2 我们先计算这一小块 已知:( 160 k + ( − 100 ) − 56.3 ) 2 (160k + (-100) - 56.3)^2 ( 160 k + ( − 100 ) − 56.3 ) 2
合并常数项 = ( 160 k − 156.3 ) 2 (160k - 156.3)^2 ( 160 k − 156.3 ) 2 此时我们发现 这就是 ( a − b 2 ) (a - b^2) ( a − b 2 ) = a 2 − 2 a b + b 2 a^2 - 2ab + b^2 a 2 − 2 ab + b 2
这是完全平方公式哈。
继续计算
= ( 160 k − 156.3 ) 2 + ( 166 k − 160.6 ) 2 + ( 172 k − 165.1 ) 2 + ( 174 k − 168.5 ) 2 + ( 180 k − 175 ) 2 = (160k - 156.3)^2 + (166k -160.6)^2 + (172k -165.1)^2 + (174k -168.5)^2 + (180k -175)^2 = ( 160 k − 156.3 ) 2 + ( 166 k − 160.6 ) 2 + ( 172 k − 165.1 ) 2 + ( 174 k − 168.5 ) 2 + ( 180 k − 175 ) 2
下面我用第一个演示一下,每一个都要计算,有点多
分别计算 ( ( 160 k ) 2 − 2 ∗ 160 k ∗ 156.3 + 156. 3 2 ) ((160k)^2 - 2 * 160k * 156.3 + 156.3^2) (( 160 k ) 2 − 2 ∗ 160 k ∗ 156.3 + 156. 3 2 ) 的平方项、一次项、常数项
平方项 = 160 ∗ 160 ∗ k 2 = 25600 k 2 160 * 160 * k^2 = 25600k^2 160 ∗ 160 ∗ k 2 = 25600 k 2一次项 = − 2 ∗ 160 ∗ 156.3 ∗ k = − 50016 k -2 * 160 * 156.3 * k = -50016k − 2 ∗ 160 ∗ 156.3 ∗ k = − 50016 k常数项 = 156.3 ∗ 156.3 = 24 , 429.69 156.3 * 156.3 = 24,429.69 156.3 ∗ 156.3 = 24 , 429.69所以等于 = 25600 k − 50016 k + 24429.69 = 25600k - 50016k + 24429.69 = 25600 k − 50016 k + 24429.69
但是这里是不能直接这样的,要把所有的项目合起来,平方项、一次项、常数项相加,最后计算。
一共五个数据点计算后
= 25600 k 2 − 50016 k + 24429.69 = 27556 k 2 − 53319.2 k + 25792.36 = 29584 k 2 − 56794.4 k + 27258.01 = 30276 k 2 − 58638 k + 28392.25 = 32400 k 2 − 63000 k + 302625 \begin{align*} &= 25600k^2 - 50016k + 24429.69 \ &= 27556k^2 - 53319.2k + 25792.36 \ &= 29584k^2 - 56794.4k + 27258.01 \ &= 30276k^2 - 58638k + 28392.25 \ &= 32400k^2 -
\end{align*} = 25600 k 2 − 50016 k + 24429.69 = 27556 k 2 − 53319.2 k + 25792.36 = 29584 k 2 − 56794.4 k + 27258.01 = 30276 k 2 − 58638 k + 28392.25 = 32400 k 2 − 63000 k + 302625
平方项、一次项、常数项的总结果 = 145 , 416 k 2 − 281 , 767.6 k + 408 , 497.31 145,416k^2 - 281,767.6k + 408,497.31 145 , 416 k 2 − 281 , 767.6 k + 408 , 497.31
计算 K 值
或者直接:281767.6 / 2 / 145416 或者直接:281767.6 / 2 / 145416 或者直接:281767.6/2/145416
总结
缺点:当样本点比较多的时候,值会非常大。
总结最小二乘
每个样本的误差值的平方和
损失函数 J ( w , b ) = ∑ i = 0 m ( h ( x ( i ) ) − y ( i ) ) 2 损失函数 J(w,b) = \sum_{i=0}^m(h(x^{(i)}) - y^{(i)})^2 损失函数 J ( w , b ) = ∑ i = 0 m ( h ( x ( i ) ) − y ( i ) ) 2
均方误差 (Mean-Square Error, MSE)
每个样本的误差值的平方和的平均值
方块圈住的就是最小二乘
i 表示具体的第几个样本
损失函数 J ( w , b ) = 1 m ∑ i = 0 m ( h ( x ( i ) ) − y ( i ) ) 2 损失函数 J(w,b) = \frac{1}{m}\sum_{i=0}^m(h(x^{(i)}) - y^{(i)})^2 损失函数 J ( w , b ) = m 1 ∑ i = 0 m ( h ( x ( i ) ) − y ( i ) ) 2
平均绝对值误差 (Mean Absolute Error , MAE)
每个样本的误差值的绝对值的和的平均值
损失函数 J ( w , b ) = 1 m ∑ 0 m ∣ h ( x ( i ) ) − y ( i ) ∣ 损失函数 J(w,b) = \frac{1}{m}\sum_{0}^m \left| h(x^{(i)}) - y^{(i)} \right| 损失函数 J ( w , b ) = m 1 ∑ 0 m h ( x ( i ) ) − y ( i )
线性回归问题求解需要什么?损失函数越小,越好
损失函数可用来描述输出(预测值)和观测结果(真实值)效果,可衡量模型效果好坏不同的任务比如分类、回归、聚类问题,一般会采用各自的损失函数线性回归求解一般需要数据、假设函数、损失函数、损失函数优化方法等部分,相互配合共同完成复习复习导数当函数 = 的自变量 在一点 0 _0 x 0 上产生一个增量 Δ 时,函数输出值的增量 Δ 与自变量增量 Δ 的比值在 Δ 趋于0 时的极限 如果存在,钢绞线厂家 即为在 处的导数,记作 f ′ ( x o ) f'(x_o) f ′ ( x o )
导数的几何意义
函数 y=f(x) 在点 x 0 x_0 x 0 处的导数的几何意义,就是曲线 y=f(x) 在点 P ( x 0 , f ( x 0 ) ) P(x_0,f(x_0)) P ( x 0 , f ( x 0 )) 处的切线的斜率,即曲线 y=f(x) 在 P ( x 0 , f ( x 0 ) ) P(x_0, f(x_0)) P ( x 0 , f ( x 0 )) 处的切线的斜率是 f'(x_0)。
常见函数的导数
导数的四则运算
直接套公式
第二个我说一下,公式是,(a * b)' = a' * b + a * b'
第四个 ( e 2 x ) ′ (e^{2x})' ( e 2 x ) ′
= 带入公式, e x e^x e x 的导还是 e x e^x e x ,所以 e 2 x e^{2x} e 2 x = e 2 x e^{2x} e 2 x= 求2x的导,还是 2 = 2 e 2 x 2e^{2x} 2 e 2 x题 举个例子:计算该函数 y = 〖"(" ^2 "+2x)" 〗^2 的导函数
偏导导数求极值
手机号码:13302071130导数为0的位置是函数的极值点
求函数 y = 2 − 4 x + 5 y = ^2 - 4x + 5 y = x 2 − 4 x + 5 的极小值求导法:对 x 求导,令导数
Z 是关于 x 和 y 的函数记成 z ( x , y ) z(x,y) z ( x , y ) ,求解 z = ( − 2 ) 2 + ( − 3 ) 2 z = (−2)^2 + (−3)^2 z = ( x − 2 ) 2 + ( y − 3 ) 2 的极小值
这题要同时求 x 和 y 的两个未知数,所以思路是,先把 x 和 y 同时解出来,方式就是 乘法法则
首先先计算 x,此时 y - 3² = 0
(x - 2)²(x - 2)' * (x - 2)'(x - 2)' * (x - 2) + (x - 2) * (x - 2)'1 * (x - 2) + (x - 2) * 1(x - 2) + (x - 2)x - x = 2x,-2-2 = -42x - 42(x - 2) = 0两边除以 2 = x - 2 = 0x = 2计算 y,此时 x - 2² = 0
(y - 3)²(y - 3)'(y - 3) + (y - 3)(y - 3)'(y - 3) + (y - 3)2y - 62(y - 3)y - 3 = 0y = 3上面的有些复杂
例子:Z = x 2 + 2 x y − 3 y 2 Z = x^2 + 2xy - 3y^2 Z = x 2 + 2 x y − 3 y 2
x = 2x + 2y(3y²是常数)y = 2x - 6y(x2是常数)向量和矩阵向量运算向量是有大小和方向
几何意义上表示:向量(1,1), 向量(1,2)
向量基运算
向量矩阵转置 Transpose
范数Norm范数(norm)是数学中的一种基本概念,具有长度的意义
1范数(L1范数)-向量中各个元素绝对值之和2范数(L2范数)-向量的模长,每个元素平方求和,再开平方根p-范数:向量中每一个元素p幂求和,在开p次根L1范数
L2范数
注意:向量的转置@向量
Lp 范数:
矩阵 Matrix 1矩阵是数学中的一种基本概念,表达 m 行 n 列的数据等
矩阵在机器学习中的表达 矩阵加法 总结:用 A 的每一行,都要乘以 B 的每一列。 矩阵乘法 :对应行列元素相乘,然后再加和再一起 术语:
方阵:行列数一样对称方阵:一种特殊的方阵,沿着主对角线,其元素对称 aij = aji可以发现,1,2 的元素是2,2,1 的元素也是 2
单位阵:一种特殊的方阵,用符号E或者是I来表示特点:对角线为 1 其他为 0
矩阵乘法的性质矩阵的逆
例子:通过 A 和 I 求出 B
已知结果是
等价于如下图
此时我们可以求解出 ac,bd 等于多少。
求 C 结果如下:
a + 2c = 1
3a + 4c = 0
首先根据 a + 2c = 1,可以改成 a = 1 - 2c
= 3(1 - 2c) + 4c = 0= 3 - 6c + 4c = 0合并同类项-6c + 4c = -2c3 - 2c = 0解 C:
3 - 2c = 0得知:3 - 2(3/2) = 03 - 3 = 0c = 1.5求 a 结果如下
损失函数最小值求法正规方程法前面我们要知道,通过最小二乘,可以计算出如下
现在我们将来计算 B 的值
例子:
一元线性回归损失函数 J ( k , b ) = ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(k,b) = \sum_{i=1}^{m}(h(x^{(i)}) - y^{(i)})^2 J ( k , b ) = ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2
上面的式子还等于 = ∑ i = 1 m ( k x ( i ) + b − y ( i ) ) 2 \sum_{i=1}^{m}(kx^{(i)} + b - y^{(i)})^2 ∑ i = 1 m ( k x ( i ) + b − y ( i ) ) 2 的极小值
损失函数是关于 k、b 的函数,对 k、b 分别求导设置成 0,得到2个方程
这是一个复杂的公式,省略常数实数 对 k 求导 = ( k x ( i ) + b − y ( i ) ) 2 (kx^{(i)} + b - y^{(i)})^2 ( k x ( i ) + b − y ( i ) ) 2 = 2 ( k x ( i ) + b − y ( i ) ) ( k x ( i ) + b − y ( i ) ) ′ 2(kx^{(i)} + b - y^{(i)})(kx^{(i)} + b - y^{(i)})' 2 ( k x ( i ) + b − y ( i ) ) ( k x ( i ) + b − y ( i ) ) ′ = 2 ( k x ( i ) + b − y ( i ) ) x ( i ) 2(kx^{(i)} + b - y^{(i)})x^{(i)} 2 ( k x ( i ) + b − y ( i ) ) x ( i ) = 2 k x ( i ) 2 + 2 b x ( i ) − 2 x ( i ) y ( i ) = 0 2kx^{(i)^{2}} + 2bx^{(i)} - 2x^{(i)}y^{(i)} = 0 2 k x ( i ) 2 + 2 b x ( i ) − 2 x ( i ) y ( i ) = 0 对 b 求钢绞线每米多少公斤导 = ( k x ( i ) + b − y ( i ) ) 2 (kx^{(i)} + b - y^{(i)})^2 ( k x ( i ) + b − y ( i ) ) 2 = 2 ( k x ( i ) + b − y ( i ) ) ( k x ( i ) + b − y ( i ) ) ′ 2(kx^{(i)} + b - y^{(i)})(kx^{(i)} + b - y^{(i)})' 2 ( k x ( i ) + b − y ( i ) ) ( k x ( i ) + b − y ( i ) ) ′ = 2 ( k x ( i ) + b − y ( i ) ) ⋅ 1 2(kx^{(i)} + b - y^{(i)}) · 1 2 ( k x ( i ) + b − y ( i ) ) ⋅ 1 = 2 ( k x ( i ) + b − y ( i ) ) 2(kx^{(i)} + b - y^{(i)}) 2 ( k x ( i ) + b − y ( i ) ) = 2 k x ( i ) + 2 b − 2 y ( i ) = 0 2kx^{(i)} + 2b - 2y^{(i)} = 0 2 k x ( i ) + 2 b − 2 y ( i ) = 0
完整答案
解析来继续变形,对上面的 一式 和 二式 上面的答案完整的都有一个求和,因为样本数量是多个。 K 的求导结果变形 = ∑ i = 1 m 2 k x ( i ) 2 + ∑ i = 1 m 2 b x ( i ) − ∑ i = 1 m 2 x ( i ) y ( i ) = 0 \sum_{i=1}^{m}2kx^{(i)^2} + \sum_{i=1}^{m}2bx^{(i)} - \sum_{i=1}^{m}2x^{(i)}y^{(i)} = 0 ∑ i = 1 m 2 k x ( i ) 2 + ∑ i = 1 m 2 b x ( i ) − ∑ i = 1 m 2 x ( i ) y ( i ) = 0 = 同时除以2 = k ∑ i = 1 m x ( i ) 2 + ∑ i = 1 m b x ( i ) − ∑ i = 1 m x ( i ) y ( i ) = 0 k\sum_{i=1}^{m}x^{(i)^2} + \sum_{i=1}^{m}bx^{(i)} - \sum_{i=1}^{m}x^{(i)}y^{(i)} = 0 k ∑ i = 1 m x ( i ) 2 + ∑ i = 1 m b x ( i ) − ∑ i = 1 m x ( i ) y ( i ) = 0 B 的求导结果变形 = ∑ i = 1 m 2 ( k x ( i ) + 2 b − 2 y ( i ) ) = 0 \sum_{i = 1}^{m}2(kx^{(i)} + 2b - 2y^{(i)}) = 0 ∑ i = 1 m 2 ( k x ( i ) + 2 b − 2 y ( i ) ) = 0 = k ∑ i = 0 m x ( i ) + ∑ ( i = 0 ) m b − ∑ ( i = 0 ) m y ( i ) = 0 k\sum_{i = 0}^{m}x^{(i)} + \sum_{(i = 0)}^{m}b - \sum_{(i = 0)}^{m}y^{(i)} = 0 k ∑ i = 0 m x ( i ) + ∑ ( i = 0 ) m b − ∑ ( i = 0 ) m y ( i ) = 0 = k ∑ i = 0 m x ( i ) + b m − ∑ ( i = 0 ) m y ( i ) = 0 k\sum_{i = 0}^{m}x^{(i)} + bm - \sum_{(i = 0)}^{m}y^{(i)} = 0 k ∑ i = 0 m x ( i ) + bm − ∑ ( i = 0 ) m y ( i ) = 0 数据带入 已知 x 是身高,y 是体重
对 K 求
对 b 求
