IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021-07 李宏毅机器学习打卡Task02:回归 -> 正文阅读

[人工智能]2021-07 李宏毅机器学习打卡Task02:回归

Task02 回归

学习地址

回归

定义和例子比较简单,不详细介绍。主要总结一下相关理解和注意点。

模型步骤

  • step1:模型假设,选择模型
    • 可以选择线性模型,一元的或多元的
    • ps:线性模型不仅仅只是一次的,也可以是n次的以及其他交叉的,只需将 xn 看作是一个特征即可
  • step2:模型评估,如何判断众多模型的好坏(损失函数)
    • 对于线性回归选择误差平方和即可
      loss func
    • ps:这是一个凸函数,故在用gradient descent寻找最优参数时一定可以找到
  • step3:模型优化,如何筛选最优的模型(梯度下降)
    • 优化目标即找到使loss最小的function或者w,b
      optimize
    • 梯度下降具体做法:
      gradient descent
    • 梯度下降可视化过程:
      梯度下降等高线图
    • 梯度下降的理解及存在的问题:
      • 参数更新主要取决于梯度的大小和学习率即步长,直观上,梯度越大的地方参数更新幅度也越大,学习率越大参数更新幅度也越大
      • 梯度下降不仅仅适用于线性回归中的损失函数更新参数,对于任何可微的损失函数都适用
      • 对于损失函数为凸函数的问题,梯度下降总能找到global minima
      • 对于复杂的损失函数问题,梯度下降容易陷入local minima,尤其受到初始值和学习率的影响
      • 容易陷入鞍点,停止更新
        梯度下降问题

过拟合问题overfiting

模型在训练集上过拟合的问题:即在训练集上面表现更为优秀的模型,在测试集上效果反而变差。或者说泛化能力generalization不够好。

  • 错误率结果图形化展示发现过拟合问题 :
    过拟合

如何解决或者降低过拟合

  • 使用多个模型结合,如使用多个线性模型合并成的线性模型
    multi-linear
  • 引入更多特征参数,更多数据input
  • 在损失函数中加入正则化限制参数w的大小
    • 常见的有L1正则化和L2正则化
    • w越小,意味着function越平滑
    • 正则化参数 λ \lambda λ 越大,training error考虑的比重就越低
    • 在很多应用场景中,并不是 w 越小模型越平滑越好,但是经验值告诉我们 w 越小大部分情况下都是好的
    • bias 的值对曲线平滑没有影响,因此正则化项中并不包含 b

回归demo

使用朴素的constant learning rate梯度下降效果并不好,给b和w特制化两种learning rate:

# linear regression
b = -120
w = -4
lr = 1
iteration = 100000

b_history = [b]
w_history = [w]

lr_b=0
lr_w=0
import time
start = time.time()
for i in range(iteration):
    b_grad=0.0
    w_grad=0.0
    for n in range(len(x_data)):
        b_grad=b_grad-2.0*(y_data[n]-n-w*x_data[n])*1.0
        w_grad=w_grad-2.0*(y_data[n]-n-w*x_data[n])*x_data[n]
    
    lr_b=lr_b+b_grad**2
    lr_w=lr_w+w_grad**2
    # update param
    b -= lr/np.sqrt(lr_b) * b_grad
    w -= lr /np.sqrt(lr_w) * w_grad

    b_history.append(b)
    w_history.append(w)

# plot the figure
import matplotlib.pyplot as plt
plt.contourf(x, y, Z, 50, alpha=0.5, cmap=plt.get_cmap('jet'))  # 填充等高线
plt.plot([-188.4], [2.67], 'x', ms=12, mew=3, color="orange")
plt.plot(b_history, w_history, 'o-', ms=3, lw=1.5, color='black')
plt.xlim(-200, -100)
plt.ylim(-5, 5)
plt.xlabel(r'$b$')
plt.ylabel(r'$w$')
plt.title("线性回归")
plt.show()

运行结果:
demo

另附Datawhale组队学习—李宏毅机器学习任务安排

任务安排

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:10:46  更:2021-07-15 16:11:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 19:39:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码