学习了一段时间的《机器学习实践》,有所收获,简要总结如下,不甚完善,多多指教。
书中的源码是是基于python2编写的,我手动敲了一遍,每行加了注释,在python3.4.4中调试通过,github链接:https://github.com/ldgang0530/MLA
|
本章提到了几种缺失数据的处理方法: 1,使用可用特征的均值来填补缺失值 2,使用特殊值来填补缺失值 3,忽略有缺失值的样本 4,使用相似样本的均值填补缺失值 5,使用另外的机器学习算法预测缺失值 |
Logistic回归优缺点:
优点:计算代价不高,易于理解和实现。
缺点:容易欠拟合,分类精度可能不高。
适用数据类型:数值型和标称型数据。
示例:从疝气病预测马的死亡率
第6章 支持向量机SVM
SVM,Support Vector Machines。支持向量机就是找到一个分隔超平面,对数据分类。所谓的支持向量就是离分隔超平面最近的那些点。接下来要试着最大化支持向量到分隔面的距离,需要找到此问题的优化求解方法。
在SVM的推导过程中,涉及到了拉格朗日乘法、KKT条件、SMO算法、核函数、松弛变量等等。在此推荐两个博客:
JULY博客:http://blog.csdn.net/v_july_v/article/details/7624837,《支持向量机通俗导论(理解SVM的三层境界)》内有对SVM的较为详细的推导和解释。
关于SMO算法:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
支持向量机优缺点:
优点:泛化错误率低,计算开销不大,结果易解释
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题
适用数据类型:数值型和标称型数据
示例:手写识别问题回顾
第7章 使用AdaBoost元算法提高分类性能
所谓元算法,是对其他算法进行组合的一种方式。
基于数据集多重抽样的分类器
Bagging自举汇聚法,从原始数据集随机选择S次后得到S个新数据集的一种技术,新数据集和原数据集的大小相等,这样同一个样本就肯能会多次重复在新数据集中。然后,使用学习方法对每个数据集得到S个分类器,然后对未知数据进行分类,结果中最多的类别作为最后的分类结果。
Boosting,与bagging技术类似,不同的是不同分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。Boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。Adaboost是流行的一种boosting方法。
AdaBoost优缺点:
优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整
缺点:对离群点较敏感
适用数据类型:数值型和标称型数据
多个分类器可能会进一步凸显单分类器的不足,比如过拟合问题。
第8章 利用回归预测数值型数据
1,线性回归
所谓线性回归是指将输入项分别乘以一些常量,再讲结果相加得到输出。
线性回归优缺点:
优点:结果易于理解,计算上不复杂
缺点:对非线性的数据拟合不好
适用数据类型:数值型和标称型数据
2,局部加权线性回归
线性回归的一个问题是有可能出现欠拟合,因为它求的是具有最小均方误差的无偏估计。
示例:预测乐高玩具套装的价格