ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习笔记

2021-08-04 14:06:12  阅读:127  来源: 互联网

标签:机器 函数 梯度 回归 矩阵 笔记 学习 我们


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、机器学习概述

1.1 机器学习是什么?

1.1.1 概述

这是一门是让计算机 无需显式编程 (explicitly programmed) 就能自主学习的学科

机器学习发源于人工智能领域 我们希望能够创造出具有智慧的机器 我们通过编程来让机器完成一些基础的工作 比如如何找到从A到B的最短路径 但在大多数情况下 我们并不知道如何显式地编写人工智能程序 来做一些更有趣的任务 比如网页搜索 标记照片和拦截垃圾邮件等 人们意识到唯一能够达成这些目标的方法 就是让机器自己学会如何去做

机器学习应用:1.手写识别 2.用户自定制化程序 3.机器视觉

1.1.2 对于机器学习的不同定义

亚瑟·塞缪尔将机器学习定义为赋予计算机学习能力而无需明确学习的研究领域。(跳棋程序)

汤姆·米切尔定义了机器学习,他说,一个计算机程序据说从经验 E 学习关于 一些任务 T 和一些性能措施 P,如果它在 T 上的性能, 由 P 测量,随着经验 E 的提高,
对于跳棋玩例子,体验 E 将是 让程序玩成千上万的游戏本身的经验。 任务 T 将 是玩跳棋的任务,性能测量 P 将 赢得下一场比赛的跳棋对阵一些新的对手的概率。

学习算法:1.无监督学习 2.监督学习 3.强化学习 4.推荐系统

1.2 学习算法

1.2.1 有监督学习

有监督学习是指我们给出的数据集被称为“正确答案”,在房价预测案例中, 我们给它关于房子的数据集,在这个数据集中包含所有实例,对于每一个实例,我们都给出那房子的实际售价,而算法的任务就是生成更多的正确答案。

监督学习问题分为“回归”和“分类”问题。

在回归问题(Regression)中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到某个连续函数。

在分类问题(Classification)中,我们试图在离散输出中预测结果,换句话说,我们试图将输入变量映射到离散类别中。

1.2.2 无监督学习

无监督学习:我们能够在几乎不知道结果应该是什么样子的情况下解决问题。我们可以从不一定知道变量影响的数据中推导出结构。
比如我们可以通过基于数据中变量之间的关系来进行聚类推导出这种结构。

补充:对于无监督学习,没有基于预测结果的反馈。

聚类:通过找到一种方法来自动将数据进行分组。同一组的具有某种程度上的相似。

非聚类:比如“鸡尾酒会算法”允许您在混乱的环境中找到结构。

二、线性回归算法

2.1 模型表示

在这里插入图片描述

2.2 代价函数

2.2.1 数学定义

我们可以使用成本函数来衡量假设函数的准确性。 这需要假设的所有结果与来自 x 的输入和实际输出 y 的平均差异(实际上是平均值的更高级版本)。

形式可见如下:
在这里插入图片描述这个公式被称为“平方误差函数”或“均方误差”。
其中1/2是为了后续方便计算梯度下降,因为平方函数的导数项将抵消 1/2 项。 下图总结了成本函数的作用:
对于大多数问题 特别是回归问题,平方误差函数都是一个合理的选择

2.2.2 代价函数的作用

代价函数J是关于参数θ0和θ1的函数。
两个参数时,代价函数的可视化:
在这里插入图片描述

2.3 梯度下降法

2.3.1 概述

如图:
在这里插入图片描述当我们的成本函数位于图中坑的最底部时,即当它的值是最小值时,我们就会知道我们已经成功了。红色箭头显示图中的最小点。
我们这样做的方法是取我们的成本函数的导数(函数的切线)。切线的斜率是该点的导数,它将为我们提供前进的方向。我们在下降最陡的方向上降低成本函数。每一步的大小由参数α决定,称为学习率。

同时可知对于不同的起点,我们有可能会得到不同的结果。
具体公式如下:
在这里插入图片描述重复迭代直至收敛。

2.3.2 具体描述

考虑对于单参数而言,我们知道参数会往他斜率的方向移动。
可知对于学习速率α,当其过大时,会无法收敛甚至发散,当其过小时,又会增加迭代的次数。

如果对于固定的α,我们可知最后会达到一个局部最优,因为导数在不停下降,导致步长也在不断下降。

2.3.3 结合应用

在这里我们考虑将梯度下降应用于线性回归,
我们具体考虑更新参数的公式:

在这里插入图片描述
在这这里我们考虑的代价函数是一个凸函数,只有全局最小值,所以梯度下降算法必定能够收敛(α不过分大)

补充: 用于线性回归的代价函数 总是这样一个弓形的样子 这个函数的专业术语是凸函数

上述梯度下降算法也被称为批量梯度算法,因为他每次更新参数,需要对于考虑所有训练集的数据。

补充:有一个解决方案 代价函数J的数值解法 不需要使用梯度下降这样的迭代法,这种方法称为正规方程法,但实际上梯度下降比它在大数据当中更好用。

三、线性代数回顾

3.1 矩阵与向量概念

矩阵是二维数组。

向量是一列多行的矩阵。

补充:
1 “标量”意味着对象是单个值,而不是向量或矩阵。
2 R是标量实数的集合。
3 R^n refers to the set of n-dimensional vectors of real numbers.

单位矩阵。

转置矩阵。

逆矩阵。

补充:求逆矩阵:pinv(A)
求单位矩阵 eye(n)
求转置矩阵 A’
对于不可逆的矩阵我们称之为奇异或者退化矩阵。

四、多变量的线性回归

4.1 多变量

多变量线性回归也称为“多元线性回归”
我们考虑假设函数如下:
在这里插入图片描述为了能够允许我们使用矩阵运算,我们考虑增加变量x0恒等于1.

4.2 多元变量下的梯度下降法

在这里插入图片描述

4.3 特征缩放与均值归一化

我们可以通过让每个输入值在大致相同的范围内来加速梯度下降。 这是因为 θ 会在小范围内快速下降而在大范围内缓慢下降,因此当变量非常不均匀时,它会低效地振荡到最优值。

在理想情况下:
−1 ≤ x≤ 1

or

−0.5 ≤ x≤ 0.5

有助于解决于此的两种技术为 特征缩放和 均值归一化。

特征缩放涉及将输入值除以输入变量的范围(即最大值减去最小值),导致新范围仅为 1.
均值归一化涉及从输入变量的值中减去平均值从而导致输入变量的新平均值为零。
在这里插入图片描述
其中ui是变量xi的平均值,si是范围(最大-最小)或者标准差。

标准差:
在这里插入图片描述

4.4 学习率α

4.4.1 如何确定梯度下降是正常工作的

在x轴上绘制具有迭代次数的绘图。现在绘制梯度下降迭代次数的代价函数J(θ)。如果J(θ)增加,那么你可能需要减少α。

补充:自动收敛测试
如果J(θ)在一次迭代中减少小于E,则声明收敛,其中E是一些小值。(但是在实际情况中很难选择这样的阈值)

4.4.2 如何选择学习率 α

如果α太小:收敛速度慢。

如果α太大:可能不会在每次迭代中减少,因此可能不会收敛。

测试选取。

4.4 特征选择和多项式回归

我们可以通过两种不同的方式改进我们的特征和假设函数的形式。

1.我们可以将多个特征组合成一个。

2.多项式回归,利用二次函数,三次函数,平方根函数来进行拟合

补充: 如果以这种方式选择特征,那么特征缩放将变得非常重要。

五、正规方程(Normal Equation)

正规方程法提供了一种求θ的解析解法,可以直接一次性求解θ的最优值 所以说基本上 一步就可以得到优化值 一步就可以得到优化值

在“正规方程”方法中,我们将通过显式地取J相对于θJ的导数,并将它们设置为零,来最小化J。这允许我们不需要迭代就能找到最佳θ
以下公式能够使得cost function最小化
公式证明见 Normal Equation
在这里插入图片描述流程可见下图
在这里插入图片描述

补充:对于正规方程而言,特征缩放与归一化不是必须的。

对于梯度下降法(Gradient Descent)和 正规方程(Norma lEquation)的对比如下:

梯度下降法正规方程
需要选择学习速率无需选择学习速率
需要多次迭代无需多次迭代
O(kn^2)O(n^3)需要计算逆矩阵
特征量多时也运行的良好如果特征量很多时,比较慢

一般而言对于计算逆矩阵需要O(n^3)
所以当n超过10^6时考虑用梯度下降法。(特征数n)
同时对于一些比较复杂的学习算法,并不能使用正规方程法。

在使用正规方程时我们更多使用pinv而不是inv。(虽然两者都是求逆矩阵,但pinv当所求矩阵的逆矩阵不存在时,会给出一个伪逆矩阵)
假如我们正规方程所求的逆矩阵不存在时,常见原因可能是:
1.冗余特征,其中两个特征密切相关(即线性相关)
2.功能过多(例如m≤ n) 。在这种情况下,请删除一些特征或使用“正则化”。(特征值小与训练集数量)

(考虑线性代数中的矩阵可逆)

补充:在对特征进行规格化时,存储用于规格化的值(用于计算的平均值和标准偏差)非常重要。在从模型中学习参数后,我们通常希望预测我们以前从未见过的房价。给定一个新的x值(客厅面积和卧室数量),我们必须首先使用我们先前从训练集中计算的平均值和标准偏差对x进行归一化。

五、逻辑回归(分类问题)

补充:一般来说,不推荐将线性回归应用到分类问题
比如为了尝试分类,使用线性回归,将所有大于0.5的预测映射为1,将所有小于0.5的预测映射为0。但是,由于分类实际上不是一个线性函数,因此该方法无法很好地工作。

可知对应的yi也被称为标签。
从直觉上来讲 负类总是表达 缺少某样东西的意思 比如缺少恶性肿瘤 而 1 正类 就会表示 存在某样

5.1 假设

此前我们说过 希望我们的分类器 的输出值在0和1之间 因此 我们 希望想出一个 满足某个性质的假设函数 这个性质是它的预测值要在0和1之间

对此我们引入S形函数 gz(逻辑函数)
在这里插入图片描述图形如下:

在这里插入图片描述
这里显示的函数g(z)将任何实数映射到(0,1)区间,这使得它有助于将任意值函数转换为更适合分类的函数。

假设函数h会给出对应的输出为1的概率。(条件概率)

5.2 决策边界

我们的逻辑函数g的行为方式是,当其输入大于或等于零时,其输出大于或等于0.5,也就是theta*X
由此我们推出
决策边界是分隔y=0和y=1区域的线。它由我们的假设函数创建。

补充:决策边界不一定是线性的也可能是圆或者其他形状。 这条决策边界 和我们预测y等于1 与y等于0的区域 它们都是 假设函数的属性
决定于其参数 它不是数据集的属性

5.3 代价函数

我们不能使用与线性回归相同的成本函数,因为在平方误差函数下,逻辑函数会导致输出波动,导致许多局部最优。换句话说,它不是凸函数。
我们考虑一下代价函数(单个)

在这里插入图片描述
它是一个凸函数,有全局最优解。
我们可以简化我们的代价函数
在这里插入图片描述在这里插入图片描述

为什么选择这样一个代价函数:最大似然估计
使用最大似然估计法 从统计数据中可以得出这个代价函数
这是统计学中的一种思想 即如何有效地为不同模型找到参数数据
这个代价函数有一个十分优秀的属性——凸性

5.4 更新参数

我们这里还是使用梯度下降法,考虑对θ求导,得到的结果与线性回归中的公式一样。

在这里插入图片描述少了个1/m
在这里插入图片描述

5.5 高级优化算法和概念

“共轭梯度”、“BFGS”和“L-BFGS”是更复杂、更快的优化θ的方法,可以用来代替梯度下降,这两者是由拟牛顿法引申出来的。(还有Conjugate gradient)

这些算法的优势:
第一,不需要手动的选择步长;

第二,通常比梯度下降算法快;

我们需要编写下述函数:

function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end

然后,我们可以使用“fminunc()”优化算法以及“optimset()”函数,该函数创建一个包含要发送到“fminunc()”的选项的对象

具体如下:

options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
   [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

它自动选择高级优化算法来进行计算。
对应的option参数可以help来查看。

类似的优化算法详细可见无约束优化

5.6 多类别分类:一对所有

现在,当我们有两个以上的类别时,我们将对数据进行分类。我们将扩展定义,而不是y={0,1},以便y={0,1…n}。
由于y={0,1…n},我们将问题分为n+1(+1),因为索引从0)二进制分类问题开始;在每一个例子中,我们预测“y”是我们的一个类的成员的概率。
所以我们需要预测n+1个分类假设。
从而对于i判断他属于概率最高的那个类别。

补充:我们基本上是选择一个类,然后将所有其他类合并为一个单独的第二类。我们重复这样做,对每个案例应用二元逻辑回归,然后使用返回最高值的假设作为我们的预测。

5.7 过度拟合

线性 回归和逻辑回归 在很多问题上它们很有效 然而当你真正用这些算法 去解决某些机器学习的实际应用时,它们 可能会出现一种问题称作为 ”过度拟合“,这会使得学习结果非常糟糕

overfitting就是过拟合,简单点来说,就是对Training Set有很好的训练效果,能够完全拟合它,但是模型的泛化能力不行,比如来了一个新数据需要进行预测,得到的结果往往比较差

欠拟合,或高偏差,是指假设函数h的形式与数据的趋势不匹配。这通常是由于函数太简单或使用的功能太少造成的。在另一个极端,过度拟合或高方差是由一个假设函数引起的,该假设函数拟合可用数据,但不能很好地概括预测新数据。这通常是由一个复杂的函数造成的,该函数创建了许多与数据无关的不必要的曲线和角度。

如何解决过拟合问题?

  1. 减少feature个数(人工定义留多少个feature、使用模型选择算法选取这些feature)
  2. 规格化(留下所有的feature,但对于部分feature定义其theta非常小,当我们有很多稍微有用的特性时,正则化工作得很好。)

5.7 正规化

如果我们的假设函数有过度拟合,我们可以通过增加它们的成本来减少函数中某些项的权重。
在这里插入图片描述λ是正则化参数,但当该值过大时也会导致欠拟合的情况出现。

5.8 正规化应用

5.8.1 线性回归

在这里插入图片描述
得到对应的梯度下降的更新公式如下:
在这里插入图片描述

对于矩阵计算:
在这里插入图片描述(在原来的公式上加一个参数惩罚项)

再谈不可逆:如果你的样本数量 比特征数量小的话 那么这个矩阵 X 转置乘以 X 将是 不可逆或奇异的(singluar)
正规化也 为我们解决了这个问题 具体地说 只要正则参数是严格大于0的 实际上 可以 证明该矩阵 X 转置 乘以 X 加上 λ 乘以 这里这个矩阵 可以证明 这个矩阵将不是奇异的 即该矩阵将是可逆的

5.8.2 逻辑回归

在这里插入图片描述在这里插入图片描述
高级优化函数使用正则化:
在这里插入图片描述jval表示cost function 表达式,其中最后一项是参数 θ的惩罚项;下面是对各 θj求导的梯度,其中 θ0没有在惩罚项中,因此gradient不变, θ1∼θn分别多了一项 (λ/m)∗θj

标签:机器,函数,梯度,回归,矩阵,笔记,学习,我们
来源: https://blog.csdn.net/weixin_43869415/article/details/119269407

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有