周志华机器学习课程的个人总结

学堂在线上周志华老师讲的机器学习课程网址:https://www.xuetangx.com/course/nju0802bt/14363483?channel=i.area.home_course_ad

课程观后思考

    • 什么场景的问题适合机器学习解决?
    • 什么是过拟合 & 欠拟合?
    • 模型选择方面的三个关键问题
    • 线性回归

什么场景的问题适合机器学习解决?

  机器学习通常在解决一个具有高度不确定性、高度复杂性而且无法制定专家规则去做的问题。
  比方说,要做故障诊断,假设我们很清楚地知道故障诊断有三个指标,第一个指标是温度高于90度,系统会出问题,这就是一个确定性的规则、知识。但是,在真实场景下,我们没有这么清楚的知识、规则,即高于90度或者低于90度都会出问题。同时,很多因素对这个结果有影响,但是具体有多大的影响,我们不知道,这时候我们才会去用机器学习。
  当我们的知识不能针对某个问题给出精确的结果时,希望通过机器学习给出问题的答案,这就不能保证一定会给出正确的答案,因此它不是我们能够清楚了解的问题。用数学公式来说,机器学习就是用很高的概率得到一个很好的模型,公式如下:

P ( ∣ f ( x ) − y ∣ ) < = 1 − ϵ P(|f(x)-y|)<=1-ϵ P(f(x)y)<=1ϵ

   ϵ ϵ ϵ越小,模型的泛化能力越强。如果发现问题的结果是无限差,说明这件问题不能用机器学习解决。

什么是过拟合 & 欠拟合?

   使用机器学习解决问题时,一般前提是训练数据和未知数据具有相同数据分布,同时,通过机器学习算法在训练数据上学习到了一般规律
   过拟合(学的太多):机器学习算法学习到事物的非重要特性,并将其视为判别事物的一般规律。
   欠拟合(学的太少):机器学习算法没有学习到判别事物的一般规律,不足以对该事物进行正确判别。

比如:
周志华机器学习课程的个人总结_第1张图片
   模型过拟合使得模型学习到树叶必须具有锯齿,而这个特性不是树叶的一般规律;模型欠拟合使得模型还没学到树叶的一般规律就给出事物的判别结果,即看到绿色就判定是树叶,而实际是一棵树。

在学习任何一个新算法时,必须要搞清楚这个算法是如何缓解过拟合的,这种缓解的技术在什么时候会失效,这样在遇到问题的时候,就会考虑选择用其它算法。

模型选择方面的三个关键问题

   拿到一个模型之后,应该如何评估出它在未来数据上的表现会怎么样?三个关键问题:

  • 如何获得测试结果?评估方法

   测试集和训练集应该完全"互斥",测试集获取的常用方法:留出法、交叉验证法和自助法
   一、留出法
   关键点:1. 数据划分一定要保持训练集和测试集的数据分布一致,否则会引入额外的偏差,比如,分类任务中保持样本的类别比例相似;2. 随机划分100次(经验值)、重复实验后取均值作为留出法的评估结果,从而消除数据切分造成的影响;3. 测试集不能太大,也不能太小。常见做法是按照2: 1 / 3: 1 / 4: 1的比例对数据集进行切分。
   缺陷:1. 我们希望评估的是用 D D D(数据集)训练出的模型 f ( D ) f(D) f(D),但通过留出法划分的训练集 f ( D ′ ) f(D') f(D)得到的模型,可能不能很好地近似 f ( D ) f(D) f(D),因此 D ′ D' D越大越好。同样的,测试集 D − D ′ D-D' DD越小,其误差 e ( D ′ ) e(D') e(D)结果越不准,这同样需要 D − D ′ D-D' DD也是越大越好。因此,这是一个不能调和的矛盾,只能按照经验比例解决这个矛盾。2. 随机划分数据集,可能有一些数据从未被使用,而它们又对模型评估结果的影响很大,用到实际数据中,模型的表现变得一塌糊涂。
   注意事项:假设有两个机器学习算法 l 1 l_1 l1 l 2 l_2 l2,通过训练集 D ′ D' D得到两个模型 M 1 M_1 M1 M 2 M_2 M2,并且测试集误差 M 1 ( e ( D ′ ) ) < M 2 ( e ( D ′ ) ) M_1(e(D')) < M_2(e(D')) M1(e(D))<M2(e(D)),这时候就选用算法 l 1 l_1 l1,但是,提交给用户的不是 M 1 ( D ′ ) M_1(D') M1(D),而是使用算法 l 1 l_1 l1对整个数据集训练后得到的模型 M ( D ) M(D) M(D)

   二、K-fold交叉验证
   解决留出法缺陷2导致的问题,从而保证了数据集中每个样本都在测试集中出现过。它按照数据集的顺序依次对数据集进行划分,但是,存在不同的切分导致数据变化的一个问题,这个问题可能导致估计的性能是由这个扰动引起的。解决方法是对数据集进行随机切分10次,共计10 * 10次的交叉验证,也是100次实验。

周志华机器学习课程的个人总结_第2张图片
   如果每次测试集只留出一个样本,进行100次交叉验证,就是留一法,但是它也是存在预测偏差的。那应该怎么办呢?为了解决训练样本和测试样本数目比例的问题,采用"自助法",即有放回采样。优点:保证训练样本数目与真实样本数目一致;缺点:改变了训练数据的分布,使得模型对部分样本高估。

适用于训练分布稍微不太重要或者数据量不够的情况

周志华机器学习课程的个人总结_第3张图片
   三、调参和验证集
   从训练集中再拆分出来一小部分数据作为验证集,用它来确定算法的超参数。确定超参数后,要用"拆分后的训练集 + 验证集" 重新训练最终模型,并在测试集上确定模型效果。

切记:测试集一定要是在训练过程中没有用到。调参作为训练过程中的一部分,直接用测试集来确定参数,这是绝对错误的!原因是交叉验证会用到测试集中的数据。

  • 如何评估性能优劣?性能度量
       什么样的模型是“好”的,不仅取决于算法和数据,还取决于任务需求。
       回归问题常用指标:均方误差
       分类问题常用指标:错误率&精度、查准率( P = T P T P + F P P=\frac{T P}{T P+F P} P=TP+FPTP, 给用户推荐的内容有多少是用户真正喜欢的)&查全率( R = T P T P + F N R=\frac{T P}{T P+F N} R=TP+FNTP, 用户喜欢的内容有多少被推荐给了用户)、F1度量( 1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right) F11=21(P1+R1), F 1 = 2 × T P  样例总数  + T P − T N F1=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} F1= 样例总数 +TPTN2×TP, P和R的调和平均数, 好处是P或R较小的数不会被忽略掉)、加权F1度量( 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) \frac{1}{F_\beta}=\frac{1}{1+\beta^2} \cdot\left(\frac{1}{P}+\frac{\beta^2}{R}\right) Fβ1=1+β21(P1+Rβ2), F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta=\frac{\left(1+\beta^2\right) \times P \times R}{\left(\beta^2 \times P\right)+R} Fβ=(β2×P)+R(1+β2)×P×R, 对查准率 / 查全率有不同偏好, β \beta β>1时查全率有更大影响; β \beta β<1时查准率有更大影响)。
    周志华机器学习课程的个人总结_第4张图片

  • 如何判别实质差别?比较检验

   在机器学习中,模型做的是概率近似上的好,那有没有可能一次结果好,绝大多数结果都很糟糕?这样的模型是很糟糕的。因此,需要引入一些比较检验,以表征这个模型在统计意义上是不是好的。需要解决的问题:0.91 > 0.88 是否能确定得出0.91的模型一定比0.88的模型好,答案是不能。原因是测试性能不等于泛化性能;测试性能随着测试集的变化而变化;很多机器学习算法本身有一定的随机性。
   统计假设检验(hypothesis test)为学习器性能比较提供了重要依据。

周志华机器学习课程的个人总结_第5张图片

三个关键问题解决后,就会知道"你要的是什么?我怎么能保证我给你的结果就是你想要的"。

线性回归

   基础的线性回归方程需要所有的特征都是数值型,因此需要对离散变量进行数值化。两种情况,若变量值间存在"序"关系,将该变量转化为连续变量,比如身高的取值"高,中,低"连续化为{1.0, 0.5, 0.0};若变量值间不存在"序"关系,需要通过"One-hot"编码处理
   关于线性回归方程参数 w w w b b b求解过程的理解,偏导为0的地方变化率保持不变,说明此时抵达函数的波谷点。

你可能感兴趣的:(人工智能,算法)