刚刚使用SKLearn学习机器学习进行数据分析,分享一些概念和想法,希望可以大家一起讨论,如果理解或者表达有不准确的地方,请多多指点,不吝赐教,非常感谢~~
** 下一篇是《sklearn入门介绍》
在开始之前,我想整理一下自己的思路,说一下数据分析的实际过程,以及机器学习到底是作用在哪个过程。想要进行数据分析:
1. 首先是获取数据:数据的来源很多,获取数据的方式也很多,比如直接从数据库中提取;通过问卷调查收集数据;或者从网络上爬取数据
2. 数据预处理:实际情况中采集出来的数据,可能有很多缺失或者很多无用数据,所以需要对数据进行预处理,但是无论数据质量如何,但都是一个整体,即一个样本,我们要对这个样本进行建模,用于我们了解和预测总体情况
3. 建模:通过机器学习对样本建模
4. 提取模型建立后,我们需要的信息
5. 将这些信息通过图标形式“可视化”
- 什么是机器学习?
一种人工智能,利用算法或逻辑从数据中抽取模型。
问题 | 类别 |
---|---|
把数据拟合成函数或者函数逼近 | 有监督学习 |
在无反馈的情况下给数据分类 | 无监督学习 |
取得最大化的预期利益 | 强化学习 |
- 有监督学习
又称函数逼近,只是简单地给数据匹配一个任意种类的函数。通过现有训练数据进行建模,再用模型对新的数据样本进行分类或回归分析。
训练数据集一般包含样本特征变量及分类标签,机器使用不同的算法对样本的类标签进行预测。对分类来说,目标是判断样本属于哪里类,结果是离散的数值;回归分析的目标是要预测一个连续的数值或是范围。 - 无监督学习
在没有训练数据集的情况下,对没有标签的数据进行分类并建立合适的模型,目的在于弄明白数据的特殊之处。所以最常见的任务类型即:数据转换和聚类分析。
(1)数据转换的目的是把本来非常复杂的数据集通过非监督式学习算法进行转换,使其变得更容易理解,或者计算出哪些变量比其他变量更好。
例如,降维,将特征变量较多的数据集进行分析将无关紧要的特征变量去除保留关键特征变量
(2)聚类算法是把样本规划到不同分组的算法,每个分组中的元素都具有比较接近的特征。 - 强化学习
目的在于弄明白如何玩一个多级游戏,从而获得“奖励”
之后,我会从“有监督学习”的算法入手,就我理解,通过“有监督学习”算法建模,实际上是使用样本中训练集的特征变量和标签进行建模,使用模型计算测试集特征变量的标签,再以测试集的标签为标准,评估模型好坏;然后使用模型去探索总体的情况;除此之外,在实际中一个样本,是不可能天然的存在训练集和测试集,这时就需要我们将样本人为划分成“训练集”和“测试集”,划分的方式也很多种
- 算法列表
算法 | 学习类型 | 类 | 优选偏置 | 限定偏置 |
---|---|---|---|---|
K-最邻近 | 有监督 | 基于实例 | 适合度量基于距离的问题 | 高纬度表现不佳 |
朴素贝叶斯 | 有监督 | 基于概率 | 适用于每个类别的概率恒大于零 | 适用于输入数据各自独立的 |
决策树/随机森林 | 有监督 | 树 | 适用于分类数据的问题 | 对协方差低的问题不使用 |
支持向量机 | 有监督 | 决策边界 | 适合二进制分类问题 | 只在两种类别有明确边界的情况下用 |
神经网络 | 有监督 | 非线性函数逼近 | 适合二进制输入 | 几乎没有限制倾向 |
隐马尔可夫模型 | 有监督/无监督 | 马尔可夫 | 适合时间序列数据和无记忆性的信息 | 一般对马尔可夫假设成立的系统信息比较有效 |
群集 | 无监督 | 群集 | 当数据可以分类并类别之间可以用莫种距离(欧几里得距离/曼哈顿距离或其他距离)来描时 | 无限制 |
特征选择 | 无监督 | 矩阵分解 | 视具体算法而定,可能更适合有大量共有信息的数据 | 无限制 |
特征转换 | 无监督 | 矩阵分解 | 对于没有倒置问题的矩阵,效果更好 | 必须是非退化的矩阵 |
bagging算法 | 元启发式算法 | 元启发式算法 | 更适用于变化量不大的数据 | 对任意类型数据都适用 |
- 有监督学习中的模型泛化
在有监督学习中,在训练数据集上建立模型,这个过程称为模型的泛化(generalization)。我们希望模型对数据的预测尽可能准确,这样才说模型泛化的准确度比较高。
模型泛化的评估标准:
- 过拟合(overfitting):在训练集上使用了一个非常复杂的模型,以至于在训练集表现好,测试集表现差时,说模型出现过拟合问题。
- 欠拟合(underfitting):如果模型过于简单,连训练集的特点都没有完全考虑到,在训练集测试集表现都非常差时,称为模型出现欠拟合问题。