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