一. 降维
目标
- 减少输入的数目
- 剔除噪声数据
- 提高已有算法的性能,减少计算开销
1. PCA
按照数据方差最大方向调整数据的主成分分析法
2. SVD
矩阵分解技术的一种,奇异值分解法
1. 主成分分析法(PCA)
- 旋转坐标轴
- 第一个坐标轴是数据最大方差所在的方向
- 第二个坐标轴与第一个坐标轴正交,方差次大
- 重复旋转坐标轴,次数为数据中特征数量
- 旋转次数越多,所得方差越小
- 方差越大表明越能给出数据越最重要的信息
- 当方差和变化很小的时候,舍弃余下坐标轴
- 数据集矩阵实现
- 针对协方差矩阵做特征值分析
- 特征值越大,数据方差越大
- linalg.eig()方法可以计算协方差矩阵的特征值
2. SVD(奇异值分解)
- 矩阵分解
- 一个数据集矩阵m*n可以分解为三个矩阵,分别为m*m,m*n,n*n
- 分解过程为svd,分解后的m*n矩阵只包含对角线元素且降序排列,其他位置均为0,这些元素就叫奇异值
- 奇异值越大,越能反映数据重要信息
- 计算前几个奇异值,当其能反映整个矩阵的90%以上信息时,舍弃后边的奇异值
- 推荐引擎
- 对数据集矩阵SVD处理后可应用于推荐引擎
- 相似度的计算通常为欧氏距离,皮尔逊相关系数和余弦相似度
- 对计算结果处理为[0,1],0表示无关,1表示相同
- 评价一个推荐引擎的好坏通过最小均方根误差RMSE实现,RMSE值表示与真实结果的差距,越小越好
二. 分类
1. K-近邻
- 有监督学习
- 存在一个训练数据集,每条数据存在标签即所属分类已知
- 将训练数据集按9:1划分训练:测试数据,验证算法错误率
- 输入没有标签的完整数据,根据每个特征与训练数据集中对应特征计算相似度(欧氏距离,皮尔逊相关系数,余弦相似度等)
- 提取相似度最高的前k条数据,对特征值进行归一化处理
- 返回前n个最相似的标签作为输入数据的标签
2. 决策树
- 类似流程图,终止节点即为分类结果
- 首先测量数据集中的数据不一致性,称为信息熵
- 信息熵越大表明数据越混乱
- 得到熵最小的分类方案
- 递归计算熵,构建一颗完整的树形流程图
3. 朴素贝叶斯
- 基于概率论,P(A|B)P(B)=P(B|A)P(A)
- 通过已发生事件的概率推测未发生事件发生的概率
- 数据集中一个词出现的概率与其他词无关,这是一种独立性假设,也是朴素的含义
- 根据独立性假设,对一篇已知类别的训练文档计算一个词出现的次数占总词数量的比例,即为该词出现在该文档的概率
- 最终根据概率将新文档放入相应的类别
4. Logistic回归
- 根据现有数据对分类边界线建立回归公式
- 一种最优化算法,即最佳拟合
- 寻找一个非线性函数Sigmoid的最佳拟合参数
- 梯度上升法,如果要找一个函数的最大值,最好沿着梯度去找
- 即在x轴和y轴上分别偏导后等于零求出驻点获取极值
- 如果加法变为减法,则为梯度下降法,求最小值
5. SVM支持向量机
- 现成的分类器,原理难以理解
- 输出一个二值决策结果,泛化的错误率较低,可推广性好
- 核函数是将非线性问题转换为高维空间下的线性问题来求解
6. AdaBoost元算法
- 元算法是对其他算法进行组合的一种方式
- 随机森林是另一种集成多个算法的方式
- 通过将单层决策树作为弱学习器,通过迭代增加权重,即首次权重相同,迭代后根据结果提高正确率高的分类器的权重
三. 回归
目的
- 根据连续型数据预测目标值
- 构建回归方程,计算回归系数
- 回归系数是一组向量,因为输入数据也是向量
分类
- 线性回归
- 非线性回归
1. 线性回归
适用于
- 数值型
- 标称型
- 必须是线性数据,即输入项与常量做乘积返回输出,而非输入项间运算
最小误差法
- 通过回归方程计算结果与实际值的误差,调整回归系数
- 误差有正负之分,因此使用平方误差来逼近最小误差下的回归系数
局部加权线性回归
- 为待预测点附近的点赋予不同的权重
- 在子集上做最小均方差进行回归
- 为了确定权重,通常采用高斯分布的方法,即越靠近待预测点权重越大
特征值多于样本点
- 此时不可用线性回归
- 由于求矩阵的逆时,非满轶矩阵会出问题
- 需要通过岭回归或lasso法缩减系数
岭回归
- 在求逆矩阵的时候,添加一个对角线为1的单位矩阵,按给定的系数做加法,以满足求逆的条件
- 增加的单位矩阵中对角线为1,其他为0,形状类似岭
lasso法
- 加入约束条件,向量绝对值的和不大于给定的系数
- 在系数足够小时,回归系数会被缩减到0
权衡偏差与方差
- 偏差是指模型预测值与真实知道差异
- 方差是指模型直接的差异
- 二者的调整对于回归的效果有重大影响
2. 树回归(非线性回归)
与线性回归的区别
- 线性回归创建的模型需要拟合所有的样本点
- 当特征值很多且关系复杂时,构建全局模型的复杂度太高
- 树回归就是将数据切分,如果切分后仍然过于复杂则继续切分,最终形成树形结构依次进行回归
CART(分类回归树)
- 可用于分类和回归两种算法
- 二元切分法(如果特征值大于给定值就分左,否则分右)
- 这样保证了可以直接对连续型数据构建树
- 不使用香浓熵来衡量信息混乱度
- 为衡量混乱度,首先计算所有数据的均值,再计算每条数据与均值的差值,用平方或绝对值描述差值,即总方差
- 总方差=均方差*样本点个数
剪枝
- 树节点过多代表过拟合
- 降低树的复杂度称为剪枝
- 预剪枝,即人为添加终止条件,预先结束树的构建,依据是每次的预测结果,这种方法效率低下
- 后剪枝,划分数据集为训练集和测试集,首先建立复杂的树,再用测试集判断叶节点是否降低测试误差,降低了则合并叶子节点
四. 无监督学习
- 从一堆数据中能发现什么
- 如何描述一堆数据
- 与分类回归不同,没有输入和输出,只有一堆数据本身
1. 聚类(K-均值)
名词解释
- 聚类就是把数据集中相似的数据放到一个类中
- K-均值的意思是归纳出K个类,每个类中的均值作为类中心
无监督分类
- 与分类的结果相同
- 分类是事先给出类别,聚类则自动形成给定数量的类别
- 数据是否相似依然依赖于相似度计算方法
二分K-均值
- K-均值收敛到的是局部最小值而非全局最小值
- SSE误差平方和,衡量聚类效果的值,越小表示数据点越接近其所在类的中心
- 二分法首先将所有点看作一个类,依据二分后能否最大程度降低SSE的值来不断二分,直到指定的k个类为止
2. 关联分析(Apriori算法和FP-growth算法)
关联项
- 频繁项表示物品出现在一起的集合
- 关联项表示两种物品可能含有关联
- 描述频繁度和关联可能性的指标称作支持度和可信度
支持度
- 数据集中包含该项记录所占的比例
- 规定一个最小支持度筛选出频繁出现的商品组合
可信度
- 支持度的比值,即同时出现两个商品的支持度/出现其中一个商品的支持度
- 由此来量化两种商品关联的可能性
Apriori算法原理
- 只关心购买商品的种类,不关心数量
- 按原理计算支持度和可信度需要遍历数据集的次数为2的n次方-1
- Apriori假设某个项集是频繁项,那其子集都是频繁项
- 也就是说,两种商品同时出现频率很高的话,这两种商品单独出现的频率一定也很高
- 如果项集为非频繁项,其超集也是非频繁项
Apriori查找频繁集
- 输入参数为最小支持度和数据集
- 首先计算单个商品的支持度,再计算两个商品的支持度
- 去除支持度低于最小支持度的数据,遍历数据集
Apriori挖掘关联规则
- 计算可信度可通过集合做并集除以单个集合的方式
- 计算所有频繁集数据的可信度,筛选出满足最小可信度的规则
- 依然符合假设,即本身为真则子集真,本身为假则超集假
FP-growth算法查找频繁集
- 缩短Apriori发现频繁项集的时间成本,性能提高两个数量级以上
- FP树结构,只需要对数据集进行两次扫描
- 第一次扫描针对所有元素的出现次数进行计数,去除不满足最小支持度的数据,重新生成新的数据集
- 第二次扫描仅考虑频繁元素
FP-growth算法挖掘关联规则
- 条件模式基,指向目标元素的路径和其经过元素数量的集合,即路径+路径长度
- 根据每条路径构建条件FP树,依然去除不满足最小支持度的数据
- 递归直至仅剩一个元素,即为最可能的关联规则