斯坦福机器学习笔记01
来源:互联网 发布:凤凰新闻软件下载 编辑:程序博客网 时间:2024/06/01 12:37
机器学习的定义
- 机器学习
- 不通过具体编程,使计算机获得学习能力的学科。
- 监督学习(Supervised Learning)
- 用于训练的数据已经有标签。具体分为回归问题(regression)和分类问题(classification)。
- 无监督学习(Unsupervised Learning)
- 与监督学习相对,数据没有标签,所以只能对于数据进行分类,将相似的分到一起。经典案例是聚类分析。
- 强化学习(Reinforcement Learning)
- 通过定义回报(reward),引导程序趋利避害,做出正确的决策。
线性回归
假设我们希望通过房屋面积x预测房价y,训练数据的形式如下:
能够想到的最简单的数学模型就是线性模型:
使用模型的通用方法
无论使用何种模型,使用该模型进行机器学习的一般方法是:
1. 随机(或使用其他方法)初始化模型参数
2. 建立误差函数
2. 使用梯度下降(或类似方法),找到最小误差对应的模型参数
误差函数
假设我们已经随机初始化了参数
其中,n为训练数据集的大小,而
梯度下降
梯度下降的基本概念可以表述为下图,假设有误差函数
梯度下降的基本方法是计算我们现在所在的
下面我们研究如何进行计算。假设我们初始化的值在点
上述操作可以表述为
对于线性回归的误差函数,则可以使用偏导数表示:
将
重复上述步骤直至收敛,则可以得到使得误差函数最小的
注意事项
- 在使用上述公式更新
θ0,θ1 时,必须同时更新两者,如果先更新θ0 ,再更新θ1 ,则θ1 会使用更新后的θ0 ,造成错误。 α 值不需要在计算的过程中进行调整。在趋近于最低点时,导数会无限趋近于零,则更新幅度会无限趋近于零。所以在更新的过程中,更新幅度会越变越小。- 学习速率过大会造成函数无法收敛。
多元线性回归
和一元线性回归类似,多元线性回归可以表示为
参考上文,多元线性回归的梯度下降函数可以表示为:
注意事项
- 学习速率
- 为选择合适的学习速率
α ,一般使用实验的方法,具体可以选择数个学习速率,每一个为前一个的3倍,如: …, 0.001, 0.003 , 0.01, 0.03, 0.1, 0.3…,学习速率过小会使学习过程很慢,过大则可能不会收敛。 - 数据标准化 (Normalization)
- 数据过大会减慢学习的速度,一般希望每个特征数据均是以零为均值,并介于-1,1之间。在开始训练前需要首先对数据进行标准化。
逻辑回归(Logistic Regression)
假设我们希望通过肿瘤的直预测该肿瘤是否为良性。我们收集的数据为肿瘤直径x,和肿瘤性质y,其中,y=1表示肿瘤为恶性,反之则为良性。这是一个典型的二分类问题。
基本模型
我们希望使用已经掌握的线性回归方法解决上述分类问题。假设有线性函数
但是,线性回归方法的问题是其预测值会远超过(0,1)的范围,我们希望将函数的预测值控制在(0,1)的范围就需要使用logit 函数,这也就是lotistic regression的名称由来。该函数的公式和图像如下:
则上述多元线性模型可改写为
该函数求出的是(0,1)间的一个值,可以理解为属于类别1的概率,确定具体的分类为0或1,则需要将上式求出的值带入下式:
误差函数
因为误差函数
在该误差函数中,若y=1,则有下列图像。在预测值
为了方便求导,上述公式可以改写为:
多个类别分类
分类n个类别的方法(One-vs-All)是建立在两个类别的基础之上的,即建立n个逻辑回归模型。在研究类别i,认为其他所有数据属于另一类别k,然后使用逻辑回归的方法进行计算。全部计算完成后,取
正则化
过拟合
假设我们使用函数
L1正则化
因为过拟合是参数太多造成的,那么可以通过在误差参数后加上正则化参数的方法来抑制参数的增加:
λ 称为正则化系数,λ越大则越多的
以线性规格为例,求导后,可得下列梯度下降公式:
该公式可以改写为:
我们可以理解为,在每次赋值的过程中
神经网络
SVM
参考
本文图片来源:
http://blog.csdn.net/artprog/article/details/51104192
- 斯坦福机器学习笔记01
- 斯坦福机器学习笔记一
- 斯坦福机器学习笔记二
- 斯坦福机器学习笔记三
- 斯坦福机器学习笔记四
- 斯坦福机器学习笔记五
- 斯坦福机器学习笔记六
- 斯坦福机器学习笔记七
- 斯坦福机器学习笔记八
- 斯坦福机器学习笔记九
- 斯坦福机器学习笔记十
- 斯坦福机器学习笔记十一
- 斯坦福机器学习笔记十二
- 斯坦福CS231N机器学习笔记
- 斯坦福机器学习笔记_1
- 斯坦福机器学习-week 2 学习笔记
- 机器学习斯坦福公开课学习笔记
- 斯坦福机器学习在线课程笔记
- Beyond Agile Programming
- scala数据结构之List列表
- C++单例模式
- 接口怎么实例化?
- python3.6 实现AES加密----pyCryptodome
- 斯坦福机器学习笔记01
- Oracle数据库常用where比较
- etcd 启用 https
- C# 占位符的使用
- 百度上传插件 WebUploader初始使用
- Spring MVC rest 09 火推
- 900AFind Extra One
- 【LeetCode】648.Replace Words(Medium)解题报告
- scala数据结构之Set和Map