务实而深入地理解机器学习的几个经典算法

向作者提问
工作4年,某知名互联网公司算法工程师。乐于分享,公众号《Python与机器学习算法频道》已推200篇原创文章。
查看本场Chat

1. 背景介绍

现实问题错综复杂,仅仅调调 Sklearn 或 TensorFlow 的 API 就能把事做好? 应该没那么简单?!通常先务实地学几个经典算法,体会其思想,最好能编写源码实现它们,然后再勇往直前。

2. 带着10个问题踏入机器学习

  1. ML 的算法框架,通常包括哪几部分?
  2. 海量的数据 feed 到 ML 算法模型后,如何高效地利用它们?最终学到了什么? 让它们停下来的策略都有哪些?
  3. OLS 线性回归的误差项为什么要满足高斯分布?最大似然估计原理如何通俗理解和灵活运用?
  4. OLS 的直接求解是必然还是偶然?
  5. OLS 的梯度下降如何实施?包括不调包的源码实现
  6. 线性回归到逻辑回归,Sigmoid 映射起到了什么作用?
  7. 实战逻辑回归任务,包括不调包的梯度下降源码实现。
  8. 决策树的算法思想是什么?
  9. 从数据结构看,基本的二叉树如何演化成了决策树?
  10. 实战决策树做回归任务,包括不调包的源码实现。

2.1 机器学习算法的一般框架

机器学习的算法求解这块,通常可以分为两步走:

  1. 建立模型(比如线性回归时选用线性模型);
  2. 根据目标函数求出参数(比如求出线性回归的参数)

目标函数表示为如下,其中等号右侧第一项表示所有样本点的误差和,第二项表示惩罚项(我们知道,惩罚项是用来使得预测的模型不那么复杂的方法,这也是为了提高模型的泛化能力),目标函数的形式一般如下:

enter image description here

比如,脊回归的目标函数为(二次惩罚项):

套索回归的目标函数为(一次惩罚项):

总之,我们就是要让预测值接近真实值,同时要让模型尽可能的简单。

2.2 feed数据

海量的数据 feed 到 ML 算法模型后,如何高效地利用它们?最终学到了什么? 让它们停下来的策略都有哪些?

微信扫描登录