Java教程

如何选择适合需求的算法

本文主要是介绍如何选择适合需求的算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

分类问题

分类是有监督的学习过程(是否有监督,就看输入数据是否有标签)

首先要有一批已经有标签结果的数据,如果缺少已知信息(1)考虑使用其他方法,如聚类算法。(2)老驴处理数据,如人工进行标注

 

二分类---要回答的问题只有是或者否

多分类---在二分类的基础上,将标签可选范围扩大

多标签分类---多标签分类下的一条数据可以被标注上多个标签

 

KNN算法、决策树算法、随机森林、SVM等都是为解决分类问题设计的

 

聚类问题

聚类是无监督

聚类是把一个数据集划分为多个组的过程

使得组内的数据尽量高度集中,和其他组的数据之间尽量远离

 

互斥----小组与小组没有交集

相交-----小组和小组之间有交集

层次-----一个大组还可以细分成若干个小组

模糊-----一个用户并不绝对属于某个小组,只是用概率来表示他和某个小组的关系

 

基于划分的聚类,通常用于互斥的小组

基于密度的聚类,可以用来解决数据形状不均匀的情况

基于层级的聚类,适用于需要对数据细分的情况

                     使用自顶向下的方法,使得全部的数据只有一个组,然后分裂成更小的组,直到满足要求

                      使用自底向上的方法,最开始每一条数据都是一个组,然后把离得近的组合并起来,直到满足条件

基于模型的聚类

                     假设数据符合某种概率分布模型,比如高斯分布或者正态分布,按照这个概率分布对数据进行聚类

 

回归问题

  在使用回归方法得到函数方程式以后,可以根据对新数据运算的结果进行区间分段:高于某个阈值给定一个标签,低于该阈值给定另外一个标签

  对于分类方法得到的标签,可以根据给定标签的概率值为其增加一些运算逻辑,将标签转换到一个连续值得结果上

  分类 回归
输出 离散数据 连续数据
目的 寻找决策边界 找出最优拟合

 

关联问题

关联分析是一种无监督学习,目标是挖掘隐藏在数据中的关联模式并加以利用

在已有的数据中寻找出数据的相关关系,以期望能够使用这些规则去提升效率和业绩

 

广泛地用于各种商品销售分析、相关推荐系统分析、用户行为分析等

 

模型集成

或者叫集成学习

思路:合并多个模型来提升整体的效果

 

Bagging(袋装法)

 

 

Boosting(增强法)

 

 

Staking(堆叠法)

训练的多个模型既可以进行横向扩展,也可以进行串行增强,最终在使用分类或者回归的方法把前面模型的结果进行整合,其中的每一个模型可以使用不同的算法,对于结构也没有特定的规则

 

这篇关于如何选择适合需求的算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!