多类特征+多元线性回归

定义

多元线性回归定义 多元线性回归是线性回归的扩展,它设计两个或更多自变量(特征)和一个因变量(目标变量)之间的关系建模 ,是一种预测连续变量的模型,用多个特征(自变量)预测一个目标变量(因变量)。

多类特征定义 多类特征指的是哪些取值是离散类别的特征,不是连续数值。这些特征不能直接输入大多数的机器学习模型(尤其是线性模型或神经网络),因为模型只能处理数字输入,所以需要经过处理。

多类特征往往需要经过编码,才能作为多远才能行回归的输入,多元线性回归可以同时处理连续特征和经过编码后的类别特征,在实际机器学习任务中,预处理多类特征是构建可靠回归模型的关键步骤。

向量化

 

向量化使代码更加简洁,更容易变细,也更容易让自己活着别人阅读,使运行速度更快

定义 向量化是把数据表示成向量或者矩阵的形式,以便计算机能利用线性代数进行高效运算。向量化就是把多个标量组织称一个数据结构,用矩阵或向量一次性处理。

标量计算和向量计算对比

项目标量计算向量计算
定义对单个数进行逐个运算多个数据打包成向量或者矩阵,一次性进行批量计算
操作对象单个数值一组数
思维方式用循环处理每个样本或特征用矩阵代数一次性计算所有的样本
计算效率较慢(依赖循环)极快(底层并行计算,利用CPU/GPU进行优化)
表达形式程序代码中出现多层for循环使用矩阵乘法或广播机制
可读性和简洁性代码繁琐,难以推导公式代码简洁,易于数学分析
机器学习中的应用理论理解或小样本计算实际训练模型,深度学习等

举例说明计算对比

1.假设有两个特征: x_{1}_ 房屋面积  x_{2}_卧室数量

用线性模型预测房价:y=w_{0}+w_{1}x_{1}+w_{2}x_{2}


2.NumPy随机生成100000个样本

import npmpy as np
import time

#生成随机数据
np,random,seed(0)
m=100000
x1=np.random.rand(m)
x2=np.random.rand(m)

#真实权重
w1,w2,w3=3,2,4

3.计算标量(逐个样本for循环)

start=time.time()
y_scalar=[]
for i in range(m):
    y_i=w0+w1*x1[i]+w2*x2[i]
    y_scalar.append(y_i)
end=yime.time()
print("计算标量耗时:",round(round()end-start,4),"秒")
  • 使用python循环,每次只处理一个样本
  • 可读性高,但是运行很慢(尤其是样本数大的时候)

4.向量计算(NumPy一次性运算)

start=time.time()
y_vectorized=w0+w1*x1+w2*x2
end=time.time()
print("向量计算耗时:",round(end-start,4),"秒")    
  • 无循环,直接利用NumPy的底层c运算
  • 计算效率极高

5. 结果比较

标量计算耗时:0.65s  向量计算耗时:0.002s

向量化实现多元线性回归的梯度下降

                                   单个和多个特征时实现梯度下降的对比区别

                                   在多个特征时候实现梯度下降是是向量形式

  • 在多元线性回归中,每个特征x_{j}都对应一个权重w_{j}
  • 梯度下降时,我们要同时更新所有的权重w_{1},w_{2},w_{3},...w_{n},每个权重的更新由该特征在样本上的误差贡献决定
  • 也就是说,对每个参数w_{j},我们综合考虑所有样本的x_{j}与误差来一起更新它。
  • b的更新也是考虑所有的样本的误差,只是他不对应任何实际特征,而是统一控制整体的偏移

 

更多推荐