机器学习常用算法

  1. 云栖社区>
  2. 博客>
  3. 正文

机器学习常用算法

邱收 2017-07-19 14:59:00 浏览1128
展开阅读全文
算法名称 算法描述 算法类型 用途 典型算法 特点 算法使用前提条件 运用场景 随笔
贝叶斯算法 给予贝叶斯定理与特征条件独立假设的分类方法 监督型 分类 朴素贝叶斯、高斯朴素贝叶斯、多种名义朴素贝叶斯、平均单依赖估计、BBN、BN 各特征相互独立  1.文本分类
2.疾病预测
3.检测SNS社区中不真实账号
4.垃圾邮件过滤
对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别
决策树 利用训练数据集来构造决策树,用构造好的决策树对将来的新数据进行分类 监督型 分类 ID3、ID4、ID5、C4.0、C4.5、C5.0、CART 可用于二元或者多元分类 变量只能数值型、名称型 1.金融行业用决策树做贷款风险评估
2.保险行业用决策树做推广预测
3.医疗行业用决策树生成辅助诊断处置模型
4.用户分级评估
5.分析对某种响应可能性影响最大的因素,比如判断具有什么特征的客户流失概率更高
6.为其他模型筛选变量。决策数找到的变量是对目标变量影响很大的变量。所以可以作为筛选变量的手段。
其核心概念中涉及信息熵、信息增益,在构造决策树时,实际上是选择信息增益Max的属性作为决策节点。算法C4.5引入来信息增益率的概念
支持向量机 svm的基本想法就是求解能正确划分训练样本并且其几何间隔最大化的超平面 监督型 分类 线性支持向量机既可以解决线性可分问题,又可以解决线性不可分问题 模式识别领域中的文本识别,中文分类,人脸识别等;
工程技术和信息过滤
支持向量机模型是这样建立的:获取训练输入,将其映射至多维空间,使用回归算法找到可最佳分离两类输入数据的超平面(超平面是一个在 n 维空间中将空间划分为两个半空间的一个平面)。一旦支持向量机完成了受训,它就可以评估有关划分超平面的新输入数据,并将划分为其中一类,在SVM分类决策中起决定作用的是支持向量
聚类算法 聚类将数据集中的样本划分为若干个不相交的子集,每个子集可能对应一个潜在的类别,这些类别对聚类算法是未知的 无监督 聚类 K-means,LVQ,高斯混合聚类,密度聚类,层次聚类 没有训练集 商业:刻画不同的客户群特征;细分市场;
生物:基因分类
保险:保险单持有者分组
电子商务:相似浏览行为客户聚类
线性回归 线性回归的目的在于找出某一变量与其他多个变量之间的定量关系,并且是线性关系 监督型 回归 LinearRegression,Ridge Regression,RidgeCV,Lasso Regression
,lasticNet,
特征与结果之间是线性关系 1.机场客流量预测
2.网约车出行流量与测
3.股价走势预测
4.中国人口增长预测
线性回归模型太简单,如果数据呈线性关系可采用
逻辑回归 它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。 监督 分类 LogisticRegression 常用来二分类 1.预测某一种情况出现的概率
2.二分类
3.多分类
逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便;
同样的线性分类情况下,如果异常点较多的话,无法剔除,首先LR,LR中每个样本都是有贡献的,最大似然后会自动压制异常的贡献
神经网络 人工神经网络算法模拟生物神经网络,是一类模式匹配算法。一般分为输入层、隐藏层、输出层,隐藏层的层数根据算法需要来定,层数越多,模型越复杂,计算能力要求越高。对于输入层和隐藏层,每一个神经元代表输入,经过一系列计算得到输出,将输出作为下一层神经元的输入,以此类推,直到传递到输出层。 监督 分类 感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ),深度学习 (1)可以充分逼近任意复杂的非线性关系;
(2)所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错性;
(3)采用并行分布处理方法,使得快速进行大量运算成为可能;
(4)可学习和自适应不知道或不确定的系统; 
神经网络的应用非常多:
1.OCR
2.销售量的非线性预测
3.计算机智能控制
4.图像的处理
5.优化算法方面等等语音搜索
6.文本到语音
7.垃圾邮件筛选(异常情况探测)
8.欺诈探测
9.推荐系统(客户关系管理、广告技术、避免用户流失
神经网络常用在模式识别这一块,机器学习火了之后许多人在不同的领域做了尝试。
深度学习 深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。 从下而上是非监督的,从下而上是监督的。一般归为无监督 分类、回归 Deep Boltzmann Machine,Deep Belief Networks,Stacked Denoising Auto-Encoders,CNN,RNN,LSTM (1)需要大量数据进行训练
(2)训练要求很高的硬件配置
(3)模型处于「黑箱状态」,难以理解内部机制
(4)元参数(Metaparameter)与网络拓扑选择困难。
数据量要大 1.语音识别
2.图像识别
3.人脸识别
4.行人检测
5.人体行为检测
3.推荐系统
4.自然语言处理
5.智能客服
深度学习自从alphaGo火了之后,很多人都开始做了尝试。现在一些深度学习的框架也非常流行,比如:MXNet, Caffe, TensorFlow, Torch, Theano。
随机森林 顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。顾名思义, 监督 主要是分类 随机森林算法 随机森林对多元公线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用;
a. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合
b. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力
c. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化
d. 可生成一个Proximities=(pij)矩阵,用于度量样本之间的相似性: pij=aij/N, aij表示样本i和j出现在随机森林中同一个叶子结点的次数,N随机森林中树的颗数
e. 在创建随机森林的时候,对generlization error使用的是无偏估计
f. 训练速度快,可以得到变量重要性排序(两种:基于OOB误分率的增加量和基于分裂时的GINI下降量
g. 在训练过程中,能够检测到feature间的互相影响
h. 容易做成并行化方法
i. 实现比较简单
采样(有放回的采样)与完全分裂(叶子节点要么无法再分裂,要么要么里面的所有样本的都是指向的同一个分类) 1.根据花瓣的长,宽,花萼的长宽。来预测植株的种类 在集成学习中的两个主要算法
Adaboost 这就是Adaboost的结构,最后的分类器YM是由数个弱分类器(weak classifier)组合而成的,相当于最后m个弱分类器来投票决定分类,而且每个弱分类器的“话语权”α不一样。 监督 主要是分类 Adaboost 和随机森林有点像,区别在于随机森林是并行,Adaboost是串行,上一个分类器的结果放入下一个分类器 1)用于二分类或多分类的应用场景

2)用于做分类任务的baseline--无脑化,简单,不会overfitting,不用调分类器

3)用于特征选择(feature selection)

4)Boosting框架用于对badcase的修正--只需要增加新的分类器,不需要变动原有分类器
KNN(K近邻算法) KNN是通过测量不同特征值之间的距离进行分类。它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 监督 分类 KNN 优点:
1.简单,易于理解,易于实现,无需估计参数,无需训练;
2. 适合对稀有事件进行分类;
3.特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。
缺点:
1.样本不平衡时,抗造能力差
2.计算量大
事先要有正确样本 1.约会网站的数据分类
2.手写数字识别
这个算法比较简单,完全依赖于数据,没有数学模型,所以应用在很简单的模型

网友评论

登录后评论
0/500
评论
邱收
+ 关注