机器学习理论学习
K最近邻算法--近朱者赤近墨者黑
原理
对于K最近邻算法来说,判断新数据是属于红色还是黑色,非常简单,这个点离谁最近,就和谁是同一类了。
显然这样看来,它属于红色。但是这非常容易犯了“一叶障目,不见泰山”的问题。可以增加最近邻的数量,假设我们增加到3
那么可以清楚地看到,会将新数据归于到黑色分类中。
当然,K最近邻算法也能用于回归算法。原理和用于分类是相同的。模型会选择离该数据点最近的若干个训练数据集中的点,并将它们的y值取平均值,这个平均值就作为新数据的预测值了。
小结
K最近邻算法是一个非常经典而且原理十分容易理解的算法。
不过它在实际应用中会有很多问题,例如它需要对数据进行认真地预处理、对规模较大的数据集拟合的时间较长、对高维数据集拟合欠佳,以及对稀疏数据集束手无策。
所以在当前的各种常见的应用场景中,K最近邻算法的使用并不多见。
广义线性模型--耿直的算法模型
原理
图中的黑点可以理解为训练数据,而直线就是我们的线性模型。有了这条直线,现在你就可以去预测你的新数据了。
小结
广义线性模型分为:
- 最基本的线性模型--线性回归
- 使用L2正则化的线性回归--岭回归
一种能够避免过拟合的线性回归。模型会保留所有的特征变量,但是会减少特征变量的系数,让特征变量对预测结果的影响变小。通过调节alpha参数控制 - 使用L1正则化的线性回归--套索回归
与L2正则化不同的是,会有一部分特征的系数正好等于0。可以理解为有一些特征会彻底被模型忽略掉。有的时候,把一部分系数变成0,有助于让模型更容易理解,而且可以突出体现模型最重要的那些特征。也是使用alpha参数来控制
alpha参数越小,正则化的效果就越差,甚至几乎退化到跟线性回归模型一致。
在实践当中,岭回归往往是优选。但是如果你的数据特征过多,而且其中只有一小部分是真正重要的,那么套索回归应该是更好的选择。
当数据集特征比较少的时候,线性模型的表现会相对偏弱一些的。
朴素贝叶斯--打雷啦,下雨收衣服啊!
在scikit-learn中,朴素贝叶斯有三种方法
- 贝努力朴素贝叶斯
- 高斯贝叶斯
- 多项式朴素贝叶斯
贝努力朴素贝叶斯
这种方法比较适合于符合贝努力分布的数据集,贝努力分布的数据集也被称为 二项分布或 0-1分布。比如抛硬币,只会有两种结果。
高斯朴素贝叶斯
顾名思义,是假设样本特征符合高斯分布,或者说符合正态分布时所用的算法。
事实上,高斯朴素贝叶斯确实能够胜任大多数的分类任务,因为在自然科学和社会科学领域中,有大量的现象都是呈现出正态分布的状态。
多项式朴素贝叶斯
如果说抛硬币是两个面,正面和反面。 那么骰子就有6个面。当我们掷N次骰子,骰子每个面朝上的次数的分布情况,就是一个多项式分布。
但多项式朴实贝叶斯只适合用来对非负离散数值特征进行分类。典型的例子就是对转化为向量化的文本数据进行分类。
小结
相比起线性模型算法来说,朴素贝叶斯算法的效率要高一点。这是因为朴素贝叶斯算法会把数据集中的各个特征看作是完全独立的。而不去考虑特征之间的关联关系。但同时模型泛化的能力会稍微弱一些,不过一般情况下并不太影响实际的使用。
决策树和随机森林--会玩读心术的算法
决策树是一种在分类和回归中都有非常广泛应用的算法。它的原理是通过对一系列问题的if/else的推导,最终实现决策。
决策树的优势与不足
优势:
决策树可以很容易地将模型进行可视化。另外,由于决策树对每个样本特征进行单独处理,因此并不需要对数据进行转换。几乎不用对数据进行预处理。
不足:
虽然可以通过类似max_depth或者max_leaf_nodes等参数来对决策树进行预剪枝处理,但它还是不可避免会出现过拟合的问题。为了避免过拟合的问题,一般我们会引入随机森林。
随机森林
决策树算法很容易出现过拟合的问题,随机森林则是把不同的几棵决策树打包到一起。每棵树的参数不相同,然后将每棵树预测的结果取平均值。
有三个重要的参数
- bootstrap
有放回抽样 - max_features
控制所选择特征数量的最大值,如果不设置,默认取最大特征数。当参数设置得越大时,决策树就会长得越像,因为有更多不同的特征进行选择,也就会更容易拟合数据。如果设置得越低,样子就会很不同,就需要更多的决策树来拟合数据 - n_estimators
控制的是决策树的数量。
小结
目前在机器学习领域,无论是分类和回归,随机森林都是应用最广泛的算法之一。
但是对于超高维数据集,稀疏数据集,随机森林就有点捉襟见肘,这种情况下,线性模型就比随机森林表现好一些。另外,随机森林相对更消耗内存,速度也比线性模型慢,所以如果程序希望更节省内存和时间的话,建议还是选择线性模型。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。