关于机器学习
supervised learning(监督学习)
Linear classification(线性分类问题)
机器学习比较基础的就是linear classification (线性分类。
包括:
- 多元高斯概率分布;
- 如何判定一个点到一个多元高斯分布之间的距离:Mahalanobis distance。
- 已知两类的分布,给定任意的x,如何判断x属于哪一类:Fisher (Linear Discriminate Analysis)
- 如何评价分类器的好坏:ROC (Receive Operaterating Curve) and AUC (Area under curve)
- perceptron (感知机)& convergence(收敛性证明)
感知机&收敛性证明
Linear Regression (线性回归问题)
给定一个数据集如何才能得出一条直线(或者一个超平面)去拟合数据集:使用Linear Least Square Regression (最小二乘法)
发现训练参数有一些过拟合了(overfitting),直观上看到有一些参数太大了,有一些参数太小了,训练结果很好但是测试结果很差:使用Regularization(正则化)来平滑参数。
正则化分为三类:
-
L0 一般不常用
-
Tikhonov regularization(Tikhonov 正则化) 属于L2正则化,可以使得参数整体减小,并且一些不重要的参数接近于0(不重要的参数什么意思?比如医院中,要预测某个疾病复发的概率,那么他的姓名的权重、性别的权重对疾病复发的影响很小,这些权重就是不重要的参数).
Tikhonov 正则化 -
Lasso regularization (Lasso正则化)属于L1正则化,使得一些不重要的参数为零(得到 Sparse Matrix (稀疏矩阵))。
那么为什么L1正则化会产生稀疏矩阵呢?原因在下面的博客中有提到。
L1 and L2 正则化&为什么会产生稀疏矩阵
Radial Basis Function (RBF) (径向基函数)
线性分类和线性回归都会了之后,那么非线性的回归问题怎么解决呢:Radial Basis Function (RBF) (径向基函数)
网上大同小异,百度搜索 RBF。
(为了给自己看,给自己放一段笔记😂。)
Multi-layer Perceotron (多层感知机)& 反向传播
线性非线性的都会了,那么线性不可分的怎么办?:Multi-layer Perceotron (多层感知机)
梯度下降容易陷入局部最优,并且收敛速度差?以下方法进行优化:
- Newton’s method (牛顿法):能利用曲线本身的信息,比梯度下降更快。
牛顿法
缺点:需要计算Hessian 的逆,计算量太大了。 - momentum (动量法):每一次下降的时候需要考虑当前需要更改的值(反向传播时候的梯度下降的值)和上一次下降的值,找到他们之间的balance。相当于平滑了梯度下降的方向,找到一个平均的差值。
- QuickProp:使用前一次梯度方向和这次梯度方向来平滑当前梯度方向。使用了曲线本身的信息,但是可以避免求Hessian的逆。
- Conjugate Gradient(共轭梯度下降法):每一次需要在某个方向进行改变的时候,不进行改变,朝这个方向走下去找到最小值。
各种优化方法
unsupervised learning(非监督学习)
上面的例子都是监督学习(给定一些标签进行训练),那么没有给标签的时候如何训练数据呢?
一下的内容需要一些预备知识:
- constrained optimization (Lagrange Multiples): 拉格朗日约束条件。(百度Lagrange Multiples)
- Maximun likelihood : 最大似然。(百度似然函数)
重点来了。
PCA (principle Components Analysis)(主成分分析)
在非监督的情况下进行数据的降维。那为什么要降维呢?比如说淘宝中的数据:访问量和购买量,他们之间似乎有一些微妙的关系:如果一天中的访问量增大了很多,那么购买量应该也会增大。那么在预测访问量的时候使用其中一组数据就可以了,所以可以进行降维, 使得运算更简单。
这里的例子是对一组高斯分布的数据进行降维,在非监督的情况下找到方差最大的一组方向(为什么要找方差最大的一组方向呢?博客最开始最开始有一个线性分类为题: 已知两类的分布,给定任意的x,如何判断x属于哪一类:Fisher (Linear Discriminate Analysis)) 如果明白了这个,那么也就明白了为什么要找到方差最大的一组方向。
例子如下:
PCA&LDA如何运算以及区别
在看PCA的时候就觉得和LDA好像啊,觉得知识很凌乱,然后搜到了这个博客,里面讲述了PCA & LDA 的区别!真是醍醐灌顶!
PCA的应用:使用PCA进行人脸识别
K-means clustering (K-means聚类)
将一些数据分成k个簇的算法,比较简单,百度里面大同小异。