您的位置:首页 > 其它

机器学习实践总结

2018-01-28 18:12 357 查看
机器学习的目的:发掘数据隐藏的意义.从目的中可以分析出:第一你要有足够的数据做支持,第二你要有适合的算法来分析.
 
需要准备的知识:
矩阵运算:
1
转置、内积、常量加减乘除
2
行列式,记住二阶、三阶是如何计算的,更高阶的需要降阶和利用计算工具
3
奇异性,方阵的行列式如果为0则为奇异性,其它为非奇异的,矩阵的奇异性决定了矩阵可求逆
4伴随矩阵A*是矩阵元素所对应的代数余子式,所构成的矩阵,转置后得到的新矩阵
5
求逆A⁻¹ =A*/|A|
6协方差,如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对乘积求和并求出均值
协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高



7
相关系数



公式中Cov(X,Y)为X,Y的协方差,D(X)、D(Y)分别为X、Y的方差
8
单位矩阵,对角线上元素全为1,其他元素全为0的方阵
9特性向量和特性值,在等式Av
= λv中,v
是特征向量,λ是特征值。特征值都是简单的标量值,因此Av
= λv代表的是:如果特征向量v被某个矩阵A左乘,那么它就等于某个标量λ乘以v
10
奇异值分解,将原始的数据集矩阵Data分解成三个矩阵U、Σ和VT。



 
数学运算:
需要掌握以下
1
二范数,欧几里得范数,欧氏距离,都是一系的,平方和开根号,求距离的常用算法.
2
香农熵H(x) = E[I(xi)] =E[ log(2,1/p(xi)) ] =-∑p(xi)log(2,p(xi)) (i=1,2,..n),用于信息量化,简单理解香农熵越高,离散程度越高.
3
贝叶斯P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B),概率之间关系的运算.
朴素贝叶斯是带有前提条件的贝叶斯,条件是:特性之间相互独立并且地位相同,意义在于降低计算的维度.
4 Sigmoid函数,近似一个阶跃函数,意义是将(-∞,+∞)映射到(0,1),当x=0时sigmoid=0.5



其中z = wT*x

5拉格朗日乘子法,通过拉格朗日函数将约束条件融合到目标函数里去,融合后的结果是条件消失,函数增加一个α参数
6
高斯核,在当前空间无法做线性划分时往往会映射到一个更高维的空间,在新的高维度空间中可以线性的概率将大大增加



7
对偶算法, 原始问题比较难求解时求解另外一个问题:
例如ln(a*b) =ln(a)+ln(b),解决多个小数相乘趋于0的问题.
8 ROC曲线,给出的是当阈值变化时假阳率和真阳率的变化情况,不但可以用于比较分类器,还可以基于成本效益(cost-versus-benefit)分析来做出决策
9
优化算法:梯度上升,随机梯度上升,
到达每个点后都会重新估计移动的方向,
梯度因子总是指向增长最快的方向,沿着该函数的梯度方向探寻,直到最大值


α为步长,▽为梯度,w为当前位置.

 
根据目的分类:
目的是要进行分类,还是要进行连续数字的预测,可以将学习分为分类算法和预测数值型数据.
 
根据数据集分类:
可以通过现有数据集做测试分析验证正确率的为监督学习,可以通过参数微调和算法的不断优化提高准确率.
无法通过数据集做正确率验证的为无监督学习
 
机器学习的步骤:
1
收集数据
        
砸钱、传感器采集、资料买卖等,搞到原始的数据资料。
2
数据处理
        
原始的数据不能直接使用,需要转化成数学模型,并对缺省值做基本处理
3
训练算法
        
根据场景选择合适的机器学习算法,并调整因子做优化,直到达到满意的精准度
4
测试算法
        
只针对监督学习才有该环节,利用数据集对训练算法的产出做准确率校验
5
学习结果产出
        
机器学习结果封装成可以直接投入实际应用的产出。
 
数据处理的常用方式:
1
归一化(标准化)处理,解决每个特性的量级不一样造成每个特性的误差求和的结果不平等的问题
        
newValue=(oldValue-minValue)/(maxValue-minValue)
或者(X-均值)/方差
2
特殊值或经验值替换缺失特性
3
平均值或者相似样本替换缺失特性
 
 
降维技术:将高维数据经过技术处理降低到低纬度下,数据更容易进行处理,其相关特性更容易在数据中明显的显示出来。
对数据简化的好处:
1
使得数据集更容易使用
2
降低很多算法的开销
3
去除噪声
4
使得结果易懂
主要的降维技术有主成分分析PCA和奇异值分析SVD
 
 
常用算法:
1 k-近邻算法,用于分类,寻找距离目标数据欧氏距离最近的k个样本中权重最大的那个结果为算法结果.
优点:容易理解,精度高,
缺点:空间和时间的复杂度高,计算量大.
 
2 ID3决策树,利用信息增益决定每一次的最优分路.
优点:可以将训练结果保存文档直接使用,可以直观的给出数据的含义.
缺点:过程不易理解,特性衰减过于迅速
 
3
朴素贝叶斯,利用概率之间的关系对结果进行分类概率上的判断
优点:对数据较少时任然有效,可以处理多类别问题
缺点:对输入数据的准备方式较为敏感
 
4 Logistic回归,
优点:
计算代价不高,易于理解和实现。
缺点:
容易欠拟合,分类精度不高
 
5
支持向量机SVM,利用支持向量求出超平面对数据进行二选一分类
优点:可以通过核函数解决线性不可分的数据,训练结论可以保存起来使用时节省时间。
缺点:设计理论太强非常难理解,核函数的因子、松弛度等参数需要人为干预。
 
6 AdaBoots元算法,利用串行的弱分类器组成精准度更高的强分类器。
优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。
缺点:对离群点敏感
 
7
线性回归,用线性找到最佳拟合直线,预测数值型目标
优点:原理易理解
缺点:容易欠拟合或过拟合,需要选择适当的拟合参数
 
8
分类回归树CART,对数据先分叉直到叶子节点再求预测值。
优点:原理易理解,可以对复杂和非线性的数据建模
缺点:训练产出不易理解,数修剪对预设值或者算法上要求比较高
 
9 k-均值聚类算法,将相似的对象归到同一个簇中
优点:容易实现,也容易理解
缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢,需要优化
 
10 Apriori关联分析,通过支持度和可信度分析数据间的关联关系
优点:精度高,适合与数据间可信度的计算
缺点:尽管Apriori原理减少计算量,但是计算量还是较大,对大数据处理速度不理想
 
11 FP-growth构建FP树,
从FP树中挖掘频繁项集,多用于搜索引擎的关键字关联
优点:性能要比Apriori好两个数量级以上,可以高效地发现频繁项集。
缺点:不能用于发现关联规则
 
训练测试的方式:
1
留存交叉验证:
随机选择数据的一部分作为训练集,而剩余部分作为测试集
2 bagging自举汇聚法,在从原始数据集选择S次后
得到S个新数据集的一种技术。新数据集和原数据集的大小相等.代表作随机森林(random
forest),
 
 
 
机器学习训练结果分析:
过拟合:在训练数据上表现良好,在未知数据上表现差。很好理解,就是太尊重训练集了,甚至把训练集的噪音等也当作正常数据在处理,这样算出来的结果对于训练集错误率肯定很低,但是不满足真正应用,所以在未知数据表现很差。
欠拟合:拟合度不够,在训练和测试中精准度表现都很差
偏差Bias、方差Variance与误差Error:
简单说Error =Bias + Variance

Error反映的是整个模型的准确度,
Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,
Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习