线性回归1

昨天的回顾:网页、图像、用户等业务场景的向量化,这是机器学习的基石;有了向量以后,我们就可以使用一个model进行训练,然后得到一个output;机器学习大部分的时间都是在对model进行调参;

part1

例如,我们有一个需求:
输入一个x到model中,输出得到一个y;
可以先假设一个公式 y = wx + b ,可以将这个公式理解成model;
y = w
x + b在坐标系中是一个条直线,w是这条直线的斜率,代表倾斜度;b代表的是y轴上的偏移量;
这样的模型,称为线性回归
现在的问题是:如何找到这样的一条直线,使得它尽可能满足的更多的点?
误差的概念:我们无法找到一条线,经过所有的点,因此肯定是存在误差的;
【2】误差的表示:差方均值 MSE、差绝对值;平方和绝对值的区别?-----平方可以使得收益变化变得更加明显;一堆数据点,有些难预测,有些容易预测,把容易预测的mse降低到一定程度后,再在容易点上优化,收益就变小。那在难预测的数据中收益就会表小,因此就会自然的到难以预测的点进行训练了;还有一点原因是,绝对值在0这一点是不存在导数的;
在所有的可能model中,误差最小的model就是我们需要的model,因此问题就转为了,求出误差最小的model;
【3】所有的方程中,分为有解析解,还有无解析解

#如何在Python中找到model最小的w和b

#伪代码:第一步读取训练集数据
X_train,y_train = read_data("train_data")
#第二步:生成一个模型,一个模型就是一个对象,它的成员变量包含了w,b,刚开始生成的w,b是随机的
model = LinearRegression()
#第三步:调用fit()函数,就会不停的找合适的w,b,直到误差最小
model.fit(X_train,y_train)

#打印训练完的w,是一个数组,也可以理解为一个向量
print(modle_coef_)
#打印训练完的b,是一个数组,也可以理解为一个向量
print(modle.intercept_)

机器学习中两个重要的概念:训练集(80%)和测试集(20%),训练集中的数据用于fit();

#得到model之后就可以进行测试了
#第一步:使用predict函数进行测试
y_pred_train = model,pridict(X_train)
#sklearn 求解训练集的mse
train_mse = metrics.mean_squared_error(y_train,y_pred_train)
#输出训练集的mse
print("MSE",train_mse)

#相同的方法得到测试集的mse
y_pred_test = model.predict(X_test)
test_mse = metrics.mean_squared_error(y_test,y_pred_test)
print("MSE",test_mse)

#mse只有相对大小的意义,没有绝对的意义,是用于自己给自己比较的

机器学习的特点:由理论------》到框架,先学习好好理论,在用框架来模拟实现;
架构的特点:由框架----》到理论
【2】思考题:测试集上的误差和训练集上的误差有什么关系?
测试的可能大于也可以小于训练的,但是在真实的环境中,测试的mse一般大于训练集的mse;
如何提高model的准确性:1.提高训练集;2.训练集数据尽量符合真实的环境;
概念:推广能力(泛化能力),能在测试集上表现良好的能力;
【面试】测试集的mse和训练集的mse谁大谁小?
1.测试集的有可能比训练集高,也可以比训练集低
2.但是很难采集到测试集低的数据,所有工程上,看到的都是测试集mse大;训练集的数据是全集数据集的一小部分,而测试的数据是全集数据中随机抽取的一小部分;
3.解决办法:增大训练集,增加训练集的多样性;

part2

通过上述的分析得到了model的mse,现在要做的就是要找到mse的最小值;
不同的w会有不同的mse,它们会组成一个曲线图,如下;mse的最小值就是图像的最小值,也就是这个函数的最小值;
在这里插入图片描述
那么如何求出这个图像的最小值?------求导数,求mse对w的导数;
w更新的过程就是学习的过程,更新w就是梯度下降法,使用fit函数就可以对w进行更新;
w的梯度很小:
w的梯度很大:
【2】决定梯度大小的就是α,也叫学习率;

整理思路:先得到了误差,然后有用mse来量化mse,如何到的最小的mse,使用到的方法就是梯度下降,梯度下降使用到的是求导数,不断的更新参数;
导数存在等于0的解,但是未必可以用解析法解得出来;
trade-off:训练集的样本个数;
训练集的mse越小越好吗?不是的,会出现过拟合的问题,当训练集中存在异常的数据是,机器model也会学习这些异常的脏数据;当把这model应用于测试时,会出现错误;
解决办法:将训练集分为训练集和有效集,把有效集用于测试;
【3】关于m的取值,m是训练集的批量大小;m越大,振荡越小,但是性价比不好。每次对w进行更新的时候,都是随机再从训练集中抽取m个训练集来求导数的,这就是随机采样的过程;

老师推荐的三本书:深度学习(god fellow)、统计学方法(李航)、模式分类(李宏东)、西瓜书(小白初学者)

part3

1、回顾:mse用 平方 VS 绝对值
好弄的点(数据):离主直线比较近的点
不好弄的点:离主直线比较远的点

2、多元线性回归怎么用?
变量是有多个的,x1,x2,x3,x4…,,就对应着多个w;
为了方便,将变量和参数都用向量来表示,w0就是b;

3、使用线性回归的前提条件,数据尽量的在一条直线上。当原始的数据大致分布不是在一条直线上时,如抛物线,这时我们应该改变x的系数,从一元变成多元,这时的线性回归是多元线性回归;
判断是否是线性回归的关键点是:不同的输入,输出的y是一个连续的数值;

4、如何确定要到多少元的多项式?
理论上:公式的多项次越多越好,但是随着多线程的增加,运算量也会变大;
泰勒公式:任意函数都用多项式的形式来表示;
机器学习:牛顿-莱布尼兹 、 泰勒、贝叶斯、高斯
n要适可而止,为了防止过拟合的问题;n表示的就是公式中的次数和项数

5、线性回归的花式玩法----(线性回归的特点)
把一元线性回归编程多元线性回归的一个小例子,表明了线性回归是有抗噪声能力的;
线性回归还有抗冗余的特点,当x1与x2两个特征之间有某种强关联的时候,线性回归可以抵抗这样的冗余;
【3】线性回归权重的问题,只有当特征之间没有强的关系(冗余)的时候,w才能表示权重。而当特征之间有冗余的时候,w不能当中成权重;

6、总结线性回归的套路
路线:线性回归是逻辑回归的基础,逻辑回归是深度学习的基础;
第一步:有一个数据集 data,这个数据集是不是越好?----但是是肯定的;
第二步:机器学习学的是什么?—是w,如何学习?—使用mse或者KPI。
第三步:怎么学习?-----梯度下降算法

7、关于找工作和简历的建议
结合目前的工作(做的事情),然后根据岗位的要求来复盘其中需要掌握的技能;
意思就是以目前的工作背景作为场景,然后结合刚要要求的技能来实现场景的业务需求;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值