用Scikit-learn和TensorFlow进行机器学习(一)
文章目录
机器学习概览
一、什么是机器学习?
1、定义
计算机程序利用经验 E 学习任务 T, 性能是 P, 如果针对任务 T 的性能 P 随着经验 E 不断增长, 则称为机器学习。(汤姆·米切尔,1997)
2、适用
- 需要进行大量手工调整或需要拥有长串规则才能解决的问题: 机器学习算法通常可以简化代码、 提高性能。
- 问题复杂, 传统方法难以解决: 最好的机器学习方法可以找到解决方案。
- 环境有波动: 机器学习算法可以适应新数据。
- 洞察复杂问题和大量数据。
二、分类
注意下述规则可以组合
1、监督, 非监督, 半监督和强化学习
分类依据:根据训练时监督的量和类型进行分类。
(1)监督学习
分为:分类任务、回归任务
常用算法:
- K近邻算法
- 线性回归
- 逻辑回归
- 支持向量机( SVM)
- 决策树和随机森林
- 神经网络
(2)非监督学习
常用算法:
聚类
- K 均值
- 层次聚类分析( Hierarchical Cluster Analysis, HCA)
- 期望最大值
可视化和降维(简化数据、 但是不能失去大部分信息)
- 主成分分析( Principal Component Analysis, PCA)
- 核主成分分析
- 局部线性嵌入( Locally-Linear Embedding, LLE)
- t-分布邻域嵌入算法( t-distributed Stochastic Neighbor Embedding, t-SNE)
关联性规则学习(挖掘大量数据以发现属性间有趣的关系)
- Apriori 算法
- Eclat 算法
此外,还常用于异常检测( anomaly detection)
(3)半监督学习
数据形式:通常是大量不带标签数据加上小部分带标签数
据。
多数半监督学习算法是非监督和监督算法的结合。eg:深度信念网络(deep belief networks)
(4)强化学习
智能体(agent), 可以对环境进行观察(observation), 选择和执行动作(action), 获得奖励。然后它必须自己学习哪个是最佳方法( 称为策略, policy) , 以得到长久的最大奖励。 策略决定了智能体在给定情况下应该采取的行动。
2、在线学习 vs 批量学习
分类依据:是否能从导入的数据流进行持续学习
(1)在线学习
用数据实例持续地进行训练,可以一次一个或一次几个实例( 称为小批量)。 每个学习步骤都很快且廉价,所以系统可以动态地学习到达的新数据。
==》适合接收连续流的数据,且需要自动对改变作出调整。
数据的使用:
- 一旦在线学习系统学习了新的数据实例,它就不再需要这些数据了, 所以扔掉这些数据( 除非你想滚回到之前的一个状态, 再次使用数据)==》这样可以节省大量的空间。
- 核外数据(机器内存存不下大量数据集时):加载部分数据,之后训练,然后重复该过程,直到所有数据都进行了训练。
(2)批量学习
系统不能持续学习:必须用所有可用数据进行训练。
==》占用大量时间和计算资源
3、基于实例学习 vs 基于模型学习
(1)基于实例学习
记忆学习。系统先用记忆学习案例, 然后使用相似度测量推广到新的例子
(2)基于模型学习
从样本集进行归纳的方法是建立这些样本的模型, 然后使用这个模型进行预测。
三、主要挑战
- 训练数据量不足:数据不合理的有效性;
- 没有代表性的训练数据;
- 样本太小==》样本噪声
- 样本太大==》样本偏差:可能没有代表性, 如果取样方法错误的话。
- 低质量数据:错误、异常值和噪声
- 不相关的特征
- 特征工程(特征选择、特征提取、收集新数据创建新特性)
- 过拟合训练数据
- 简化模型, 可以通过选择一个参数更少的模型( 比如使用线性模型, 而不是高阶多项式模型)、 减少训练数据的属性数、 或限制一下模型(正则化)
- 收集更多的训练数据
- 减小训练数据的噪声( 比如, 修改数据错误和去除异常值)
- 欠拟合训练数据
四、测试和确认
数据集划分:训练集、验证集、测试集;
在验证集上模型和超参数,选择性能最佳的模型和超参数