机器学习既是一门科学,也是一种艺术。纵观各类机器学习算法,并没有一种普适的解决方案或方法。事实上,有几个因素会影响你对机器学习算法的选择。
有些问题是非常特别的,需要用一种特定的解决方法。例如,如果你对推荐系统有所了解,你会发现它是一类很常用的机器学习算法,用来解决一类非常特殊的问题。而其它的一些问题则非常开放,可能需要一种试错方法(例如:强化学习)。监督学习、分类、回归等问题都是非常开放的,可以被用于异常检测或建立更加广泛的预测模型。
此外,我们在选择机器学习算法时所做出的一些决定与算法的优化或技术层面关系并不大,而更多地与业务决策相关。下面,让我们一起来看看有哪些因素能帮你缩小机器学习算法的选择范围。
数据科学过程
在你开始研究不同的机器学习算法前,你需要对自己拥有的数据、面对的问题及相关约束有清晰的了解。
理解你的数据
当我们决定使用哪种算法时,我们所拥有的数据的类型和形态起着关键性的作用。有些算法可以利用较小的样本集合工作,而另一些算法则需要海量的样本。特定的算法对特定类型的数据起作用。例如,朴素贝叶斯算法对处理待分类的输入特别有效,但是对于缺失值则一点都不敏感。
因此,你需要做到:
了解你的数据
1. 查看总结统计和数据可视化的结果
- 百分比可以帮助你识别大多数数据的范围
- 平均数和中位数可以描述集中趋势
- 相关系数可以指出强的关联性
2. 数据可视化
- 箱形图可以识别出异常值
- 密度图和直方图可以显示出数据的散布情况
- 散点图可以描述二元关系
数据清洗
1. 处理缺失值。缺失的数据对于某些模型的影响比对其它模型更大。即使是对于那些被用于处理缺失数据的模型来说,它们也可能对缺失数据很敏感(某些变量的缺失数据可能导致预测性能变差)
2. 选择处理异常值的方法
- 异常值在多维数据中十分常见。
- 有些模型对异常值的敏感性比其它模型要低。通常而言,树模型对于异常值的存在不太敏感。然而回归模型、或者任何试图使用方程的模型都会受到异常值的严重影响。
- 异常值可能是糟糕的数据收集造成的,也可能是合理的极值。
3. 数据需要被聚合吗?
数据增强
1. 特征工程是从原始数据中产生能够被用于建模的数据的过程,可以起到以下几种作用:
- 使模型更容易被解释(如数据分箱(binning))
- 捕获更复杂的关系(如神经网络)
- 减少数据冗余并降低数据维度(如主成分分析(PCA))
- 重新缩放变量(如标准化或归一化)
2. 不同的模型可能有不同的特征工程的要求。有的模型有内置的特征工程。
对问题进行分类
下一步是对问题进行分类。这是一个需要分两步实现的过程。
1. 根据输入分类:
- 如果你拥有的是带标签的数据,那么这就是一个监督学习问题。
- 如果你拥有的是未标注过的数据,并且希望从中找到有用的结构,那么这就是一个无监督学习问题。
- 如果你想要通过与环境的交互来优化一个目标函数,那么这就是一个强化学习问题。
2. 根据输出分类:
- 如果模型的输出是一个(连续的)数字,那么这就是一个回归问题。
- 如果模型的输出是一个类别,那么这就是一个分类问题。
- 如果模型的输出是一组用输入数据划分出的簇,那么这就是一个聚类问题。
- 你想发现一个异常点吗ÿ