李宏毅机器学习笔记(二)Regression&&Classification

李宏毅机器学习笔记(二)Regression

Case Study (P3)

机器学习入门:回归,预测准确的数值。
李宏毅老师以“预测宝可梦的CP值”为例,介绍了回归的整体过程:

Step 1:Model(模型)

定义模型集合/函数集合
例如预测宝可梦的CP值:
先设定一些参数:设宝可梦的种类为xs、CP值为xcp、HP值为xhp、重量为xw、高度为xh。

定义一个简单的mdoel:
使用线性模型,且此时仅考虑宝可梦进化前的CP值,有:
y = b + ∑ wi * xi
wi:权重weight,b:偏差bias
收集宝可梦数据对model进行训练

Step 2:Goodness of Function (评价模型的好坏)

当我们收集足够多的数据对model进行训练时,还需要定义一个 Loss function(损失函数),通过求进化后的真实值和进化后的预测值之间的差,我们可以评判model的好坏:

L(ƒ) = L(w, b)
10
= ∑ ( yn - ( b + w * xcpn))2
n=1

L(ƒ)越大,表明model越不好,反之越小则表明能很好的进行预测。

Step 3: Best Function(选择最好的模型)

挑选出最好的模型

Gradient Descent(梯度下降)

梯度下降是什么?

举个例子,我们被随机放在了一座山上的某一个位置,此时我们要下山,顺着最陡峭的地方往下走,直到我们下山。当然,也存在我们无法到达山脚的情况,此时的最低点我们称作局部最优解。

回归问题的损失函数是凸函数(convex),意味着一定会找到全局最优解。但是,其它的机器学习问题中,多个参数的梯度下降可能会陷入局部最优解。

李宏毅机器学习笔记(二)Regression&&Classification_第1张图片

选用不同的model,我们可以发现,随着model越复杂,Average Error on Training Data越小。但在三次函数的model之后,Average Error on Testing Data激增,出现了过拟合现象。为了解决过拟合,我们使用正则化。

过拟合是指在Training Data中可以表现得很好,但一换到Testing Data中表现就不能看了。
正则化的作用是降低模型的泛化误差。
选择模型时,更倾向于选择“平滑”的模型。因为当数据有噪声干扰时,越平滑的函数受到噪声的干扰越小。

李宏毅机器学习笔记(二)Regression&&Classification_第2张图片

Basic Concept(P4)

理论解释“误差来自哪里?”——偏差(bias)和方差(variance)

回归中,复杂的模型包含简单的模型(令高次项系数为0)。
模型在拟合数据时,越简单的模型,受到特殊的取样数据点的影响越小,所以方差越小。
李宏毅机器学习笔记(二)Regression&&Classification_第3张图片

欠拟合(underfitting):误差来源于bias——模型不能很好地拟合训练数据。
解决办法: 重新设计模型(欠拟合时,采集更多数据是没用的)

  • 增加更多的特征作为输入
  • 选择更复杂的模型

过拟合(overfitting):误差来源于variance——模型拟合了训练数据,但在测试数据上有很大误差。
解决办法:

  • 更多数据——采集or生成
  • 正则化

理想结果:平衡bias和variance,得到一个较好的模型。

训练集、验证集、测试集的划分,交叉验证(cross validation)和k折(k-fold)交叉验证。

  • 将训练数据分为测试集和验证集。做实验、发表论文时所谓的测试集,实际上是一个public testing set,而真正的测试集是一个private testing set,是一个谁也不知道的东西(我们不知道后人会输入什么数据到模型中),因此,我们不应该以public testing set作为选择模型的标准,而是应该以validation的结果来选择最好的模型。

  • 用validation选好模型后,可以把测试集和验证集一起作为训练数据,再对模型进行一次训练。但是!千万不要在看到public testing set的结果后,再想着去调整训练好的模型,这样的调整是无意义的。

李宏毅机器学习笔记(二)Regression&&Classification_第4张图片

Gradient Descent(P5-P7)

Tips1:自动调整学习率η

李宏毅机器学习笔记(二)Regression&&Classification_第5张图片

Tips2:Stochastic Gradient Descent(SGD)使训练更快

Tips3:特征放缩(Feature Scaling)归一化参数

梯度下降法的局限是训练可能会陷入局部最优解(局部最小值,local minima),无法到达全局最小值。当我们真正训练模型的时候,我们会定义一个终止值δ \deltaδ表示无穷小,在梯度接近于0(< δ <\delta<δ)的地方就会停下来,而这个地方不一定是全局最小值,它可能是局部最小值,也可能是鞍点(saddle point),甚至可能是一个损失函数很大的平缓高原(plateau)。

李宏毅机器学习笔记(二)Regression&&Classification_第6张图片

Classification(P10)

为何不能将分类问题直接当作回归问题(即,分类问题直接用回归的损失函数)来解

  • 以binary classification为例,我们在Training时让输入为class 1的输出为1,输入为class 2的输出为-1;那么在testing的时候,regression的output是一个数值,它接近1则说明它是class 1,它接近-1则说明它是class 2
  • Regression的output是连续性质的数值,而classification要求的output是离散性质的点,我们很难找到一个Regression的function使大部分样本点的output都集中在某几个离散的点附近
  • 因此,Regression定义model好坏的定义方式对classification来说是不适用的

理想模型:
我们要找的function f(x)里面会有另外一个function g(x),当我们的input x输入后,如果g(x)>0,那f(x)的输出就是class 1,如果g(x)<0,那f(x)的输出就是class 2,这个方法保证了function的output都是离散的表示class的数值
李宏毅机器学习笔记(二)Regression&&Classification_第7张图片
重新定义Loss function:
我们可以把loss function定义成在这里插入图片描述
,即这个model在所有的training data上predict预测错误的次数,也就是说分类错误的次数越少,这个function表现得就越好

分类问题的三步骤:
李宏毅机器学习笔记(二)Regression&&Classification_第8张图片

Logistic Regression(P11)

Step 1:function set

这里的function set就是Logistic Regression——逻辑回归
Logistic Regression常用于解决二分类问题
w:weight,b:bias,z:sigmoid function,x:input
李宏毅机器学习笔记(二)Regression&&Classification_第9张图片
李宏毅机器学习笔记(二)Regression&&Classification_第10张图片

Step 2:Goodness of a function

李宏毅机器学习笔记(二)Regression&&Classification_第11张图片
李宏毅机器学习笔记(二)Regression&&Classification_第12张图片

step 3:Find the best function

实际上就是去找到使loss function即交叉熵之和最小的那组参数就行了,这里用gradient descent的方法进行运算就ok
参数更新为:
在这里插入图片描述

小结

  • 梯度下降求得得是局部最优解,或许可通过多次取最初点得到loss值,求取平均值,更好的评判一个model。
  • 过拟合时使用正则化解决,求解时λ的值时需要我们手动去求并不断求解取得最佳值。

学习视频:李宏毅2020机器学习
部分学习笔记参考网络上优秀的解释,仅供自用学习记录。
参考原文链接:https://blog.csdn.net/iteapoy/article/details/105752567

你可能感兴趣的:(机器学习)