机器学习算法汇总ML

线性回归

利用连续性变量来估计实际数值(房价)。通过线性回归算法找到自变量和因变量之间的最佳线性关系,从而可以在图形上确定一条最佳的直线,即回归线

回归线的斜率和截距可以通过最小化因变量误差的平方和得到(最小二乘法

线性回归主要有两种:一元线性回归和多元线性回归。一元线性回归只有一个自变量,而多元线性回归有多个自变量。拟合多元线性回归的时候,可以利用多项式回归或者曲线回归

逻辑回归

是一种分类算法。通常是利用已知的自变量来预测一个离散型因变量的值(二进制01,真或假,是或否)。

其就是通过拟合一个逻辑函数来预测一个事件发生的概率。所以它预测的是一个概率值。因此其输出在0到1之间。

算法通过筛选出特定参数值使得观察到的样本值出现的概率最大化,来估计参数,而不是像普通回归那样最小化误差的平方和

优化模型的方法:加入交互项、减少特征向量、正则化以及使用非线性模型。

决策树

属于监督式学习,常用来解决分类问题

既可以运用于类别变量也可以作用于连续变量

这个算法可以让我们把一个总体分为两个或多个群组。分组根据能够区分总体的最重要的特征变量/自变量进行。用来分组的具体指标有很多,比如Gini,information Gain, Chi-square,entropy。

其核心就是决策树将总体分成尽量多的不同组别。

支持向量机

一个分类算法。

在这个算法中我们将每一个数据作为一个点在一个n维空间上作图(n是特征数),每一个特征值就代表对应坐标值的大小。比如说我们有两个特征(n就是2):一个人的身高和发长。我们可以将这两个变量在一个二维空间上作图,图上的每个点都有两个坐标值(这些坐标轴也叫做支持向量)。

然后我们要在图中找到一条直线能最大程度将不同组的点分开。两组数据中距离这条线最近的点这条线的距离都应该是最远的。

朴素贝叶斯

是建立在贝叶斯理论上的分类方法。假设条件是自变量之间相互独立。(有放回地袋中摸球、抽奖)

朴素贝叶斯的模型易于建造,并且在分析大量数据问题时效率很高。虽然模型简单,但很多情况下工作得比非常复杂的分类方法还要好。

贝叶斯理论告诉我们如何从先验概率P©,P(x)和条件概率P(x|c)中计算后验概率P(c|x)。

P(c|x)是已知特征x而分类为c的后验概率。

P©是种类c的先验概率。

P(x|c)是种类c具有特征x的可能性。

P(x)是特征x的先验概率。

朴素贝叶斯通常用于文本分类多类别分类问题

KNN

既可以解决分类问题,也可以用于回归问题,但工业上用于分类的情况更多。

KNN先记录所有已知数据,再利用一个距离函数,找出已知数据中距离未知事件最近K组数据,最后按照这K组数据里最常见的类别预测该事件。

距离函数可以是欧式距离,曼哈顿距离,闵氏距离 (Minkowski Distance), 和汉明距离(Hamming Distance)。前三种用于连续变量,汉明距离用于分类变量。如果K=1,那问题就简化为根据最近的数据分类。K值的选取时常是KNN建模里的关键。

在用KNN前需要考虑到:

(1) KNN的计算成本很高

(2) 所有特征应该标准化数量级,否则数量级大的特征在计算距离上会有偏移。

(3) 在进行KNN前预处理数据,例如去除异常值,噪音等。

K-Means

解决聚类问题非监督式学习算法。

利用了一定数量的集群(假设K个集群)对给定数据进行分类。同一集群内的数据点是同类的,不同集群的数据点不同类。

K均值算法如何划分集群:

  1. 从每个集群中选取K个数据点作为质心(centroids)。

  2. 将每一个数据点与距离自己最近的质心划分在同一集群,即生成K个新集群。

  3. 找出新集群的质心,这样就有了新的质心。

  4. 重复2和3,直到结果收敛,即不再有新的质心出现。

怎样确定K的值:

如果我们在每个集群中计算集群中所有点到质心的距离平方和,再将不同集群的距离平方和相加,我们就得到了这个集群方案的总平方和。

我们知道,随着集群数量的增加,总平方和会减少。但是如果用总平方和对K作图,你会发现在某个K值之前总平方和急速减少,但在这个K值之后减少的幅度大大降低,这个值就是最佳的集群数。

随机森林

是对决策树集合的特有名称。相当于用了很多次决策树。

为了给一个新的观察值分类,根据它的特征,每一个决策树都会给出一个分类。随机森林算法选出投票最多的分类作为分类结果。

怎样生成决策树:

  1. 如果训练集中有N种类别,则有重复地随机选取N个样本。这些样本将组成培养决策树的训练集。

  2. 如果有M个特征变量,那么选取数m << M,从而在每个节点上随机选取m个特征变量来分割该节点。m在整个森林养成中保持不变。

  3. 每个决策树都最大程度上进行分割,没有剪枝。

降维算法

手上的数据有非常多的特征。虽然这听起来有利于建立更强大精准的模型,但它们有时候反倒也是建模中的一大难题。

怎样才能从1000或2000个变量里找到最重要的变量呢?这种情况下降维算法及其他算法,如决策树,随机森林,PCA,因子分析,相关矩阵,和缺省值比例等,就能帮我们解决难题。

Gradient Boosting 和 AdaBoost

都是在有大量数据时提高预测准确度的boosting算法。

Boosting是一种集成学习方法。它通过有序结合多个较弱的分类器/估测器的估计结果来提高预测准确度。这些boosting算法在Kaggle,AV Hackthon, CrowdAnalytix等数据科学竞赛中有出色发挥。

你可能感兴趣的:(算法,决策树)