了解数据是第一首要任务,了解数据的以下特性:
特征值是闲散型变量还是连续型变量
特征值中是否存在缺失的值,何种原因造成的缺失值,
数据中是否存在异常值
某个特征发生的频率如何(是否罕见如同海底捞针)
开发机器学习应用程序的步骤
收集数据
准备输入数据
分析输入数据
训练算法
测试算法
使用算法
k-NN 算法:
对未知或需要判定的属性数据集中的每个点以此执行以下操作
计算已知类别数据集的点与当前之间的距离
按照距离递增次序排序
选取与当前点距离最小的k个点
确定前k个点所在类别的出现频率
范围前k个点出现频率最高的类别作为当前点的预测分类
决策树算法介绍
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不明感,可以处理不相关特征数据
缺点:可能会产生过度匹配问题
适用数据类型:数值型和标记型
子类划分属性选择规则:1、信息增益最大原则;2、基尼不纯度(从一个数据集中随机选择子项,度量其被错误分类到其他分组里的概率)
信息增益是熵的减少或者是数据无序度的减少。
主要应用算法:ID3、C4.5、CART
朴素贝叶斯:
优点:在数据较少的情况下仍然有效,可以处理多类别问题
缺点:对于输入数据的主内方式较敏感
适用数据类型:标记型数据
P(Ci) 表示出现Ci的概率
P(x,y) 表示(x,y)的概率
P(x,y | Ci) 在Ci条件下出现x,y的概率
P(Ci | x,y) 出现x、y的条件下,出现Ci的概率
logistic回归:
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度可能不高
适用数据类型:数值型和标记型数据
梯度上升法
随机梯度上升法
以上两者差一点,随机算法中会每次迭代会变更 Alpha和选择的;随机选取样本。可以减少周期性的波动。 目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法来完成。最常用的就是梯度上升算法,而梯度上升算法又可以简化为随机梯度上升法。随机梯度上升算法与梯度上升算法的效果相当,但占用更少的计算资源。
支持向量机:
优点:泛华错误率低,计算开销不大,结果易理解
缺点:对参数调节和核计算的选择敏感,原始分类器不参加修改仅适用于处理二类问题
适用数据类型:数值型和标记型数据
核函数:从某个特征空间到另一个特征空间的映射;核函数想象成 一个包装器或者是接口,它能把数据从某个很难处理的形式转换为另一个比较容易处理的形式。
常用核函数:线性核函数、多项式核函数、高斯核函数、拉普拉斯核、Sigmoid核
svm优化中一个特别好的地方是,所有的运算都可以写成内积的形式。向量的内积是两个向量相乘,之后得到单个标量或者数值。把内积运算替换成核函数,而不必做简化处理。
AdaBoost:
优点:泛化错误率低、易编码,可以应用在大部分分类器上,无参数调整
缺点:对离散群点敏感
适用数据类型:数值型和标签类数据
线性回归:
优点:结果易于理解,计算上不复杂
缺点:对非线性的数据拟合不好
适用数据类型:数值型和标记型数据
局部加权回归(LWLR):
;待预测点附近每个点赋予一定的权重。缺点,每次必须在整个数据集上运行。也就是说为了做到预测,必须保存所有训练数据
高斯核:
岭回归:
前提:对特征做标准化处理:所有特征都减去各自的均值并处以方差。
[
]的逆可能无法直接计算,这是因为特征有可能高度相关。这时可以考虑使用岭回归
**回归树:
**
** ** 优点:可以对复杂和非线性的数据建模
缺点:结果不易理解
适用数据类型:数值型和标记型
** CART 算法:**
对每个特征:
对每个特征值:
将数据集切分成两份
计算切分的误差
如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差
返回最佳切分的特征和阈值
使用gini系数作为子树构建划分规则条件,对于连续变量,使用相邻两个变量的均值作为分割点
Apriori 算法
优点:易编码
缺点:在大数据集上可能较慢
适用数据类型:数值型或标记型数据;
应用场景:搜索关键词,自动提示关联内容;购物车中关联物品
通过支持度,置信度来迭代各种物品组合,并通过置信度的过滤来剪枝,减少计算量
支持度:P(A ∩ B),既有A又有B的概率
置信度:P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)
例子:[支持度:3%,置信度:40%]
支持度3%:意味着3%顾客购买了牛奶和面包
置信度40%:意味着购买牛奶的顾客40%也购买面包
如果时间A中包含K个元素,那么称这个事件A为k项集事件A满足最小支持度阈值的事件成为频繁K项集
同时满足小嘴支持度阈值和最小置信度阈值的规则称为强规则
通用处理方案
样本数据中对于缺失值的解决办法:
使用可用特征的均值来填补缺失值
使用特殊值来填补缺失值, 如-1
忽略有缺失值得样本
使用相似样本的均值填补缺失值
使用另外的机器学习算法预测缺失值
真实结果、预测结果分类标签
TP:真正例
FN:伪反例
FP:伪正例
TN:真反例
正确率:TP/(TP+FP),给出的是预测为正例的样本中的真正正例的比例。
召回率: TP/(TP+FN),给出的是预测为正例的真实比例占所有真实正例的比例。在召回率大的分类器中,真正盘错的正例的数目并不多。