一、数据:入门数据(著名的鸢尾花数据)
- 数据集(data set):数据整体
- 数据表示形式
- 每一行数据为一个样本(sample),每一行本身也是一个特征向量
- 除最后一列,每一列为表达样本的一个特征(feature)表达方式:X ~i,j(实质为矩阵)
- 最后一列,通常为标记(label) 表示方法:y (实质为向量)
- 表达方式样例:
- 特征空间:每一个样本的本质,是在对象的特征所组成一个空间中的一个点
- 分类任务的本质是对特征空间进行切分 (不论空间维度如何均同理)
二、机器学习中的基本任务
- 分类
- 二分类(二选一的任务):判断是否为垃圾邮件、某件事是否有风险、股票涨还是跌
- 多分类任务:如手写数字识别、图像识别、事件风险评级(很多很复杂的问题 都可以尝试着转化为多分类任务,但多分类方法不一定是最好的方案)
- 二者关系:有些算法只支持完成二分类任务,但是多分类任务可以转化为二分类任务,有些算法可以天然完成多酚类任务
- 多标签任务:
- 回归
- 数据形式:
- 特点:预测结果不是类别,而是一个连续数字的值。【例如,价格预测、市场分析、股票预测、学生成绩】
- 回归任务:有些情况下,回归任务可以简化成分类任务
三、机器学习的算法角度分类
- 监督学习:给机器的训练数据拥有“标记”或者“答案”
- 非监督学习:给机器的训练数据没有任何“标记”或者“答案”
- 聚类分析对没有“标记”的数据进行分类
- 降维处理
- 特征提取:比如,信用卡的信用评级和人的胖瘦无关,就需要把胖瘦特征扔掉
- 特征压缩:在尽量减少信息损失的情况下,将高维特征向量压缩至低维,【例如,PCA】(意义:大大提高算法运行效率而不影响准确率;方便可视化[人类不能理解四维以上的信息])
- 异常检测 :某些数据不能表达样本整体的特性,而机器学习是要找到样本的一般化特征。使用特定算法找出这些特殊点的过程就是异常检测。
- 半监督学习:一部分数据有“标记”或者“答案”,另一部分数据没有。这种情况更常见(由于各种原因产生的标记缺失)
- 先使用无监督学习手段对数据进行处理,之后使用监督学习手段做模型的训练和预测
- 增强学习 根据周围的环境采取行动,根据采取行动的结果,学习(改进)行动方式。(例如,机器人领域,无人驾驶、alphago等)
四、机器学习的其他分类
- 批量学习
- 优点:简单,一个模型训练出来就不会改变了
- 问题:业务环境会改变(比如分类邮件是否为垃圾邮件,而新的垃圾邮件会随着发展垃圾邮件的特征(例如样式)可能会发生改变) 解决方案:重新批量学习
- 缺点:每次重新批量学习,运算量巨大。
- 在线学习
- 优点:及时反映新的环境变化
- 问题:新的数据(不能常的数据)可能会带来不好的变化
- 解决方案:加强对数据进行监控 ,(异常检测)
- 其他:适用于数据量巨大,完全无法进行批量学习的环境
- 参数学习
- 找到模型函数的参数。一旦学到了参数,就不再需要原有的数据了。
- 假设特征和要预测的结果之间是某种统计模型可以涵盖的关系,任务就是学习这个统计模型的参数。
- 非参数学习
- 不对模型进行统计学上的假设
- 非参数不代表没有参数
五、哲学思考(和机器学习相关的哲学思考)
- 奥卡姆的剃刀原则 【简单的就是最好的】
- 对于要解决的问题不要做过多的假设和过多的复杂化
- 在机器学习的领域,什么才算是简单呢?
- 没有免费的午餐定理
- 可以严格地数学推导出:任何两个算法,他们的期望性能时相同的。但是具体到特定的问题,有些算法会更好。
- 脱离具体问题谈算法好坏没有意义。
- 面对一个具体的问题,有必要尝试使用多种算法进行对比实验。
六、技术环境安装配置
- 计算包管理工具anaconda的安装下载,使用python3的版本
- Anaconda navigator 【主界面】
- 虚拟环境搭建
- jupyter notebook 【交互式解释器 工具】
- pycharm 【集成编程环境】
- scikit - learn【科学计算】、matplotlib【数据可视化绘图】、 numpy【矩阵操作】 pandas 等包