机器学习基础总结
笔者研一,刚刚步入此行业,目前专攻于(人工智能->机器学习->自然语言处理NLP->文本挖掘)
我将会随着自己的学习持续更新,记录自己的成长,与大家共同进步!~
总体分类
-
监督学习(Supervised learning)
-
分类(Logistic Regression逻辑回归)
-
回归(Linear Regression线性回归)
-
-
无监督学(Unsupervised learning)
- 聚类(cluster)
模型评估与选择方法
我们通过对实验的数据集进行适当的划分并采用一定的方法来对模型进行评估,从而选择适当的模型。
-
简单方法(适用于数据量较大的情况)
进行模型选择的简单方法是随机将数据切分成三部分:
-
训练集(training set):作用是用来拟合模型,通过设置分类器的参数,训练分类模型。后续结合验证集作用时,会选出同一参数的不同取值,拟合出多个分类器。
-
验证集(validation set):作用是当通过训练集训练出多个模型后,为了能找出效果最佳的模型,使用各个模型对验证集数据进行预测,并记录模型准确率。选出效果最佳的模型所对应的参数,即用来调整模型参数。如svn中的参数c和核函数等。
-
测试集(test set):通过训练集和验证集得出最优模型后,使用测试集进行模型预测。用来衡量该最优模型的性能和分类能力。即可以把测试集当做从来不存在的数据集,当已经确定模型参数后,使用测试集进行模型性能评价。
-
-
交叉验证法(cross validation)(适用于数据不是很充足的情况)
它的基本思想是重复的利用数据:把给定的数据进行切分,将切分的数据集组合为训练集和测试集,在此基础上反复地进行训练、测试以及模型选择。
它的作用:1.可以一定程度的减少过拟合 2.可以在有限的数据中获取更多的信息
常见的交叉验证有S折交叉验证(数据集分成S份,S-1份用于训练,剩下的1份用于测试,重复S次)和留一交叉验证(即当S=N的特殊情况)
泛化(generalization)
泛化是指学习到的模型对位置数据的预测能力,说白话点,其实就是由特殊到一般。
相应的泛化误差则反映了学习到的模型的泛化能力,这个就比较好理解了。实际中用测试集来评价之。
激活函数(activation function)
激活函数可以引入非线性因素,解决线性模型所不能解决的问题。
因为有些数据是线性可分的,我们可以直接用某种特定的机器学习方法找到合适的线性方程(即用一条直线)将数据分类成功。然而现实中大部分数据是线性不可分的,这是就需要采取一定的方法进行分类:
-
做线性变换(linear transformation)
比如可以将x,y变换成$ x^2 $,$ y^2 $,或许则可以分类成功
-
引入非线性函数(激活函数)
我们可以设计一种神经网络,通过激活函数使得数据线性可分。一般我们选阀值函数(threshold function)作为激活函数,例如大于某个值输出1(被激活),小于某个值输出0(未激活),这个函数是非线性的。
归一化、标准化和正则化
-
归一化(Normalization)
-
归一化是将数据变换为(0,1)之间的小数。主要是为了消除不同数据之间的量纲,方便不同量纲的数据作比较和共同处理。在神经网络中,归一化可以加快训练神经网络的收敛性。
-
线性转换(min-max归一化)$$ y=\frac{x-min}{max-min} $$
对数函数转换$$ y=log_{10} x $$
反余切函数转换$$ y=\frac{atan(x)^2}{PI}$$
-
-
标准化(Standardization)
-
标准化是为了方便数据的下一步处理而进行的数据缩放等变换
-
z-score标准化(零-均值标准化)$$ y=\frac{x-μ}{σ}$$
-
-
正则化(Regularization)
- 利用先验知识,在处理过程中引入正则化因子(正则化项regularizer或罚项penalty term),增加引导约束的作用。在逻辑回归中使用正则化可有效降低过拟合。
概率模型(树形结构)无需归一化处理
数值缩放不影响分裂点位置。LR梯度下降时,损失等高线是团员,迭代到最优点会比较麻烦,采用归一化处理后,损失等高线接近于圆形,迭代较快。而树形结构是阶跃的,阶跃点不可导,并且求导没有意义,所以树形结构寻找最优分裂点完成的。(概率模型无需归一化,因为他们不关心变量的值,而是关心变量的分布和变量之间的条件概率。)
成本/损失函数
过拟合、欠拟合及处理方法
生成模型与判别模型
-
生成模型(方法)
-
生成方法由数据先学习出联合概率分布P(X,Y),然后才求出条件概率分布P(Y|X),以此作为预测的模型,即生成模型$$ P(Y|X)=\frac{P(X,Y)}{P(X)} $$这样的方法就叫做生成方法,因为它表示了给定输入X产生输出Y的生成关系,并不是直接得出P(Y|X)
-
典型的生成模型:朴素贝叶斯法和隐含马尔科夫模型
-
-
判别模型(方法)
-
判别方法由数据直接学习得到决策函数f(X)或条件概率分布P(Y|X),以此直接作为预测模型。
-
典型的判别模型:k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场等。
-
梯度下降与向后传播(神经网络)算法
梯度消失(爆炸)及解决办法(ReLU、LSTM、droupout、batch noemalization)
ReLU主要贡献:
-
解决了梯度消失、爆炸的问题(ReLU函数的导数的正数部分恒为1,故)
-
计算方便,计算速度快
-
加速了网络的训练
ReLU的缺点:
-
由于负数部分恒为0,会导致一些神经元无法激活(可通过小学习率部分解决)
-
输出不是以0位中心
维数灾难与降维方法
朴素贝叶斯与平滑方法
- 极大似然估计与最小二乘法
感知机与神经网络
- CNN、RNN、DNN
SVM支持向量机
隐马尔可夫模型
k-meam算法
- 欧式距离与曼哈顿距离
通俗一点讲,欧氏距离是两点间的直线距离,而曼哈顿距离则是两点投影在坐标上(可以是多维)的距离总和。