一、符号说明
新增符号说明:
其中,当时,;当时,
误差容忍度
:控制
二、正交匹配追踪法(OMP)
OMP算法近似拟合了一个带限制的线性模型,该限制影响模型的范数,它可以找到近似非0元素的最优向量解。其最小化目标函数为:
是的,它和最小二乘法很相似,区别在于最小二乘法目标是使得残差平方和最小,而OMP是使得最终的权值向量中小于等于你指定的非0元素个数,所以每次迭代都需要重新计算残差,所以注定OMP的复杂度很高。
当然,你也可以指定一个误差容忍度来最小化,其目标函数为:
OMP主要运用在从带噪信号中提取稀疏信号,我们不妨将OMP运用于之前的例子,噪声数据量为1/2,容忍度设为0.01,经检验,OMP将原始维度5000维降到了76维,其分数如下:
看,结果比之前的任何算法都要高,就是速度慢,当然设置不同的容忍度或者不同的n都可能有不同的结果。
三、贝叶斯岭回归
贝叶斯回归可以用于在预估阶段的参数正则化,正则化参数的选择不是人为的选择,而是手动调节数据值来实现。在岭回归中使用正则项,其实是假定了为高斯先验分布。
的先验参数可以通过球面高斯公式得出:
通过此公式得到的先验模型称为贝叶斯岭回归,服从高斯分布,之所以叫贝叶斯岭回归是因为它的两个超参数均值α与标准差λ服从gamma分布,在岭回归中使用的正则项假定了为高斯先验分布,而gamma分布又与高斯分布成共轭先验关系,所以其本质与岭回归很相似,所以称为贝叶斯岭回归。对于α与λ,其先验分布默认为:
~,~,其中
3.1、贝叶斯岭回归示例
还是一样的数据集,参杂一半的噪声,经检验,贝叶斯岭回归对于高维数据集并没有压缩维度,意味着权值向量的每一元素都是非0元素,且最后的分数很低,大概为0.016。于是,我又进一步实验,将数据维度变为,分数几乎接近100%,并且没有压缩维度。
3.2、贝叶斯岭回归的优缺点
优点:对于病态数据的鲁棒性好、精确度高。
缺点:速度慢,不适用于高维数据。
四、主动相关决策理论(ARD)
ARD与贝叶斯岭回归很相似,唯一不同的是ARD会产生更稀疏的权值向量。ARD弱化了高斯分布为球形的先验假设,即假设分布为钰轴平行的椭圆高斯分布,每个权值从一个中心在0点,方差为的高斯分布中采样得到。其的先验分布公式为:
,其中,
~,默认值同贝叶斯岭回归。
4.1、ARD示例:
与岭回归数据一样,经检验,该算法将50维数据降到10维,并且效果与贝叶斯回归差不多,也是几乎接近100%。但是博主也发现了它的另一个缺点:慢!比贝叶斯回归要慢,调参的需要注意将迭代次数调到10此左右。
4.2、ARD优缺点
优点:能够得到稀疏向量。
缺点:不适用于大型数据集,而且相当慢。
五、Logistic回归
请注意:虽然名字中带有回归,然而这是一个分类算法。
Logistic回归既可以选正则化,也可以选正则化,也可以将正则化与正则化相互组合。
带罚项的目标函数为:
带罚项的目标函数为:
对于sklearn中求解器的选择,我们一般选择'saga',在一个经过缩放的数据集上,它的效果是最好的。
5.1、Logistic示例
分类数据集大小为2000*50,二分类,经检验,结果如下:
随机数据集分类性能报告我们将其运用到鸢尾花数据集,看看效果:
鸢尾花数据集效果大家也可以尝试其它不同的数据集。
六、随机梯度下降(SGD)
SGD在样本数量与特征数量都很大时很有用,它既可以用于分类,也可以用于回归。通过使用不同的损失函数,支持不同的罚项。例如,设定loss='log',则它拟合的就是一个Logistic回归模型,设定loss='hinge',则它拟合的就是SVM模型。
6.1、SGD示例
例如,对于鸢尾花数据集,我们使用loss='hinge'的效果与loss='log'进行对比
loss='log' loss='hinge'两者logistic更胜一筹,但是对于单独使用Logistic回归,效果似乎差远了,问题就在于这个随机上,它牺牲更高的正确度来换取更短的收敛时间。
七、感知器(Perceptron)
感知器是一种适用于大规模学习的简单算法。默认情况下,该算法无需设置学习率,不需要正则化处理,仅使用错误样本来更新模型。
7.1、感知器示例
根据官网的API我们通过二百万个数据来比较SGD与感知器的运行时间,其结果如下:
SGD VS 感知器官网API说,感知器要比SGD略快,不晓得是哪里出了问题,但是最后的模型效果是胜于SGD的,读者也可以动手去实践下,如果有读者知晓原因,烦请告诉博主。
八、被动攻击算法(Passive Aggressive)
被动攻击算法是大规模学习的一类算法,它也也不需要手动输入学习率,但是需要正则化。
8.1、被动攻击算法示例
依旧是二百万个数据:
感知器VS被动攻击算法可以看出,被动攻击算法时间略长,但是模型的正确率和召回率都比感知器的高,各有利弊吧。
九、稳健回归:处理离群点和模型错误
稳健回归特别适用于回归模型包含损坏数据的情况,如离群点或模型中的错误。稳健拟合的一个重要概念就是崩溃点,即拟合模型所能承受的离群值最大比例。
注意:在高维数据下,稳健拟合的效果可能会很差。
对于稳健回归预测器的选择,推荐选择RANSAC。RANSAC中文名为随机抽样一致性算法。它是一种非确定性算法,以一定概率输出一个可能的合理结果,依赖于迭代次数,该算法主要解决线性或非线性回归问题,在计算机视觉摄影测绘领域尤为流行。算法从全体样本输入中分出一个局内点集合,全体样本可能由于测量错误或对数据的假设错误而含有噪点、离群点。最终的模型仅从这个局内点集合中得出。
9.1、稳健回归示例
我们将稳健回归与贝叶斯岭回归作个对比:
稳健回归VS贝叶斯岭回归运行时间下面是决定系数,可以看出来,两个算法效果差不多。
十、Huber回归
Huber回归与岭回归不同,因为它对于被分为异常值的样本应用了一个线性损失。如果某个样本的绝对误差小于某一阈值,样本就被分为内围值。但该算法又不同于稳健回归,因为它没有忽略异常值的影响,并分配给异常值较小的权重。Huber回归的最小化目标函数为:
其中当,;当时,
就是你设的阈值,建议设置为1.35以实现95%的统计效率。
10.1、Huber示例
我们将Huber回归、岭回归、稳健回归三者对比下:
岭回归 VS 稳健回归 VS Huber回归可以看出来,Huber回归时间较长,三者决定系数都差不多。
十一、多项式回归
机器学习中一种常见的模式,是使用线性模型训练数据的非线性函数。这种方法保持了一半快速的线性方法的性能,同时允许它们适应更广泛的数据范围。例如,我们有一个以下的双变量线性回归方程(基函数):
为了防止欠拟合,我们可以使得这个模型更加复杂:
由此,我们可以创造一个新的变量:
那么,问题就可以转换成:
该方程依旧是线性的,所以我们可以通过组合基函数的特征,建立高维线性方程,适应更广泛的数据。比如,多项式回归可以很方便的解决异或问题。
11.1、多项式回归示例
我们运用多项式回归解决异或问题:
首先数据集:
目标值:
基函数:
事实证明,你无法找到这样的基函数去准确的拟合这个数据集,但是我们通过组合特征可以做到。根据异或表达式:,由于特征量都是布尔代数,所以“非”很容易实现。现实中,多项式回归的特征组合可能需要多次尝试,以找到最合适的特征组合,接着就可以用其它回归算法进行拟合了。
如有错误,请指正;如有疑问,请留言。
参考:《Scikit-Learn官方API》
网友评论