有道笔记原文
机器学习实战
Github代码
第一章 机器学习基础
- 2007年选出的十大数据挖掘算法
C4.5决策树、K-均值(K-mean)、支持向量机(SVM)、Apriori、最大期望算法(EM)、PageRank算法、AdaBoost算法、k-近邻算法(kNN)、朴素贝叶斯算法(NB)和分类回归树(CART)算法
- 文章结构
- 监督学习:分类
- k-近邻算法(距离矩阵)
- 决策树
- ==概率分布进行分类==
- 朴素贝叶斯算法
- Logistic回归算法(算法优化+处理集合中的缺失值,最优参数)
- 支持向量机
- Adaboost集成方法(样本非均匀分布,导致非均衡分类)
- 监督学习:连续型数值的回归预测
- 回归、去噪、局部加权线性回归
- 基于树的回归算法/分类回归树(CART)算法
- 无监督学习(算法找到共同特征)
- K0均值聚类算法
- 关联分析的Apriori算法
- 使用FP-Growth算法改进关联分析
- 其他
- 主成分分析和奇异值分解
- 分布式计算:mapreduce
- 基本概念
- 特征和目标变量
- 监督学习和无监督学习
- 监督学习:解决分类问题(目标变量的分类信息,目标变量为离散型)、预测数值型数据(最优拟合曲线,目标变量为连续性)
- 无监督学习:聚类(数据划分成离散的组);描述数据统计值的过程为密度估计(数据与每个分组的相似程度)
- 了解数据
- 离散型变量还是连续性变量(标称型和数值型)
- 特征值是否有缺失值、异常值、发生频率
- python
第二章 k-近邻居算法
- k-近邻算法基本理论(测量不同特征值之间的距离方法进行分类)
- 样本集:打标签的数据
- 新的没有标签的数据,与样本集对比,找出前k个最相近的样本数据
- 前k个最相似数据中出现次数最多的分类,为新数据的分类
- k-近邻算法优缺点
- 缺点:基于实例的学习,保存所有数据集,较大的存储空间;每一个测试样例要与所有的实例计算距离,并排序,时间复杂度高;没有抽取特征的环节,是比较特征的环节。
- 数据相关
- 数据特征观察:直接浏览文本非常不友好,应借用python工具来图形化展示数据内容
- 数据归一化处理:0到1区间内的值
- python语法
- shape函数:矩阵大小
- np.tile函数:按照某种重复的方式,重构矩阵 (m,n)m行n次
- argsort函数:numpy库中函数,返回从小到大的索引值
- np.zeros(shape):生成全0矩阵
- matplotlib.pyplot.add_subplot(111): 1行1列第1个
- scatter带label的散点图,会根据label的数值随机对应一种颜色
- min(0):每一列的最小值;min(1):每一行的最小值
第三章 决策树
- 决策树:数据形式容易理解,但可能过度匹配,createBranch算法见下
检测数据集中的每个子项是否属于同一分类:
If so return 类标签;
Else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for每个划分的子集
调用createBranch函数并增加返回结果到分支节点中
return 分支节点
- ID3算法划分数据集;
- 选择获得信息增益最高的特征
- 信息增益:划分数据集之前后信息发生的变化
- 熵:信息的期望值(集合信息的度量方式)
H = \sum_{i=1}^np(x_i)log_2p(x_i)
公式参考
- 基本算法:选择某特征划分之后熵最高的特征,进行划分;不断建立决策树,直到每个分支下所有实例都具有相同的分类。具体可以查看相关代码
- matplotlib的注解功能绘制树形图
- python样例代码运行有一个小bug,需要把keys转换成list,再取[0]:list(dict.keys())[0]
- 使用决策树执行分类
- 决策树的存储:使用python的pickle模块(类似于json,但两者有区别)
- 决策树的剪枝
- 为了防止过度匹配,合并相邻的无法产生大量信息增益的叶子节点
网友评论