机器学习—吴恩达_ 第7周_学习总结

机器学习—吴恩达_ 第7周_学习总结

21.10.18-21.10.24

👉周学习任务:

  • 100% 回顾吴恩达机器学习前4章节

  • 10% 神经网络学习

一、回顾机器学习前4章节

机器学习:用已知的数据集通过数学模型使得程序能够像人一样的去思考,然后对未知数据做出预测

preview

1.机器学习分类:有监督学习 & 无监督学习
  • 有监督学习:有明确的数据,有明确的答案。常用于分类问题以及回归问题

有监督学习suspervised learning

  • 无监督学习:不会告诉什么是错什么是对,只是被告知一堆数据,但是不知道干嘛,不知道类型,让机器自己找到答案。常用聚类算法

    无监督学习

2.线性回归模型&梯度下降
  • 回归模型的一般示例:函数公式: h θ ( x ) = θ 0 + θ 1 x h{_\theta}(x)=\theta{_0}+\theta{_1}x hθ(x)=θ0+θ1x 其中== θ 0 \theta{_0} θ0 θ 1 \theta{_1} θ1是整个函数中的变量,通过控制这两个变量调整函数的图像,使得输入参数和输出参数能够达到拟合,做出更正确的预测。一般可以使用for循环来进行两个参数的选择,但是计算出的值与真实值之间会存在误差,我们需要对误差进行获取以及得到最优的参数值,所以引入了代价函数==进行误差的分析。
  • 代价函数:在回归模型中,使用 J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( 预 测 值 h θ ( x i ) − 真 实 值 y i ) 2 样 本 数 据 数 量 m J(\theta{_0},\theta{_1})=\frac{1}{2m}\sum_{i=1}^{m}\frac {(预测值h{_\theta{}}(x_{i})-真实值y{_i})^2}{样本数据数量m} J(θ0,θ1)=2m1i=1mm(hθ(xi)yi)2来作为其代价函数,如下通过 θ 1 \theta{_1} θ1的变化,求得对应 θ 1 = 1 \theta{_1}=1 θ1=1时有最小的代价函数值。当对下图右边进行求导时 ∂ J ( θ 1 ) ∂ θ 1 \frac {\partial J(\theta{_1})}{\partial \theta{_1}} θ1J(θ1),会发现越靠近最优解时,其偏导数是越靠近0的。

  • 梯度下降:为了使得参数变化和代价函数关联起来,使用 θ j : = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ j \theta{_j}:=\theta{_1}-\alpha \frac{\partial J(\theta{_0},\theta{_1})}{\partial \theta{_j}} θj:=θ1αθjJ(θ0,θ1)对各个参数进行同步改值,其中== α \alpha α==为学习率,太大太小均不可。梯度下降的过程中,接近最优解的时候,偏导数会越来越接近0,那步长也就会越来越小,最终达到合适的权重值。一下为梯度下降算法的流程。

image-20211023140554972

image-20211023141054701

  • 多个参数的梯度下降图像(等高线)

image-20211023142054850

image-20211023141944980

  • 回归模型的批量参数梯度下降一般是要看着整个训练集进行下降。有全局最优解。
3.线性回归模型的实践-房价的预测
  • 模型训练
from sklearn.linear_model import LinearRegression
from  sklearn.model_selection import train_test_split
from  sklearn.datasets import fetch_california_housing as fch #加州房价预测数据
#数据的提取
feature=fch().data
target=fch().target

#数据的拆分
x_train,x_text,y_train,_y_test=train_test_split(feature,target,test_size=0.1,random_state=2021)
linear=LinearRegression() #模型初始化
#模型的训练
linear.fit(x_train,y_train)
#得到权重参数值 linear.coef_   
#打印权重参数名以及参数值
[*zip(fch().feature_names,linear.coef_)]

image-20211024210457887

可以看到值越小的参数对最后的预测值影响越小。

  • 模型的评估:使用MSE(均方误差)来衡量真实值和预测值之间的差异

    from sklearn.metrics import mean_squared_error 
    y_true=y_test #将真实值存到y_true中
    y_pred=linear.predict(x_test)  #通过模型对测试数据集中的数据进行预测
    mean_squared_error(y_true,y_pred)#MSE值0.5253224455144776
    
    #使用交叉验证中的均方误差
    from sklearn.model_selection import cross_val_score
    cross_val_score(linear,x_train,y_train,cv=5,scoring='neg_mean_squared_error').mean() #loss(损失值)-0.5284704303001286正数就为MSE
    
  • 拟合图

    #绘制拟合图
    %matplotlib inline
    import matplotlib.pyplot as plt
    y_pred=linear.predict(x_test)
    plt.plot(range(len(y_test)),sorted(y_test),c="black",label="y_true")
    plt.plot(range(len(y_pred)),sorted(y_pred),c="red",label="y_predict")
    plt.legend()
    plt.show
    

    image-20211024215027946

    当mse越接近0的时候,数据将会更加的拟合

4.矩阵和向量

在使用线性回归梯度下降的时候,其中 θ \theta θ的值是通过代价函数反复确定,增加了循环地次数,在矩阵的运算中,我们可以一次使用多组数据作为参数,求出多组不同的预测值。所以当函数方程存在多个输入参数时,方便求解。引入矩阵时为了后面的正规方程寻最优解

image-20211023155318908

5.多元线性回归&梯度下降&正规方程
  • 多元线性回归梯度下降
    • 函数: h ( x ) = θ T x = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h(x)=\theta^T x=\theta{_0}x{_0}+\theta{_1}x{_1}+\theta{_2}x{_2}+...+\theta{_n}x{_n} h(x)=θTx=θ0x0+θ1x1+θ2x2+...+θnxn
    • 代价函数: J ( θ 0 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(\theta{_0},...,\theta{_n})=\frac{1}{2m} \sum_{i=1}^m(h{_\theta}(x^i)-y^i)^2 J(θ0,...,θn)=2m1i=1m(hθ(xi)yi)2
    • 梯度下降:KaTeX parse error: Undefined control sequence: \part at position 38: …-\alpha \frac {\̲p̲a̲r̲t̲ ̲J(\theta{_0},..…
    • 运行流程:对多个参数实行梯度下降,进而取到最优值

运行流程

  • 特征缩放:当数据很大的时候,为了方便计算,我们可以将简单的有规律的数值进行特征缩放,使得我们的梯度下降的更快,收敛也更快。

    • 数据有一定范围:可以将数据成范围比例缩小
    • 均值归一化: x − a v e r a g e r a n g e \frac{x-average}{range} rangexaverage
  • 监控代价函数:为了监控是否达到最小,可以使用执行次数和代价函数值画出图像就行监控。一般可以使用一个阈值进行自动收敛测试。代价函数也有有很大部分收学习率的影响,所以我们也要通过合适的算法选取合适的学习率

image-20211023161831989

image-20211023162254031

  • 正规方程

    • 梯度下降核心:通过对代价函数求偏导,得到近似0的值(等于0就是类似于极值的求解),最终得到合适的参数

    • 正规方程核心:利用矩阵的运算:$\theta X=Y 通 过 矩 阵 的 变 换 ( 转 置 , 逆 矩 阵 等 ) 得 到 通过矩阵的变换(转置,逆矩阵等)得到 \theta$的值

      image-20211023163020250

    • 求得 θ = ( X T X ) − 1 X T Y \theta=(X^TX)^{-1}X^T Y θ=(XTX)1XTY (考虑是否可逆:一般均可在octave中用pinv算出,inv只能算不可逆的)

    • 不可逆的情况:特征值之间有关系比例

    • 奇异矩阵或者退化矩阵:存在多余的feature

6.正规方程VS梯度下降

image-20211023163622695

二、神经网络学习

让程序像大脑一样思考,模拟大脑的神经传递,将参数通过一层一层的映射关系传递到最后得到最终的结果

image-20211023164618278

1.现实问题

当某一个模型中输入参数变得很大的时候,如图像中的像素块分解作为参数,使用常规的模型会使得计算量变得很大。

2.神经网络

image-20211023164906398

  • 第一次的参数输入后,将通过函数算出第二层的目标值。第二层的目标值又作为第三层的参数输入。以此类推
  • a 1 ( 2 ) = g ( θ 1 0 ( 1 ) x 1 + θ 1 1 ( 1 ) x 2 + θ 1 2 ( 1 ) x 3 ) a{_1}^{(2)}=g(\theta{_1{_0}}^{(1)}x{_1}+\theta{_1{_1}}^{(1)}x{_2}+\theta{_1{_2}}^{(1)}x{_3}) a1(2)=g(θ10(1)x1+θ11(1)x2+θ12(1)x3) 表示第2层的a1是第一层通过函数进行变换得到的,参数为第一层对应的权重。
  • 简单的模拟:不同的颜色有不同的映射规则,求得的每一个参数也不一样

image-20211023165819065

3.多元分类

存在一组数据有海量数据,我们需要将这里面的数据进行多个分类,其最终的预测值不止一个。

image-20211023170321246

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔芋小灰菜

不要下次一定,要一键三连

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值