机器学习:在没有明确编程的情况下让计算机计算的科学
几乎所有领域都能用上机器学习
supervised learning 监督学习
unsupervised learning 无监督学习
监督学习 supervised learning
我提供算法让机器学习,输入x,输出标签y
应用:垃圾邮件识别、音频转文字、翻译、广告投放算法……
拟合:如何让系统算法选择最好的曲线
- 回归算法 regression:根据经验预测一个数字(输出空间是实数域)
- 分类算法 classification:预测类别(输出空间是有限集合),但费分类算法可能也需要拟合边界线
无监督学习 unsupervised learning
给出的数据集没有标签
在没有标签的数据集中找出有意思的东西
明确定义:仅有输入x没有输出y,算法从数据结构中得出
找出数据集有哪些特殊的集群和结构
- 聚类算法:将未标记的算法按类别聚集在一起(视频平台的相似推荐),我没没有告诉算法有哪些类别,他自己分类
- 异常检测
- 降维:压缩数据并尽可能少的减少损失
线性回归模型
有一堆数据,组成一堆数据点。线性回归就是找一条直线。
训练用的数据集叫做训练集
x:输入变量(特征)input/feature
y:输出变量(目标变量)output/target
m:训练示例总数 training examlple
(x,y): 单个训练例子。右上角括号里的数字,表示是第一个数据
通过(x,y)拟合出一个算法f,然后去求y估计(y-hat) (y的预测值)
我们怎么计算f?
如果是线性的话,就设
![[Pasted image 20250220173613.png]]
重点就是求w、b
w,b:模型参数 parameters,有时也叫技系数/权重
构建一个损失函数 cost function
如何构建损失函数
用来测评我们建出来的模型的效果好坏
我们要做的事就是找到一组最合适的w,b使得y-hat 与y之间的距离最小
如何衡量拟合程度?就用损失函数
误差 error = y-hat - y (预测-实际)
一般用
![[Pasted image 20250220175715.png]]
平方误差损失函数J
J越小,拟合效果越好
要找到一组w,b使得J最小,可以通过梯度下降算法。
梯度下降算法
可以最小化任何函数
有的时候函数不只有一个极小值
![[Pasted image 20250221091326.png]]
![[Pasted image 20250221091608.png]]
这是一个赋值运算
alpha:学习率(0-1),控制我们下坡的步幅
选择一个好的学习率很重要
![[Pasted image 20250221091751.png]]
右边的导数项可以理解为走的方向
![[Pasted image 20250221091826.png]]
我们将会重复这两个更新步骤,直到算法收敛
==要使得w,b同时更新==,代码应该这么写:
![[Pasted image 20250221092322.png]]
学习率 Alpha
如果alpha太小:需要更多计算步骤,速度很慢
如果太大:可能会离训练目标更远了
梯度下降只能到达极小值,但这还不够。我们想要去最小值
使用不同的w、b初始值可能可以得到不同的极小值
线性回归的平方误差损失函数只会有一个极小值
批量梯度下降
每次更新时都查看了整批训练示例
#机器学习
#监督学习
#无监督学习
#线性回归
#梯度下降