ML: 百面机器学习

这一篇关于机器学习,机器学习是我刚上大学那年兴起的。然后近几年非常火,我们学校也开了一个大数据专业,我就选了他们的专业课。不过惭愧,好多数学公式推导啥的,上课就听的比较少,主要是自己看的西瓜书。不过在那门课上,我学到最重要的就是让你学一个模型是从数学模型到代码的实现都要完成的,比较基础,但也很重要。

不废话了,参考《百面机器学习》,会加一些自己的补充(不敢,其实是自己不会的地方)

01 特征归一化 feature scaling

Normalization为了消除量纲的影响,将特征统一到一个大致的范围

  • 线性归一化(Min-Max Scaling) 偏置无关

    Xnorm=X−XminXmax−XminX_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}Xnorm=XmaxXminXXmin

最大值-最小值是最大的变化增量,平常的增量/最大的 -> [0, 1]

用:rgb从[0, 1]转化到[0, 255]

  • Standardization 零均值归一化(Z-Score Normaliation) 尺度无关

就是转化到标准正态分布

  • Scaling to unit length 长度无关

problem-dependent

那为什么要特征归一化呢?

简单来说就是公平对待每一个特征,尺度大的特征和尺度小的特征对结果的影响是不同的。

以梯度下降为例,进一步了解一下:

尺度不同的损失函数的等高线可能呈椭圆形,梯度方向垂直于等高线,那就会导致下降方向呈现zigzag形状,可能就不会指向局部最小值,收敛速度也慢。当尺度相同时,损失函数呈现圆形, 下降速度快

参考:https://zhuanlan.zhihu.com/p/265411459

1.1 GD & SGD & mini-batch GD

Gradient Descent GD又叫做BGD,就是每次更新都对所有样本进行更新,太慢了

SGD改进BGD,每次更新只随机选择一个样本进行更新,快是快了,但是可能是局部最优

mini-batch GD中和上述,随机选择一组样本进行更新,根据电脑性能选取batch_size

02 类型别特征

  • 序号编码

具有大小关系 1 2 3

  • ont-hot编码
    (1, 0, 0, 0)需要解决高维问题:使用稀疏向量存储, 某种降维方法

  • 二进制编码

使用二进制对类别进行哈希映射 1 ——> 001

2.1 稀疏向量与向量的稀疏表示

(1, pos)

2.2 特征选择

03 高维组合特征

为什么高维距离度量就不那么有效了呢?

3.1 距离度量

向量范数(模长):非负性、齐次性、三角不等式

  • L1范数:向量各个元素的绝对值之和 曼哈顿距离
  • L2范数:向量各个元素的平方和的1/2次幂,Euclidean范数或者Frobenius范数 欧氏距离
  • Lp范数:向量各个元素的p次方的1/p次幂 闵可夫斯基距离
  • L∞范数:向量各个元素绝对值最大的那个元素的绝对值 切比雪夫距离

curse of dimension:数据的高维诅咒

随着维度的升高,数据之间的距离开始趋于一个相同的值,这时候使用KNN就没有那么有效了,因为最近的数据和最远的数据之间都相差很少。

3.2 高维为什么会引起过拟合?

维数灾难:过拟合一般发生在两种情况:高维空间对少参数进行拟合,低维空间对多参数进行拟合

随着特征的增加(维度),分类器的准确率反而下降了
https://www.jianshu.com/p/c75966c28f8d(没看懂????)https://www.cnblogs.com/CJT-blog/p/10422923.html

3.2 SVD用处

其他想到的知识点

补01: 梯度、偏导数、方向导数、法向量的理解

链接:https://blog.youkuaiyun.com/blogshinelee/article/details/102668951?spm=1001.2014.3001.5501

首先,我们知道导数是函数的变化率,那么从一元函数到二元函数,就从导数变成偏导数了。

如果我们固定一个坐标x,类似于用x = 1的曲面去截函数,得到在x = 1曲面上的平行于YOZ平面的一条曲线,这就从二元换成了一元,再对y求变化率即可得到在y方向上的偏导数。因此,偏导数是n元函数在某个变量上的偏导数就是固定其他变量对该变量求导。

方向导数是偏导数的推广,我们不仅局限于坐标轴向量,我们要求二元函数在任意方向上的导数。具体来说就是在XOY平面上一点(a, b),在曲面上(a, b, f(a, b))沿着方向u = (cosa, sina)走单位t长度的变化率 dt = fx(a, b)cosa + fy(a, b)sina

任意方向上的方向导数是偏导数的线性组合(感觉偏导数像是基向量),方向导数在坐标轴方向上就是偏导数

把偏导数写成向量就是梯度:Grad(a, b) = (fx(a, b), fy(a, b))

方向导数可以写成 G(a, b) * cosv,其中v是u和梯度方向的夹角,v = 0时方向导数最大,即u为梯度方向,v=180时,方向导数最小,即为梯度的反方向。

梯度与等高线垂直(等高线两侧全微分)梯度指向高度更高的等高线

补02: PCA(又是属于上课没听,下课没学系列)

补03: 维数灾难与过拟合

我要先停更半个月了…大创要结题了、CCF 要认证了,等到4月下旬我就可以好好复习,好好找一下老师,那时候就再也没有什么外在压力了,我就拥有完完全全属于我自己的时间,我想学啥就学啥 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值