深度学习如皓月当空,传统机器学习算法都显得暗淡无光了,系统性的整理了机器学习算法,希望项目中能用上一两个。 数据收集、数据清洗、特征工程、数据建模。 数据和特征决定了机器学习的上限,而模型和算法只能逼近这个上限而已。
机器学习:给定数据的预测问题。
Boosting 和 AdaBoost Boosting 是一种集成技术,它试图从多个弱分类器中创建一个强分类器。 妈妈卡号 邮政 2080
boxplot:箱型图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情 况资料的统计图。
卡尔曼滤波 在介绍卡尔曼滤波器数学原理之前,先从感性上看一下它的工作原理。 简单来讲,卡尔曼滤波器就是根据上一时刻的状态,预测当前时刻的状态,将预测的状态与当前时刻的测量值进行加权,加权后的结果才认为是当前的实际状态,而不是仅仅听信当前的测量值。
机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数 λ,决策树模型中树的深度。
迭代次数 epoch,k 近邻法(kNN)中的 k(最相近的点的个数),决策树模型中树的深度等等都属于超参数。 梯度下降法中的学习速率 α,批量大小 batch-size,k 近邻法中的 k(最相近的点的个数),树的数量或树的深度,矩阵分解中潜在因素的数量,学习率(多种模式),深层神经网络隐藏层数,k 均值聚类中的簇数等等。
超参数的优化: 有四种主要的策略可用于搜索最佳配置:照看(babysitting,又叫试错),网格搜索,随机搜索,贝叶斯优化。
方差关乎数据,偏差关乎模型。 Graphical illustration of bias and variance.
偏差,就是模型的预测值与真实值偏了,距离之差是多少,模型平均预测值与真实值之间的距离。
方差,描述数据分布的分散程度。这里的数据分布,就是我们模型预测值的数据分布。从式子本身来看,是与真实值没有关系的。
高偏差:
高方差:
liblinear libsvm
More esoteric: String kernel, chi-square kernel, histogram intersection kernel, … 字符串距离,卡方核函数,直方相交核函数。
sklearn 包括了分类,回归,降维和聚类等四大机器学习算法,还包括了特征提取,数据处理和模型评估者三大模块。 sk-learn 库,基于上述的 numpy 和 Scipy 的库。包含大量用于传统机器学习和数据挖掘相关的算法,集成了常见的机器学习功能。 Scikit-learn 主要用于各种数据建模概念,如回归、分类、聚类、模型选择等。 该库是在 Numpy、Scipy 和 matplotlib 之上编写的。Scikit-learn 易于集成,可以继承其他机器学习库实现特定目标。 比如 Numpy 和 Pandas 用于数据分析,Plotly 用于可视化。
imgaug :机器学习实验中的图像增强库,特别是卷积神经网络。支持以多种不同方式增强图像、关键点 / 地标、边界框、热图和分割图。 Image augmentation for machine learning experiments.
标准化本质上都是对数据进行线性变换,并不会改变数据的分布类型。变量的原始分布是非正态的,变换之后依然是非正态的。也正是因为这一点,许多领域都会在分析前对数据进行标准化,因为它即可以无损数据的原有信息,同时还能赋予数据一些新的优良性质。
那些算法不需要归一化
在深度网络中,网络参数的学习是通过反向传播的链式求导法则来求 Loss 对某个参数 的偏导数,然后进行参数更新的。因此造成梯度消失的原因主要有两个:
可通过以下方法解决梯度消失的问题:
线性回归(Linear Regression)可能是最流行的机器学习算法。线性回归就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x 值)和数值结果(y 值)。然后就可以用这条线来预测未来的值!
这种算法最常用的技术是最小二乘法(Least of squares)。这个方法计算出最佳拟合线,以使得与直线上每个数据点的垂直距离最小。总距离是所有数据点的垂直距离(绿线)的平方和。其思想是通过最小化这个平方误差或距离来拟合模型。
逻辑回归(Logistic regression)与线性回归类似,但逻辑回归的结果只能有两个的值。如果说线性回归是在预测一个开放的数值,那逻辑回归更像是做一道是或不是的判断题。
逻辑函数中 Y 值的范围从 0 到 1,是一个概率值。逻辑函数通常呈 S 型,曲线把图表分成两块区域,因此适合用于分类任务。
如果说线性和逻辑回归都是把任务在一个回合内结束,那么决策树(Decision Trees)就是一个多步走的动作,它同样用于回归和分类任务中,不过场景通常更复杂且具体。
决策树算法主要包括三个部分:特征选择、树的生成、树的剪枝。常用算法有 ID3、C4.5、CART。
剪枝策略的差异:ID3 没有剪枝策略,C4.5 是通过悲观剪枝策略来修正树的准确性,而 CART 是通过代价复杂度剪枝。
朴素贝叶斯(Naive Bayes)是基于贝叶斯定理,即两个条件关系之间。它测量每个类的概率,每个类的条件概率给出 x 的值。这个算法用于分类问题,得到一个二进制“是 / 非”的结果。看看下面的方程式。
\[P(Y|X)P(X)=P(X|Y)P(Y)\]朴素贝叶斯分类器是一种流行的统计技术,经典应用是过滤垃圾邮件。
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。支持向量机试图在数据点之间绘制两条线,它们之间的边距最大。为此,我们将数据项绘制为 n 维空间中的点,其中,n 是输入特征的数量。在此基础上,支持向量机找到一个最优边界,称为超平面(Hyperplane),它通过类标签将可能的输出进行最佳分离。
超平面与最近的类点之间的距离称为边距。最优超平面具有最大的边界,可以对点进行分类,从而使最近的数据点与这两个类之间的距离最大化。
数学推导过程 没看懂。
所以支持向量机想要解决的问题也就是如何把一堆数据做出区隔,它的主要应用场景有字符识别、面部识别、文本分类等各种识别。
n 为特征数,m 为训练样本数。
K- 最近邻算法(K-Nearest Neighbors,KNN)非常简单。KNN 通过在整个训练集中搜索 K 个最相似的实例,即 K 个邻居,并为所有这些 K 个实例分配一个公共输出变量,来对对象进行分类。
K 的选择很关键:较小的值可能会得到大量的噪声和不准确的结果,而较大的值是不可行的。它最常用于分类,但也适用于回归问题。
用于评估实例之间相似性的距离可以是欧几里得距离(Euclidean distance)、曼哈顿距离(Manhattan distance)或明氏距离(Minkowski distance)。欧几里得距离是两点之间的普通直线距离。它实际上是点坐标之差平方和的平方根。
KNN 理论简单,容易实现,可用于文本分类、模式识别、聚类分析等。
k 近邻法最简单的实现是线性扫描(穷举搜索),即要计算输入实例与每一个训练实例的距离。计算并存储好以后,再查找 K 近邻。当训练集很大时,计算非常耗时。 为了提高 kNN 搜索的效率,可以考虑使用特殊的结构存储训练数据,以减小计算距离的次数。就是 KD 树。
K- 均值(K-means)是通过对数据集进行分类来聚类的。例如,这个算法可用于根据购买历史将用户分组。它在数据集中找到 K 个聚类。K- 均值用于无监督学习,因此,我们只需使用训练数据 X,以及我们想要识别的聚类数量 K。
该算法根据每个数据点的特征,将每个数据点迭代地分配给 K 个组中的一个组。它为每个 K- 聚类(称为质心)选择 K 个点。基于相似度,将新的数据点添加到具有最近质心的聚类中。这个过程一直持续到质心停止变化为止。
生活中,K- 均值在欺诈检测中扮演了重要角色,在汽车、医疗保险和保险欺诈检测领域中广泛应用。
聚类 主要算法 K-means、密度聚类、层次聚类
DBSCAN 密度聚类。 与划分和层次聚类方法不同,DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 是一个比较有代表性的基于密度的聚类算法。它将簇 定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并 可在噪声的空间数据库中发现任意形状的聚类。
随机森林(Random Forest)是一种非常流行的集成机器学习算法。这个算法的基本思想是,许多人的意见要比个人的意见更准确。在随机森林中,我们使用决策树集成。
随机森林拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源、保留及流失,也可以用来预测疾病的风险和病患者的易感性。
优点:
缺点:
adaboost 是 bosting 的方法之一。 bosting 就是把若干个分类效果并不好的分类器综合起来考虑,会得到一个效果比较好的分类器。
GBDT 和随机森林的相同点:
GBDT 和随机森林的不同点:
由于我们今天能够捕获的数据量之大,机器学习问题变得更加复杂。这就意味着训练极其缓慢,而且很难找到一个好的解决方案。这一问题,通常被称为“维数灾难”(Curse of dimensionality)。
降维(Dimensionality reduction)试图在不丢失最重要信息的情况下,通过将特定的特征组合成更高层次的特征来解决这个问题。主成分分析(Principal Component Analysis,PCA)是最流行的降维技术。
主成分分析通过将数据集压缩到低维线或超平面 / 子空间来降低数据集的维数。这尽可能地保留了原始数据的显著特征。 可以通过将所有数据点近似到一条直线来实现降维的示例。
SVD 其实是众多矩阵分解的一种,除了在 PCA 上使用,也有用于推荐,在推荐领域的 svd 算法形式上并不能和标准的奇异值分解对应上,但其思路是相通的,具体可以参考协同过滤算法实现。
不存在完全无损的降维。
PCA 的算法两种实现方法
PCA 算法优点
PCA 算法缺点
Apriori 算法缺点 Apriori 在计算的过程中有以下几个缺点:
FP-growth 算法思想 该算法和 Apriori 算法最大的不同有两点:
FP-Growth 算法的优点
FP-Growth 算法的缺点
优点: Eclat 的优势是只需扫描一遍完整的数据库, 这种方法与 Apriori 相比有一 个优势,在产生候选 (k+1) 项集时利用先验性质,而且不需要扫描数据库 来确定 (k+1) 项集的支持度,这是因为每个 k 项集的交易集携带了计算支持 度的完整信息。
缺点: 当有许多事务需要大量内存和计算时间来相交集合时,就会出现瓶颈。因为在 Eclat 算法中,它由 2 个集合的并集产生新的候选集,通过计算这 2 个项集的交易集 的交集快速得到候选集的支持度,所以,当交易集的规模庞大时将出现以下问题:
人工神经网络(Artificial Neural Networks,ANN)可以处理大型复杂的机器学习任务。神经网络本质上是一组带有权值的边和节点组成的相互连接的层,称为神经元。在输入层和输出层之间,我们可以插入多个隐藏层。人工神经网络使用了两个隐藏层。除此之外,还需要处理深度学习。
人工神经网络的工作原理与大脑的结构类似。一组神经元被赋予一个随机权重,以确定神经元如何处理输入数据。通过对输入数据训练神经网络来学习输入和输出之间的关系。在训练阶段,系统可以访问正确的答案。
如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
每个圆形节点表示一个人工神经元,箭头表示从一个人工神经元的输出到另一个人工神经元的输入的连接。
图像识别,就是神经网络中的一个著名应用。
CNN 常见激活函数选择: Sigmoid 函数 Tanh 函数 ReLU 函数 Leaky ReLU 函数
Sigmoid 和 softmax
Tanh 函数
ReLu 和 Leaky ReLu
Sigmoid 函数 优点:
Sigmoid 函数 缺点:
优点:
缺点:
评价指标 ref