1.机器学习算法快速选择
来源:互联网 发布:linux介绍 编辑:程序博客网 时间:2024/06/10 03:48
机器学习算法辣么多,对于小白的我,剪不断理还乱,特整理一些帮助我快速理解的图片
机器学习算法细分
- 1.很多算法是一类算法,而有些算法又是从其他算法中延伸出来的- 2.从两个方面分类 - 2.1学习的方式 监督式学习 常见应用场景如分类问题和回归问题 常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network) 非监督式学习 应用场景包括关联规则的学习以及聚类等 常见算法包括Apriori算法以及k-Means算法 半监督式学习 应用场景包括分类和回归 算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等 强化学习 应用场景包括动态系统以及机器人控制 常见算法包括Q-Learning以及时间差学习(Temporal difference learning) - 2.2算法的类似性 回归算法 回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法 最小二乘法(Ordinary Least Square)Scatterplot Smoothing) 逻辑回归(Logistic Regression) 逐步式回归(Stepwise Regression) 多元自适应回归样条(Multivariate Adaptive Regression Splines) 本地散点平滑估计(Locally Estimated 基于实例的算法 常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配 k-Nearest Neighbor(KNN) 学习矢量量化(Learning Vector Quantization, LVQ) 自组织映射算法(Self-Organizing Map , SOM) 正则化方法 其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚 Ridge Regression Least Absolute Shrinkage and Selection Operator(LASSO) 弹性网络(Elastic Net) 决策树学习 决策树模型常常用来解决分类和回归问题 分类及回归树(Classification And Regression Tree, CART) ID3 (Iterative Dichotomiser 3) C4.5 Chi-squared Automatic Interaction Detection(CHAID) Decision Stump 随机森林(Random Forest) 多元自适应回归样条(MARS) 梯度推进机(Gradient Boosting Machine, GBM) 贝叶斯方法 主要用来解决分类和回归问题 朴素贝叶斯算法 平均单依赖估计(Averaged One-Dependence Estimators, AODE) Bayesian Belief Network(BBN) 基于核的算法 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决 支持向量机(Support Vector Machine, SVM) 径向基函数(Radial Basis Function ,RBF) 线性判别分析(Linear Discriminate Analysis ,LDA) 聚类算法 聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类 k-Means 期望最大化算法(Expectation Maximization, EM) 关联规则学习 通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则 Apriori Eclat 人工神经网络 人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法 感知器神经网络(Perceptron Neural Network) 反向传递(Back Propagation) Hopfield网络 自组织映射(Self-Organizing Map, SOM) 学习矢量量化(Learning Vector Quantization, LVQ) 深度学习 深度学习算法是对人工神经网络的发展 很多深度学习的算法是半监督式学习算法 受限波尔兹曼机(Restricted Boltzmann Machine, RBN) Deep Belief Networks(DBN) 卷积网络(Convolutional Network) 堆栈式自动编码器(Stacked Auto-encoders) 降低维度算法 像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据 主成份分析(Principle Component Analysis, PCA) 偏最小二乘回归(Partial Least Square Regression,PLS) Sammon映射 多维尺度(Multi-Dimensional Scaling, MDS) 投影追踪(Projection Pursuit) 集成算法 集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测 Boosting Bootstrapped Aggregation(Bagging) AdaBoost 堆叠泛化(Stacked Generalization, Blending) 梯度推进机(Gradient Boosting Machine, GBM) 随机森林(Random Forest)-3.如何快速进行算法选择 - 3.1如果你真心在乎准确率,最好的途径就是测试一大堆各式各样的算法(同时确保在每个算法上也测试不同的参数),最后选择在交叉验证中表现最好的 - 3.2训练集有多大 小训练集,高偏差/低方差的分类器(比如朴素贝叶斯)要比低偏差/高方差的分类器(比如k最近邻)具有优势,因为后者容易过拟合 随着训练集的增大,低偏差/高方差的分类器将开始具有优势(它们拥有更低的渐近误差),因为高偏差分类器对于提供准确模型不那么给力 -3.3一些常用算法的优缺点 朴素贝叶斯 巨尼玛简单,你只要做些算术就好了。倘若条件独立性假设确实满足,朴素贝叶斯分类器将会比判别模型,譬如逻辑回归收敛得更快,因此你只需要更少的训练数据。就算该假设不成立,朴素贝叶斯分类器在实践中仍然有着不俗的表现。如果你需要的是快速简单并且表现出色,这将是个不错的选择。其主要缺点是它学习不了特征间的交互关系(比方说,它学习不了你虽然喜欢甄子丹和姜文的电影,却讨厌他们共同出演的电影《关云长》的情况) 逻辑回归 有很多正则化模型的方法,而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树与支持向量机相比,你还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法)。如果你需要一个概率架构(比如简单地调节分类阈值,指明不确定性,或者是要得得置信区间),或者你以后想将更多的训练数据快速整合到模型中去,使用它吧 决策树 易于解释说明(对于某些人来说 —— 我不确定我是否在这其中)。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分(举个例子,决策树能轻松处理好类别A在某个特征维度x的末端,类别B在中间,然后类别A又出现在特征维度x前端的情况)。它的一个缺点就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点是容易过拟合,但这也就是诸如随机森林(或提升树)之类的集成方法的切入点。另外,随机森林经常是很多分类问题的赢家(通常比支持向量机好上那么一点,我认为),它快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以最近它貌似相当受欢迎 支持向量机 高准确率,为避免过拟合提供了很好的理论保证,而且就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好。在动辄超高维的文本分类问题中特别受欢迎。可惜内存消耗大,难以解释,运行和调参也有些烦人,所以我认为随机森林要开始取而代之了 -3.4尽管如此,回想一下,好的数据却要优于好的算法,设计优良特征是大有裨益的。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就根据速度和易用性来进行抉择)。
数据分析生活常见问题归类
分类
聚类
回归
关联
降维
实现方案
阿里云栖社区的一张快速寻找算法图
python scikit-learn的一张快速选择算法图
从上面的两张图可以发现,最常用的问题领域有分类、聚类、回归、降维
深度学习如何与大数据平台结合起来
阅读全文
0 0
- 1.机器学习算法快速选择
- 快速选择合适的机器学习算法
- 快速选择合适的机器学习算法
- 机器学习算法选择
- 机器学习算法选择
- 机器学习算法选择
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 如何选择机器学习算法
- 关于malloc与free的一些探索
- windows7 关闭和启用IPV6隧道适配器
- Java变量的声明、初始化和作用域
- 多个电脑是否连通 ~
- 51nod 1413 权势二进制 思路题或者背包
- 1.机器学习算法快速选择
- ASP.NET之宏观把控2
- 编程
- 数据库常用sql语句和操作
- 参数类型调用注意
- 编程工作一天的时间安排!
- 评教管理系统
- cms架构下消息机制
- 51Nod-1552-白兰地定位系统