机器学习(吴恩达2022)更新中 - 实践
机器学习目录细查(吴恩达版):
参考:https://www.bilibili.com/video/BV1owrpYKEtP/?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=1
课程资料:https://github.com/kaieye/2022-Machine-Learning-Specialization
numpy库:Python中最常用的数值及其数学函数库
matplotlib库:Python中最常用的绘图库
Jupyter Notebook:文本单元格【SHIFT+ENTER】、代码单元格【SHIFT+ENTER】
1. 什么是机器学习:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=2
关键词:无明确编程;学习能力;领域
2. 监督机器学习:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.player.switch&vd_source=9b5890635fde14ed35143779464ae808&p=3
关键词:输入到输出映射的算法;给算法提供给定输入的正确输出;算法学会在无输出标签的输入上进行预测
主要用于:分类问题;回归问题
具体应用:垃圾邮件过滤;语音识别-音频转文本;机器翻译-中文输出英文;自动驾驶-雷达信息输出车位置
3. 无监督机器学习:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.player.switch&vd_source=9b5890635fde14ed35143779464ae808&p=4
关键词:不为算法的每个输入提供正确的输出;算法发现数据中的模式和结构;算法尝试将相似数据分组到簇中
主要用于:聚类问题;异常检测问题
具体应用:推荐系统-相似新闻;客户市场细分;异常检测-银行欺诈检测;
4. 线性回归模型(监督机器学习):
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=6
关键词:监督机器学习;算法从数据中学习并生成一条最佳拟合线;输入数字,输出任何数字
基础术语:
训练集:用于训练模型的数据集(包括输入特征和输出目标)
输入x:输入/输入特征
输出y:输出/输出目标
预测输出y^:模型根据输入x预测的输出
训练样本的总数m:训练集中的样本数量
单个训练样本表示:第i个训练样本(x^(i),y^(i))
模型函数f:用于预测输出y;fw,b(x) = wx + b
模型参数w,b:称为系数、或权重
可选实验室:C1_W2_Lab01_Model_Representation_Soln
5. 成本函数及其可视化:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=7
关键词:衡量预测值与目标值之间的误差;均方误差代价函数J(w,b);目标是找到使代价J尽可能小的w和b
J(w)抛物线曲线图;选择使j(w)尽可能小的w值
J(w,b)三维曲面图;J(w,b)等高线图,椭圆;同心是最小化或是接近最小化的J(w,b)
可选实验室:C1_W2_Lab02_Cost_function_Soln
6. 梯度下降:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=9
关键词:尝试最小化任何函数的算法;每次稍微改变w和b;直到J稳定或接近最小值
w和b任意初始值;初始值的不同,可能导致多个局部最小值;但最终每次迭代都向J(w,b)的最小值方向移动
使用均方误差代价函数时,凸函数,只有一个单一的全局最小值,不存在其它局部最小值
梯度下降算法公式;
w = w - α ∂J(w,b)/∂w
b = b - α ∂J(w,b)/∂b(同步更新,同一个w)
w过大时,偏导为正,w向小的方向更新;w过小时,偏导为负,导致w向大的方向更新;使J(w,b)最小化
学习率α:决定每次迭代更新w和b的步长;过大可能会导致J(w,b)永远达不到最小值、甚至发散;过小会导致收敛速度过慢
可选实验室:C1_W2_Lab03_Gradient_Descent_Soln
7. 学习率:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=13
关键词:学习率α;决定了每次迭代更新w和b的步长;过大可能会导致J(w,b)永远达不到最小值;过小会导致收敛速度过慢
8. 多特征线性回归模型:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=15
关键词:特征向量化;点积运算np.dot(w,x);利用计算机中的并行硬件,计算更高效;
基础术语:
特征的个数:n
特征向量化:x→
第i个训练样本中的特定向量:x(i) = (x(1),x(2),...,x(n))
第2个训练样本中的第3个特征:x(i)j(其中i=2,j=3)
模型函数f:f(x→) = w1x1 + w2x2 + ... + wnxn + b;
模型简化:f(x) = w→·x→ + b;
【最大的不同】np.dot(w,x)点积:w→·x→ = w1x1 + w2x2 + ... + wnxn
索引:在线性代数中,向量索引从1开始;在numpy中,索引从0开始
可选实验室:C1_W2_Lab04_Python_Numpy_Vectorization_Soln
9. 多特征线性回归的梯度下降:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.player.switch&vd_source=9b5890635fde14ed35143779464ae808&p=19
基础术语:
模型函数:f(x) = w→·x→ + b
代价函数:J(w→,b)
梯度下降算法:
w1 = w1 - α ∂J(w→,b)/∂w1
...
wn = wn - α ∂J(w→,b)/∂wn (同步更新)
b = b - α ∂J(w→,b)/∂b
可选实验室:C1_W2_Lab05_Multiple_Variable_Soln
10. 选择学习率:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=23
关键词:代价函数J-迭代次数的曲线,如果呈现波浪形、或递增形,通常是学习率α设置的过大
关键词:
在足够小的学习率下,代价函数J-迭代次数的曲线应该在每次迭代中都下降
如果梯度下降不起作用时,可以将学习率α设置的更小,看看是否还能运行
假如依旧不起作用,通常意味着代码中某处存在错误
学习率的试错:... 0.001,0.01,0.1,1,10,...
可选实验室:C1_W2_Lab06_Feature_Scaling_and_Learning_Rate_Soln
11. 特征缩放(技巧):
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=20
不做特征缩放时,若不同特征的数值尺度差异很大,导致成本函数对不同参数的 “敏感度” 差异极大
参数的微小(巨大)变化,会对预测值产生巨大影响,从而对成本J产生很大影响
代价函数J等高线图又高又窄;梯度下降会在最小的路径之前,会走很多的弯路,导致梯度下降运行缓慢
背后原理:
梯度方向会严重偏向于 “尺度大的特征对应的参数” 方向(因为该方向成本变化更剧烈,梯度绝对值更大)
导致每次更新时,参数会在等高线之间,沿着椭圆的长轴方向反复反弹,而不是直接朝向中心的最小值
将特征的范围缩放到一个相似的范围,例如[0,1]或[-1,1],可以使梯度下降更快地收敛
特征缩放能让等高线更 “圆润”,提升梯度下降效率
最大值归一化max: x(i) = x(i) / max(x)
平均值归一化mean:x(i) = (x(i) - mean(x)) / (max(x) - min(x))
Z分数归一化:x(i) = (x(i) - mean(x)) / std(x); 其中std(x)为标准差
12. 检查梯度下降是否收敛
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=22
关键词:梯度下降的任务是找到参数w和b,希望最小化代价函数J(w→,b)
方法1:检查梯度下降是否收敛的方法:
1. 绘制代价函数J(w→,b)的曲线(学习曲线)
2. 绘制每次梯度下降迭代时J的值(w和b同步更新)
3. 横轴说梯度下降迭代次数,纵轴为代价J的值(没有w、b)
4. 如果梯度下降运行正常,那代价J的值会不断减小,直到收敛到一个最小值;如果J在某次迭代后增加,这意味着α学习率太大或代码错误
事实上,很难提前知道梯度下降,需要多少次迭代才能收敛
方法2:检查梯度下降是否收敛的方法:
1. 让ε(epsilon)为一个非常小的数,例如10^-3
2. 检查每次迭代后,J(w→,b)是否小于ε
3. 如果是,那么梯度下降已经收敛到一个最小值;如果不是,那么继续迭代
13. 多项式回归:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.player.switch&vd_source=9b5890635fde14ed35143779464ae808&p=25
关键词:多元线性回归和特征工程思想结合的一种新算法;线性和非线性函数共同拟合数据
可选实验室:C1_W2_Lab08_Sklearn_GD_Soln
14. 逻辑回归:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.player.switch&vd_source=9b5890635fde14ed35143779464ae808&p=27
关键词:线性回归并不是分类问题的良好算法;逻辑回归;输出标签只会是0或1;
关键词:sigmoid逻辑函数;g(z)=1/(1+e^(-z));使用sigmoid构建逻辑回归算法
逻辑回归模型:
z = w→·x→ + b
f(x→) = g(w→·x→ + b) = 1/(1+e^(-(w→·x→ + b)))
输入一个特征、或一组特征,并输出一个介于0~1之间的数字
可选实验室:Classification、C1_W3_Lab02_Sigmoid_function_Soln
15. 决策边界:
参考:https://www.bilibili.com/video/BV1owrpYKEtP?spm_id_from=333.788.videopod.episodes&vd_source=9b5890635fde14ed35143779464ae808&p=28
关键词:
浙公网安备 33010602011771号