网站外链建设的15个小技巧,西青做网站公司,深圳十大外包软件公司,wordpress地图目录 机器学习特征工程常见的计算模型总览线性回归模型与逻辑回归模型线性回归模型逻辑回归模型区别 朴素贝叶斯分类器模型 (Naive Bayes)决策树模型随机森林模型支持向量机模型 (Support Vector Machine)K近邻模型神经网络模型卷积神经网络#xff08;CNN#xff09;循环神经… 目录 机器学习特征工程常见的计算模型总览线性回归模型与逻辑回归模型线性回归模型逻辑回归模型区别 朴素贝叶斯分类器模型 (Naive Bayes)决策树模型随机森林模型支持向量机模型 (Support Vector Machine)K近邻模型神经网络模型卷积神经网络CNN循环神经网络RNN 模型评估 推荐链接 阿秀的学习笔记 JavaGuide中常见面试题总结 机器学习面试笔试求职必备八股文 朴素贝叶斯模型naive bayes 随机森林 – Random Forest | RF 机器学习
特征工程 特征归一化的意义特征归一化是数据预处理中重要技术。因为特征间的单位尺度可能不同为了便于后续的下游任务中特征距离计算为了消除特征间单位和尺度差异的影响以对每维特征同等看待需要对特征进行归一化。【把绝对值转为相对值这样就能体现出哪一维特征的重要性】 特征 / 向量之间的距离计算方法 欧氏距离衡量空间点的直线距离。n维向量之间的距离计算公式如下 ∑ i 1 n ( x i − y i ) 2 \sqrt{\sum_{i1}^{n}(x_i-y_i)^2 } i1∑n(xi−yi)2 曼哈顿距离两个点 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)、 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)之间的距离计算公式如下 ∣ x 1 − x 2 ∣ ∣ y 1 − y 2 ∣ \left | x_1-x_2 \right | \left | y_1-y_2 \right | ∣x1−x2∣∣y1−y2∣ 切比雪夫距离两个点 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)、 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)之间的距离定义为其各座标数值差绝对值的最大值。 m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) max(\left | x_1-x_2 \right | ,\left | y_1-y_2 \right | ) max(∣x1−x2∣,∣y1−y2∣) 余弦相似度计算两个向量之间夹角的余弦值余弦值接近1说明夹角趋近0表示两个向量相似。余弦值越大表示向量越相似取值区间[-1, 1]。多维向量之间的余弦值计算如下 c o s Θ ∑ i 1 n ( x i × y i ) ∑ i 1 n x i 2 ∑ i 1 n y i 2 cos\Theta\frac{\sum_{i1}^{n}(x_i\times y_i) }{\sqrt{\sum_{i1}^{n} x_i^2} \sqrt{\sum_{i1}^{n} y_i^2}} cosΘ∑i1nxi2 ∑i1nyi2 ∑i1n(xi×yi) 以两个点 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)、 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)为例 c o s Θ ( ( x 1 , y 1 ) , ( x 2 , y 2 ) ) x 1 x 2 y 1 y 2 x 1 2 y 1 2 × x 2 2 y 2 2 cos\Theta((x_1,y_1), (x_2,y_2))\frac{x_1x_2y_1y_2}{\sqrt{x_1^2y_1^2}\times\sqrt{x_2^2y_2^2} } cosΘ((x1,y1),(x2,y2))x12y12 ×x22y22 x1x2y1y2 余弦距离1 - 余弦相似度 One-Hot编码的作用 之所以使用One-Hot编码是因为在很多机器学习任务中特征并不总是连续值也有可能是离散值如上表中的数据。将这些数据用数字来表示执行的效率会高很多。
常见的计算模型
总览
在机器学习中常见的模型包括
线性回归模型 (Linear Regression)与逻辑回归模型 (Logistic Regression)主要用于预测问题例如对数值型数据进行预测。其主要目的是根据输入数据的特征预测出一个数值型的输出结果。决策树模型 (Decision Tree)一种监督学习算法用于分类和回归分析。在分类问题中决策树将根据数据的特征将数据分为不同的类别在回归分析中决策树用于预测连续值。随机森林模型 (Random Forest)经典的Bagging方法是一种基于决策树集成的机器学习算法通常用于分类和回归问题。它通过在数据集中随机选择子集和特征构建多个决策树然后将它们合并来提高预测准确性降低过拟合的风险。它的优点包括易于实现和解释、对缺失数据和异常值具有鲁棒性、准确率高等。支持向量机模型 (Support Vector Machine)是一种监督学习算法主要用于分类问题。它的目标是找到一个最优的超平面可以是线性或非线性的能够最大化不同类别之间的距离从而对数据进行分类。贝叶斯分类器模型 (Naive Bayes)利用因素之间的依赖关系来进行预测类别其分类器模型不需要大量的数据和计算资源能够高效地处理大量高维数据集。此外贝叶斯分类器模型基于概率模型因此它很容易被理解和解释利于对模型进行优化和调整。同时贝叶斯分类器还可以处理缺失数据具有较强的鲁棒性和可靠性。K近邻模型 (K-Nearest Neighbor)是一种分类算法通过找到与待分类样本特征最接近的K个训练样本根据这K个样本所属类别的多数决定待分类样本的类别。KNN算法的主要优点是简单易懂易于实现但在处理大规模数据集时比较耗时。神经网络模型 (Neural Network)基于神经元的计算模型通过引入sigmoid激活函数使其拥有非线性的表达能力解决许多复杂的机器学习问题如图像和语音识别。其中包括卷积神经网络模型 (Convolutional Neural Network)、循环神经网络模型 (Recurrent Neural Network)、生成式对抗网络Generative Adversarial NetworkGAN等等。不同类型的神经网络模型有各自的应用场景和侧重点选择合适的模型可以在特定问题上获得更好的效果。
线性回归模型与逻辑回归模型
线性回归模型
模型假设线性模型假设因变量和自变量之间存在线性关系。模型定义线性回归能将输入数据通过对各个维度的特征分配不同的权重来进行表征使得所有特征协同作出最后的决策。注意这种表征方式是拟合模型的输出结果适用于其预测值为连续变量其预测值在整个实数域中的情况而不可以直接用于分类。一般表达式 h θ ( x ) θ T X θ 0 θ 1 x 1 ⋯ θ n x n h_\theta (x)\theta ^TX\theta _0\theta _1x_1\cdots \theta _nx_n hθ(x)θTXθ0θ1x1⋯θnxn 其中求解参数 θ \theta θ的代价函数是均方误差Mean Square Error, MSE代价函数 J θ 1 2 m ∑ i 1 m ( h θ ( x i ) − y i ) 2 J_\theta \frac{1}{2m}\sum_{i1}^{m}(h_\theta (x^i)-y^i)^2 Jθ2m1i1∑m(hθ(xi)−yi)2特点由于MSE对特征值的范围比较敏感导致线性回归模型对离群点非常敏感。一般情况下对会采用特征工程对特征进行归一化处理。在实际参数求解时涉及到误差估计所以求解时用的最小二乘法。
逻辑回归模型 模型假设自变量的变化对因变量的影响是通过一个逻辑函数sigmoid函数体现的。 定义逻辑回归是以线性回归为理论支持的但是逻辑回归通过Sigmoid函数又称对数几率函数Logistic Function引入了非线性因素因此在线性回归基础上主要解决分类问题。 一般表达式 h θ ( x ) g ( θ T x ) , g ( z ) 1 1 e − z h_\theta (x)g(\theta ^Tx),g(z)\frac{1}{1e^{-z}} hθ(x)g(θTx),g(z)1e−z1 其中 g ( z ) g(z) g(z)表示激活函数【激活函数是用来加入非线性因素的提高神经网络对模型的表达能力解决线性模型所不能解决的问题。】这里求解参数 θ \theta θ的代价函数是交叉熵函数。 交叉熵函数的定义 J θ 1 m ∑ i 1 m ( − y i l o g ( h θ ( x i ) ) − ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) J_\theta \frac{1}{m}\sum_{i1}^{m}(-y^ilog(h_\theta (x^i))-(1-y^i)log(1-h_\theta (x^i))) Jθm1i1∑m(−yilog(hθ(xi))−(1−yi)log(1−hθ(xi))) 用**极大似然估计Maximum Likelihood EstimationMLE**求解的最优参数 KaTeX parse error: Undefined control sequence: \sideset at position 10: \hat{w}\̲s̲i̲d̲e̲s̲e̲t̲{}{}{argmax}_w\… 观察上面两式可知 M L E ( m a x ) MLE(max) MLE(max)等价于 J θ ( m i n ) J_\theta(min) Jθ(min) 特点逻辑回归模型可以视为加了Sigmoid的线性模型。至于为什么要使用Sigmoid函数中的对数几率函数这涉及到伯努利分布的指数族形式最大熵理论等。这里的参数估计是通过最优化方法来确定最佳拟合数据的模型参数。在二分类问题中负对数似然函数正是我们所说的交叉熵损失函数。然而交叉熵损失函数的构建并非只能通过似然函数。
区别
线性回归和逻辑回归都是广义线性回归模型的特例。他们俩是兄弟关系都是广义线性回归的亲儿子线性回归只能用于回归问题逻辑回归用于分类问题二分类、多分类线性回归无联系函数或不起作用逻辑回归的联系函数是对数几率函数属于Sigmoid函数。线性回归使用最小二乘法作为参数估计方法逻辑回归使用极大似然法作为参数估计方法
朴素贝叶斯分类器模型 (Naive Bayes)
模型假设假设特征之间是条件独立的即给定目标值时一个特征的存在不会影响其他特征的存在。模型定义是基于贝叶斯定理和特定假设特征之间相互独立的一种分类方法。一般表达式 P ( y ∣ x ) p ( x ∣ y ) ⋅ p ( y ) p ( x ) P(y|x)\frac{p(x|y)\cdot p(y)}{p(x)} P(y∣x)p(x)p(x∣y)⋅p(y) 其中 P ( y ) P(y) P(y)是先验概率【是指在没有考虑任何特征的情况下类别出现的概率。】 P ( x ∣ y ) P(x|y) P(x∣y)是样本 x x x相对于类别 y y y的条件概率【也成为似然likelihood这里样本通常有很多 x x 1 ⋯ x n xx_1\cdotsx_n xx1⋯xn表示多个特征】 p ( x ) p(x) p(x)是与 y y y无关的归一化因子。由于求解以上公式复杂度高因此朴素贝叶斯给出了一个神假设假设特征之间是独立的。所谓 “朴素” 二字就体现在这个地方但是根据我们的常识也知道样本的特征之间几乎不太可能是相互独立的因此朴素贝叶斯效果肯定不好但结果却恰恰相反无数的实验证明朴素贝叶斯对于文本分类任务效果都很好。特点 朴素贝叶斯是一种典型的生成式模型生成式模型实际上是建立一个多模型有多少类就建多少个模型然后算出新样本在每个类别的后验概率然后看哪个最大就把新样本分到哪个类中。而判别式模型只有一个模型由数据直接学习 P ( y ∣ x ) P( y ∣ x ) P(y∣x) 来预测 y y y。朴素贝叶斯模型不需要训练而是直接用新样本去数据集训练集去算后验概率然后分类。在朴素贝叶斯中对于连续值假设其符合高斯分布。 举例计算步骤转自朴素贝叶斯模型naive bayes
决策树模型 模型假设每个决策节点只考虑一个特征并基于特征对样本进行划分。模型定义决策树是一个预测模型它代表的是对象属性与对象值之间的一种映射关系。决策树通过树状结构它的每一个叶节点对应着一个分类非叶节点对应着在某个属性上的划分根据样本在该属性上的不同取值将其划分成若干个子集。模型建立最新的CART算法既可以生成回归树解决连续变量的预测又可以生成分类树解决离散变量的分类。【回归树生成的核心思想】预测误差最小化所以我们的目的就是找到一个分界点以这个点作为分界线将训练集D分成两部分D1和D2并且使数据集D1和D2中各自的平方差最小。【分类树生成的核心思想】通过计算信息增益/Gini系数来生成特征的重要等级核心思想是选取重要的能提供更多信息信息增益大、数据一致性强不纯度低的特征来建树。特点 【优点】简单的理解和解释树木可以可视化需要很少的数据准备其他技术通常需要归一化。【缺点】决策树学习者可以创建不能很好的推广数据的过于复杂的数因为会产生过拟合。而随机森林在此基础上克服了这个缺点。
随机森林模型 模型假设【其模型假设与决策树相似但存在一些不同之处。】随机森林模型假设在样本和特征上存在一定的随机性即每个决策树只用部分样本和部分特征进行训练以减少过拟合的风险。需要注意的是随机森林的模型假设相较于单一决策树更为健壮不需要对样本的特征之间是否相互独立做出假设。因此随机森林模型可以处理变量间存在一定相关性的情形。模型定义随机森林是由很多决策树构成的不同决策树之间没有关联。既可以用于分类问题也可用于回归问题。当我们进行分类任务时新的输入样本进入就让森林中的每一棵决策树分别进行判断和分类每个决策树会得到一个自己的分类结果决策树的分类结果中哪一个分类最多那么随机森林就会把这个结果当做最终的结果。模型建立 一个样本容量为N的样本有放回的抽取N次每次抽取1个最终形成了N个样本。这选择好了的N个样本用来训练一个决策树作为决策树根节点处的样本。当每个样本有M个属性时在决策树的每个节点需要分裂时随机从这M个属性中选取出m个属性满足条件m M。然后从这m个属性中采用某种策略比如说信息增益来选择1个属性作为该节点的分裂属性。决策树形成过程中每个节点都要按照步骤2来分裂很容易理解如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性则该节点已经达到了叶子节点无须继续分裂了。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。按照步骤1~3建立大量的决策树这样就构成了随机森林了。 特点 【优点】它可以处理很高维度特征很多的数据并且不用降维无需做特征选择它可以判断特征的重要程度可以判断出不同特征之间的相互影响不容易过拟合训练速度比较快容易做成并行方法实现起来比较简单对于不平衡的数据集来说它可以平衡误差。如果有很大一部分的特征遗失仍可以维持准确度。【缺点】随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合对于有不同取值的属性的数据取值划分较多的属性会对随机森林产生更大的影响所以随机森林在这种数据上产出的属性权值是不可信的。
支持向量机模型 (Support Vector Machine) 模型假设
假设所有的样本都在高维空间中并且样本能够被一个超平面正确地分开。假设最优的超平面是距离两侧最近的样本点最大化的线性分类器。假设线性不可分的样本可以通过在高维空间中进行映射使它们在高维空间中线性可分。
模型定义是一种二分类模型它的基本模型是定义在特征空间上的间隔最大的线性分类器间隔最大使它有别于感知机感知机找到任意一个使数据点可以线性可分的平面。支持向量算法的目的是找到距离超平面间隔最大的点这些点被称为支持向量。SVM还包括核技巧把当前样本点通过特征映射如高斯核将特征映射到高维空间进行计算这使它成为实质上的非线性分类器。线性支持向量机学习算法与 非线性SVM算法详细推导过程见https://www.zhihu.com/tardis/zm/art/31886934?source_id1005。特点
【优点】可以解决高维问题即大型特征空间解决小样本下机器学习问题能够处理非线性特征的相互作用无局部极小值问题相对于神经网络等算法无需依赖整个数据找到支持向量是关键泛化能力比较强【缺点】当观测样本很多时效率并不是很高对非线性问题没有通用解决方案有时候很难找到一个合适的核函数对于核函数的高维映射解释力不强尤其是径向基函数常规SVM只支持二分类 对缺失数据敏感
K近邻模型 模型假设样本之间的距离度量是可用的通常使用欧氏距离、曼哈顿距离等方法来度量。模型定义是一种基于实例的学习方法在提前定义好距离与K值的前提下对于任意一个新的样本将其分类为与该样本距离最近的K个样本中类别最多的那个类别。当k1时表示最近邻算法。k近邻法 三个基本要素k 值的选择、距离度量及分类决策规则。**K值选择**通过交叉验证将样本数据按照一定比例拆分出训练用的数据和验证用的数据比如64拆分出部分训练数据和验证数据从选取一个较小的 K 值开始不断增加 K 的值然后计算验证集合的方差最终找到一个比较合适的 K 值。算法步骤 计算训练样本和测试样本中每个样本点的距离常见的距离度量有欧式距离马氏距离等对上面所有的距离值进行排序选前k个最小距离的样本根据这k个样本的标签进行投票得到最后的分类类别 特点
【优点】不需要训练简单易用。相比其他算法KNN 算是比较简洁明了的算法即使没有很高的数学基础也能搞清楚它的原理。对异常值不敏感。【缺点】没有明显的训练过程它是 懒惰学习的典型代表它在训练阶段所做的仅仅是将样本保存起来如果训练集很大必须使用大量的存储空间训练时间开销为零KNN必须对每一个测试点来计算到每一个训练数据点的距离 并且这些距离点涉及到所有的特征当数据的维度很大数据量也很大的时候KNN的计算会成为诅咒
神经网络模型
这个模型中包含了许多不同的网络模型以下将根据他们之间的应用侧重来浅显的解析概念。
卷积神经网络CNN
适用场景基于图像的任务。目标事物的特征主要体现在像素与像素之间的关系。而视频是图像的叠加所以同样擅长处理视频内容。例如目标检测、目标分割等等特点 得益于卷积核的加权池化能够有效的将大数据量的图片姜维成小数据量。卷积的特点局部感知、参数共享、多核卷积神经网络的平移不变性。简单地说卷积最大池化约等于局部平移不变性。用类似视觉的方式保留了图像的特征当图像做翻转旋转或者变换位置时它也能有效的识别出来是类似的图像。 基本原理典型的 CNN 由3个部分构成
卷积层负责提取图像中的局部特征池化层又称下采样可以大幅降低参数量级(降维)防止过拟合。之所以这么做的原因是因为即使做完了卷积图像仍然很大因为卷积核比较小所以为了降低数据维度就进行下采样。池化层相比卷积层可以更有效的降低数据维度这么做不但可以大大减少运算量还可以有效的避免过拟合。全连接层类似传统神经网络的部分用来输出想要的结果。经过卷积层和池化层降维过的数据全连接层才能”跑得动”不然数据量太大计算成本高效率低下。
存在的问题
反向传播算法并不是一个深度学习中的高效算法因为它对数据量的需求很大。如果是检测目标从图片左上角到右下角之后且相对位置发生变化时池化后的特征变化剧烈以至于影响神经元权重导致不正确的识别。需要将数据集归一化。不同的尺寸混合在一起难以训练。池化层的存在会导致许多非常有价值的信息的丢失同时也会忽略掉整体与部分之间的关联。没有记忆功能对于视频的检测是基于靠单帧的图片检测完成的。
改进在CNN中增加模型对图像中的像素位置感知。例如CoordConv、Transformer。
循环神经网络RNN 适用场景需要处理「序列数据 – 一串相互依赖的数据流」如文字、音频等序列数据。特点如上图可知“”所生成的特征包含了以往词的特征表示前面的所有输入都会对未来的输出产生影响。并且随着序列的推进越以前的数据对当前的影响越小。存在的问题 短期的记忆影响较大如橙色区域但是长期的记忆影响就很小如黑色和绿色区域这就是 RNN 存在的短期记忆问题RNN 有短期记忆问题无法处理很长的输入序列训练 RNN 需要投入极大的成本 改进LSTMLong Short Term Memory (长短期记忆) 适合处理和预测时间序列中间隔和延迟长的重要事件。
模型评估
过拟合和欠拟合 概念解析 过拟合 模型在训练集上表现很好测试集上表现很差。导致模型泛化性能下降。欠拟合模型对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。 原因和解决方法 过拟合从数据的角度上看原来的训练数据本身就缺乏多样性所以可以增加数据量使用多种数据增强方法从模型特征上看因为特征对数据中各种细节都拟合了所以可以减少模型特征来缓解引入正则化避免当特征很多的时候某些特征占主导。欠拟合从模型特征上看特征对数据中的特点没学到所以通过特征组合等增加特征维度使用Boosting方法把当前弱模型进行组合成一个强模型。 正则化L1正则化和L2正则化 ∥ x ∥ p ( ∑ i 1 n ∣ x i ∣ p ) 1 p \left \| x \right \| _p(\sum_{i1}^{n}\left | x_i \right |^p )^\frac{1}{p} ∥x∥p(i1∑n∣xi∣p)p1 L1正则化服从拉普拉斯分布 当 p 1 p1 p1该公式表示L1范数表示向量中所有元素的绝对值之和。 作用L1正则化可以产生稀疏权值矩阵即产生一个稀疏模型可以保证模型的稀疏性也就是某些参数等于0可以用于特征选择实际应用线形回归的L1正则化通常称为Lasso回归它和一般线形回归的区别是在损失函数上增加了一个L1正则化的项L1正则化的项有一个常数系数alpha来调节损失函数的均方差项和正则化项的权重。Lasso回归可以使一些特征的系数变小甚至还是一些绝对值较小的系数直接变为0增强模型的泛化能力。 L2正则化服从高斯分布可以保证模型的稳定性也就是参数的值不会太大或太小。。 实际应用线形回归的L2正则化通常称为Ridge回归它和一般线形回归的区别是在损失函数上增加了一个L2正则化的项。Ridge回归岭回归在不抛弃任何一个特征的情况下缩小了回归系数使得模型相对而言比较的稳定但和Lasso回归相比这会使得模型的特征留的特别多模型解释性差。