《白话大数据与机器学习》笔记
分类
1. 朴素贝叶斯
- 朴素贝叶斯提供了一种思维方式,即通过先验概率换算得到后验概率从而对决策分类的方法
已知条件:
- 类条件概率密度参数表达式
- 先验概率
- 基础公式:
参数说明:
- 样本空间划分为D1~Di共i个部分
- P表示括号内事件发生的概率
- 等式左边表示当事件x发生时Dj发生的概率
- 应用公式:
参数说明:
- P(A),事件A的先验概率
- P(B),事件B的先验概率,也叫标准化常量
- P(B|A),称为似然度,即A发生情况下B发生的概率
- P(A|B),称为后验概率,即B发生情况下A发生的实际概率
2. 朴素贝叶斯的分类
- 高斯朴素贝叶斯
即以正态分布式的高斯概率密度公式进行分类拟合,适用于数据符合正态分布的情况 - 多项式朴素贝叶斯
用于多维度向量的分类,常用于文章分类 - 伯努利朴素贝叶斯
即以抛硬币式的伯努利公式进行分类拟合,适用于数据符合布尔类型的情况
3. 决策树
- 决策树用于描述一次决策过程中与决策有关的数据是如何影响决策结果的,例如:
- 举例是基于主观判断的决策过程,需要一种科学客观的方法找到使决策树最简化的方式,可通过计算信息增益确定
- 决策树构建过程:
- 找到信息增益最大的字段A
- 找到信息增益最大的切分点v(连续型或枚举型)
- 决定根节点字段及其切分点
- 对切分后的两部分在去除根节点字段A的条件下再次计算信息增益找寻根节点和切分点
- 根据数据混乱程度确定决策树的层数(可以直接指定层数或将全字段切分后再减少层数)
4. 信息增益
- 枚举型字段,计算整个样本的信息熵(又称期望信息值):
参数说明:
- m为最终决策的种类,如是/否,就是m=2的情况
- pi是每个决策产生的实际概率
- Info为整个样本的熵,值越大信息越混乱,单位为bit
- 计算某一个字段A的信息熵:
参数说明:
- v表示将字段A的数据划分为几组
- pj表示该分组在字段中所占的比例
- Info(Aj)表示当前分组状态下的期望信息值
- InfoA表示当前分组状态下字段A的熵
- 得到信息增益值:
参数说明: 即期望信息值-具体字段信息熵=该字段的信息增益 - 依次计算所有字段,找到最大信息增益的字段
- 对字段值从小到大排序
- 对于n个字段值,存在(n-1)个切分点,如1和2的切分点是1.5
- 根据枚举型字段的方法计算(n-1)种方法分割情况下的熵
- 熵最小值时的切分点即是最佳切分点
5. 随机森林
- 随机森林即是构建若干棵决策树的过程
原则:
- 随机挑选字段构造一棵决策树的1~n层,n尽可能小
- 每棵决策树的分类不保证精度很高
- 将一个新样本同时对若干棵决策做分类概率判断,找出最佳的决策树
6. 隐马尔科夫模型
- 马尔科夫链
- 在观察一个系统变化时,下一个状态(n+1)如何的概率只需要观察和统计当前状态(n)即可正确得出
- 隐含状态数量,隐含状态链,转换概率,可见状态链
3.有几种骰子,每次用的是哪种骰子,每种骰子掷出每个数值的概率,实际掷出的数值
- 最大似然路径问题
维特比算法
- 已知:可见状态链,隐含状态数量,转换概率.求:隐含状态链,即找寻产生当前结果的最可能发生的过程是什么样的
- 思路:从序列长度为1开始算起,再计算长度为2时第一个序列按最大概率确定后第二个序列产生的最大概率,以此类推
- 应用:通信系统CDMA协议,输入法词汇提示功能
- 前向算法
- 已知:可见状态链,隐含状态数量,转换概率,求:得到可见状态链的概率,即验证当前结果的产生的概率是否符合已知模型的概率
- 思路:算出当前结果所有可能的过程概率,求和与实际情况比较
7. 支持向量机SVM
- 全称:Support Vector Machine
- 适用于模式识别,分类或回归的机器学习
- 当分类时,会遇到无法一分为二的情况,面临过拟或误差不可接受的矛盾,需要引入一个概念:超平面
- 超平面
即切面,一维空间是点,二维空间是线,三维空间是面,以此类推,四维空间的超平面函数:
- 向量到超平面的距离
在二维空间下,点到线的距离公式为:
即将坐标轴分为Ax+By+C0和Ax+By+C<0两部分,这就是超平面的意义 - 简化后的n维空间下公式:
参数说明:
- w是常数向量(A,B,C…)
- v是样本向量(x,y,z…)
- b是常数
- wv表示两个向量的内积(Ax+By+…)
参数说明: - g(v)同上一个公式
- ||w||表示w常数向量的平方和再开方
- 意义:当维度确定后,以上公式各参数都已确定,要判断一个点到这个平面的距离只要把空间坐标带入v即可验证
- 线性不可分
即找不到超平面的情况,或者过拟,或者不纯度不可接受 - 升维
- 一维空间下线性不可分(即找不到做超平面的点)时,可以通过二维空间下的线做出超平面,线找不到就到三维空间下找面,以此类推
- 升维在SVM中通过提供的核函数进行构造,python下默认使用rbf核函数
8. 遗传算法
- 借鉴于”适者生存,优胜劣汰”的随机化搜索方法
- 算法构建:
- 基因编码: 对个体进行描述,确定自变量
- 设计初始群体: 多种基因不同的个体组成一个群体
- 适应度计算(剪枝): 将与最终收敛条件差异较大的个体排除出繁衍体系
- 产生下一个: 经由直接选择,基因重组,基因变异三种情况繁衍
- 收敛: 给定收敛条件(如连续两代差异<1%),当满足时不再繁衍,得到最优解
- 背包问题
- 背包大小固定,物品体积和价值不等,求用背包装下最大价值物品的方案
- 特点: 生成问题一个解比验证一个解要花费更多时间
- 需要调整的参数:
- 初始群体数量: 可以设为当前计算机最大可进行的并行计算量,如8核计算机可设置初始群体为8个,分配8个线程计算.数量过少会导致未找到最优解就完成了收敛条件
- 适应度函数: 可以通过初始群体中特征值出现的概率进行筛选
- 基因重组: 即对个体进行断尾重组生成新的个体,断尾位置任意
- 收敛条件: 如连续几代适应函数未明显增长,则结束繁衍
- 极大值问题
- 对给定的三维函数图形,找到其极大值,数学法可通过偏导处为0求得驻点,驻点带入函数得到极值,这里可以通过遗传算法求解
- 思路: 在图形中随机放置一些点,让其任意繁衍,筛选条件为保留值最大的前几种情况再次繁衍,通过收敛条件得到最优解
- 注意:
- 由于函数自变量的值是无穷多的,因此要为计算机设定有效位数
- 如果结果不理想,可通过扩大初始种群数量和扩大筛选的保留名额进行更多次的计算,以提高找到最优解的概率
聚类
1. 聚类的含义
- 英文:Clustering
把物理或抽象对象的集合分组,每组由彼此类似的对象组成多个类 - 类比: 就是把事务按照其特征进行归类,如狗类可以包括哈士奇和柯基
2. K-Means算法(K-均值)
- 基于向量间距离进行聚类
- 前提:
- 事先指定类簇的数量
- 事先指定初始的类中心点
- 过程:
- 从n个向量中选出k个,作为初始聚类中心
- 计算每个对象与k个中心向量的距离(欧式距离或曼哈顿距离等)
- 把一个向量与距离它最近的中心向量归入一个类簇
- 计算每个类簇中的中心向量位置
- 重复3-4,直到聚类中的向量归类极少发生变化为止(如迭代一次后,仅1%的向量还会发生类簇间的漂移,则算作完成)
3. 有趣模式的标准
- 易于从非数据层面被人理解
- 某种确信度上,对于新数据是有效的
- 具有实际意义
- 新颖,即分析前不易被理解的数据
4. 孤立点的产生
- 数据清洗不当,无意义的数据
- 个体特点与其他样本差异较大的一类样本,可能具有巨大的价值
5. 层次聚类
- 通常由大到小按层级进行归类,如果动物-狗-哈士奇,每个类又可看作新的全局向量再次进行层次聚类
- 凝聚的层次聚类
将所有向量先形成小的群,再由小的群形成大的群 - 分裂的层次聚类
指定若干个大群,再在每个大群中指定小群,即K-Means算法
- 凝聚的层次聚类
6. 凝聚的层次聚类策略
- Ward策略:
目标是所有类簇中的方差最小化 - Maximum策略:
目标是类簇间距离的最大值最小化 - Average linkage策略:
目标是类簇间距离的平均值最小化
7. 密度聚类
- 用于聚类形状不规则的向量
- 特别注意:要对数据进行归一化处理,即将不同维度数据投影到固定长度的正方形区域内
8. 评价聚类的好坏
- 估计聚类趋势,即评估数据集是否分布不均,此时用聚类分析才有意义
霍普金斯统计量对数据集进行量化分析是否分布不均
参数说明:
- 随机选取n个向量,分别为p1~pn,分别求出向量p到离它最近向量的欧氏距离,用x1~xn表示
- 同上,命名为q向量,用y表示距离
- H表示霍普金斯统计量
- H=0.5 表示无聚类趋势
- H≈1 表示有聚类趋势
- 确定数据集的簇数,人为确定
通过计算在不同簇数下,每个类簇内部向量的空间中心点,再计算中心点与类簇内每个向量的距离之和,最后将m个类簇的距离之和再加和,以此数值为指标
参数说明:
- m为所求的类簇,分别选择1,2,3….
- 距离为为上述距离之和
- 目标是找寻性价比最高的拐点A或B,此时将数据分为4或5个类簇
- 量化测量聚类的质量
轮廓系数评价聚类的质量,该结果处于[-1,1], 通常为负值表示质量不好,越接近于1越好
参数说明:
- 向量总数为n,簇数为k,任意一个向量v
- a表示v到其所在类簇中其他各向量的距离平均值
- b表示v到其他类簇中距离自己最近的向量的距离平均值
特别说明: - 可以求出所有向量的轮廓系数取平均值衡量
- 由于计算量过大,可以选择抽样后计算轮廓系数