机器学习和深度学习

一.AI&ML&DL
1.机器学习是一种实现人工智能的方法,深度学习受到了人工神经网络的影响,驱动了机器学习的发展,是机器学习的一个子集。

二.AL&DL的区别
1.数据量
深度学习比较适合数据量比较大的情况,而传统的机器学习的话在小数据量的情况下效果会好一点
2.硬件依赖
深度学习算法需要进行大量的矩阵运算,需要高端的硬件设备,像GPU
3.特征工程
在机器学习方法中,几乎所有的特征都需要通过行业专家在确定,然后手工就特征进行编码。然而深度学习算法试图自己从数据中学习特征
4.解决问题的方式
传统的机器学习会将问题进行拆分,逐个解决然后进行合并,而深度学习则不需拆分,集中解决
5.执行时间
深度学习因为有大量的参数需要训练,所需的时间会更长
6.可解释性
深度学习模型虽然有时候能达到不错的效果,但是结果却很难解释,传统的机器学习像决策树这些的解释性会更强

三.如何选择合适的模型
1.对数据的认知
1.了解数据
查看总结统计和数据可视化的结果
百分比可以帮助你识别大多数数据的范围
平均数和中位数可以描述集中趋势
相关系数可以指出强的关联性
2. 数据可视化
箱形图可以识别出异常值
密度图和直方图可以显示出数据的散布情况
散点图可以描述二元关系
3.数据清洗
处理缺失值。缺失的数据对于某些模型的影响比对其它模型更大。即使是对于那些被用于处理缺失数据的模型来说,它们也可能对缺失数据很敏感(某些变量的缺失数据可能导致预测性能变差)
4.选择处理异常值的方法
有些模型对异常值的敏感性比其它模型要低。通常而言,树模型对于异常值的存在不太敏感。然而回归模型、或者任何试图使用方程的模型都会受到异常值的严重影响。

2.对问题进行分类
所有的问题可以分为监督学习,无监督学习和强化学习
强化学习算法针对每个数据点做出决策,在机器人学中比较常见,传感器每读取一个数据,算法必须决定机器人下一步该做什么。
[1]依据输入数据进行分类,如果我们的数据有标签,这就是一个监督学习问题;如果数据没有标签就是无监督学习;如果我们想通过与环境交互来优化目标函数,这是强化学习。
[2]根据输出结果分类:如果模型输出结果是一个数值,这是回归问题;如果输出结果是一个类别,这是分类问题;如果输出结果是一组输入数据,那这是聚类问题

3.考虑要满足的约束条件
[1]能够存储数据的容量有多大
[2]模型训练和预测的时间

4.寻找算法
[1]模型是否满足业务目标
[2]模型需要多少数据预处理工作
[3]模型有多准确
[4]模型的可解释性如何
[5]模型运行的速度有多快:构造模型需要多久?模型做出预测需要多长时间?
[6]模型的可伸缩性如何

四.各种算法的比较
1.线性回归
可以预测一个正在运行过程的未来值,但是如果特征之间存在多重共线性时就会不太稳定,不能拟合非线性数据
[1]多重共线性的检测
回归系数的正负号与预先估计的相反
相关系数:两个特征之间的相关系数如果高于0.8,可以认为存在共线性
容忍度与方差扩大因子(VIF):一般认为容忍度小于0.1时,共线性严重;VIF等于容忍度的倒数
[2]多重共线性的解决
PCA :保留主要特征,忽略次要特征
增加样本数量
训练模型时加入L2正则,可以避免模型参数过于发散无法收敛的情况
改变特征的表现形式,像取对数等等
逐步回归分析
a.基本思想是通过相关系数r、拟合优度R2和标准误差三个方面综合判断一系列回归方程的优劣,从而得到最优回归方程。具体方法
分为两步:
第一步,先将被解释变量y对每个解释变量作简单回归:
第二步,将其他解释变量逐一引入到基本回归方程中,建立一系列回归方程,根据每个新加的解释变量的标准差和复相关系数来考察其对每个回归系数的影响,一般根据如下标准进行分类判别:
1.如果新引进的解释变量使R2得到提高,而其他参数回归系数在统计上和经济理论上仍然合理,则认为这个新引入的变量对回归模型是有利的,可以作为解释变量予以保留。
2.如果新引进的解释变量对R2改进不明显,对其他回归系数也没有多大影响,则不必保留在回归模型中。
3.如果新引进的解释变量不仅改变了R2,而且对其他回归系数的数值或符号具有明显影响,则认为该解释变量为不利变量,引进后会使回归模型出现多重共线性问题

2.KNN
优点
[1]对数据没有假设,准确度高
[2]可用于非线性分类
[3]既可以用来做分类,也可以用来做回归
缺点
[1]计算量大,需要大量内存
[2]样本类别不均衡问题

3.LR(逻辑回归)
优点
[1]将线性回归的不确定范围的连续值映射到了(0,1)范围内,成了一个概率预测问题,对需要求分类概率的场景适用
[2]参数代表每个特征对输出的影响,可解释性强。
实施简单,非常高效(计算量小、存储占用低),可以在大数据场景中使用。
[3]可扩展,可以使用online learning的方式更新轻松更新参数,不需要重新训练整个模型。
缺点
[1]容易欠拟合,分类精度不高。(概率范围比较小,导致很多区间的变量变化对结果没有什么影响)
[2]因为它本质上是一个线性的分类器,对于非线性特征需要进行转换。
[3]特征空间很大时,性能不好。容易欠拟合,精度不高

3.决策树
优点
[1]比较适合处理有缺失属性的样本,能够处理不相关的特征
[2]可解释性强
[3]短时间对大型数据可以做出不错的预测
缺点
[1]不支持在线学习,当新的样本出现需要重新构建决策树
[2]容易发生过拟合,可以使用随机森林
[3]忽略了特征之间的相关性
[4]对于各类别样本数量不一致的情况,信息增益偏向于那些有更多特征的数值

4.随机森林
优点
[1]可以处理高维数据,不用进行特征选择(特征子集是随机选择)
[2]模型的泛化能力较强
[3]训练模型时速度快,成并行化方式,即树之间相互独立
[4]模型可以处理不平衡数据,平衡误差
[5]最终训练结果,可以对特征排序,选择比较重要的特征
[6]对缺失值、异常值不敏感
[7]模型训练结果准确度高
缺点
[1]随机森林在某些噪音较大的分类或回归问题上会过拟合
[2]取值划分较多的属性会对随机森林产生更大的影响
适用场景
[1]数据维度相对低(几十维),准确率要求比较高

5.SVM
一种在模式识别和分类问题中被广泛应用的监督机器学习技术——当你的数据恰好有两类时
优点
[1]可以解决小样本情况下的机器学习问题
[1]可以解决特征空间很大的情况
[2]可以解决非线性问题
[3]无需依赖整个数据
处理时提前对数据进行归一化
缺点
[1]当观测样本很多时,效率不高
[2]对于非线性问题很难找到一个合适的核函数
[3]对缺失数据敏感

6.NB
对于给出的待分类项,求出在这个特征空间上属于每个类别的概率,选出概率最大的类别作为结果
优点
[1]有比较坚实的数学基础,分类比较稳定
[2]算法比较简单,常用于文本分类
[3]对小规模的数据表现比较好,可以处理多分类问题,进行增量训练
缺点
[1]需要计算先验概率
[2]假设特征之间相互独立

7.adboost
每个模型都是基于上一次模型的错误率来建立的,过分关注分错的样本,而对正确分类的样本减少关注度,逐次迭代之后,可以得到一个相对较好的模型
优点
[1]adaboost是一种有很高精度的分类器。
[2]可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
[3]当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单。
[4]不用做特征筛选。
[5]不容易发生overfitting
缺点
对异常值比较敏感

8.xgboost
[1]高准确率高效率高并发,支持自定义损失函数,既可以用来分类又可以用来回归
[2]可以像随机森林一样输出特征重要性,因为速度快,适合作为高维特征选择的一大利器
[3]在目标函数中加入正则项,控制了模型的复杂程度,可以避免过拟合
[4]支持列抽样,也就是随机选择特征,增强了模型的稳定性
[5]对缺失值不敏感,可以学习到包含缺失值的特征的分裂方向

9.7. 人工神经网络的优缺点
优点:
[1]分类的准确度高;
[2]并行分布处理能力强,分布存储及学习能力强,
[3]对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系;
缺点:
[1]神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;
[2]不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
[3]学习时间过长,甚至可能达不到学习的目的。

五.回归&分类&聚类算法
1.回归
[1]线性回归
[2]Ridge回归
适用于模型容易出现过拟合,或者特征之间存在多重共线性的情况
[3]LassO回归
Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型
[4]KNN
[5]决策树(目标值为连续值)
[6]SVR(找到一个回归平面,让一个集合的所有数据到该平面的距离最近)
2.分类
[1]LR
[2]Softmax
[3]KNN
[4]决策树
[5]SVM
[6]NB
3.聚类
[1]层次聚类
首先我们将每个数据点视为一个单一的簇,然后选择一个测量两个簇之间距离的度量标准
在每次迭代中,我们将两个具有最小average linkage的簇合并成为一个簇
重复以上步骤直到所有的数据点合并成一个簇,然后选择我们需要多少个簇
[2]划分聚类
K-Means
2.1.K值如何确定
1)最简单的方法 K=sqrt(n/2)
1)手肘法,核心指标是SSE(误差平方和)
手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐
渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚
类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是
说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数
2)间隔统计量Gap statistic公式计算
3)轮廓系数法
轮廓系数考虑了样本的簇内凝聚度和簇间分离度,轮廓系数越接近1,表示聚类效果越好
4)适用Canopy先进行粗略的聚类,得到K的值
就是对数据进行不断遍历,T2<dis<T1的可以作为中心名单,dis<T2的认为与canopy太近了,以后不会作为中心点,从list中删除
2.2.初始质心的选择
1)多次运行,每次使用一组不同的随机初始质心,然后选取具有最小SSE(误差的平方和)的簇集。
2)先使用层次聚类进行聚类。从层次聚类中提取K个簇,并用这些簇的质心作为初始质心。该方法通常很有效,但仅对下列情况有效:(1)样本相对较小,例如数百到数千(层次聚类开销较大);(2)K相对于样本大小较小
3)K-Means++。随机地选择第一个点,或取所有点的质心作为第一个点。然后,对于每个后继初始质心,选择离已经选取过的初始质心最远的点。具体步骤如下:
Step 1:从数据集中随机选取一个样本点作为初始聚类中心C1;
Step 2:首先计算每个样本与当前已有聚类中心之间的最短距离(即最近的聚类中心的距离),用D(x)表示;接着计算每个样本点被选为下一个聚类中心的概率(某个样本D(x)的平方/所有样本距离的平方和)。最后,按照轮盘法选择出下一个聚类中心;
Step 3:重复第2步直到选择出K个聚类中心

[3]密度聚类(DBSCAN)
首先确定半径r和minPoints. 从一个没有被访问过的任意数据点开始,以这个点为中心,r为半径的圆内包含的点的数量是否大于或等于minPoints,如果大于或等于minPoints则改点被标记为central point,反之则会被标记为noise point。
重复以上步骤,如果一个noise point存在于某个central point为半径的圆内,则这个点被标记为边缘点,反之仍为noise point。直到所有的点都被访问过。
优点:不需要知道簇的数量
缺点:需要确定距离r和minPoints

[4]谱聚类
谱聚类算法建立在谱图理论基础上,可以在任意形状的样本空间上聚类且收敛于全局最优解
谱聚类算法将数据集中的每个对象看作是图的顶点V,将顶点间的相似度量化作为相应顶点连接边E的权值,这样就得到一个基于相似度的无向加权图G(V, E),于是聚类问题就可以转化为图的划分问题。基于图论的最优划分准则就是使划分成的子图内部相似度最大,子图之间的相似度最小
具体的实现方法如下:
1) 构建表示对象集的相似度矩阵W;
2) 通过计算相似度矩阵或拉普拉斯矩阵的前k个特征值与特征向量,构建特征向量空间;
3) 利用K-means或其它经典聚类算法对特征向量空间中的特征向量进行聚类

猜你喜欢

转载自blog.csdn.net/ys_1991/article/details/88354787
今日推荐