0. 线性回归
假设函数:
y
^
=
w
T
+
b
\hat y=w^T+b
y^=wT+b
损失函数:
J
(
w
,
b
)
=
1
2
m
∑
i
=
1
N
(
y
i
−
(
w
T
+
b
)
i
)
2
J(w,b) = \frac{1}{2m} \sum\limits_{i=1}^{N}(y^i - (w^T+b)^i)^2
J(w,b)=2m1i=1∑N(yi−(wT+b)i)2
1. Logistic Regression
假设函数:
y
^
=
h
(
z
)
=
1
1
+
e
−
z
=
1
1
+
e
−
(
w
T
x
+
b
)
\widehat{y}=h(z)=\frac{1}{1+e^{-z}}= \frac{1}{1+e^{-(w^Tx+b)}}
y
=h(z)=1+e−z1=1+e−(wTx+b)1
损失函数:
J
(
w
,
b
)
=
1
n
∑
i
=
1
n
L
(
y
^
i
,
y
i
)
=
−
1
n
∑
i
=
1
n
[
y
i
l
o
g
y
^
i
+
(
1
−
y
i
)
l
o
g
(
1
−
y
^
i
)
]
J(w,b)=\frac{1}{n}\sum_{i=1}^{n}{L({\hat{y}}^i,y^i)}=-\frac{1}{n}\sum_{i=1}^{n}{[y^ilog{\hat{y}}^i+(1-y^i)log(1-{\hat{y}}^i)]}
J(w,b)=n1i=1∑nL(y^i,yi)=−n1i=1∑n[yilogy^i+(1−yi)log(1−y^i)]
LR 的优缺点
优点:
- 形式简单,模型的可解释性非常好。
- 模型效果不错。
- 资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
- 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。
缺点:
- 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
- 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
- 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
- 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。
2. SVM
假设函数:
y
^
=
w
T
x
+
b
\hat y=w^Tx+b
y^=wTx+b
损失函数:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
n
α
i
(
1
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
)
,
α
i
>
0
L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^n \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)), \ \alpha_i>0
L(w,b,α)=21∣∣w∣∣2+i=1∑nαi(1−y(i)(wTx(i)+b)), αi>0
SVM 的优缺点
优点:
- 可以有效解决高维特征的分类和回归问题。
- 无需依赖全体样本,
只依赖支持向量
。 - 有大量的核技巧可以使用,从而可以应对线性不可分。
- 样本量
中等偏小
照样有较好的效果。
缺点:
- 对特征缺失值敏感。SVM本来就是希望数据在特征空间中线性可分,由于特征值确实,导致训练结果收到影响。
- 如果特征维度远大于样本个数,SVM表现一般。
- SVM在样本巨大且使用核函数时计算量很大。所以对大规模数据训练比较困难。
- 非线性数据的核函数选择依旧没有标准。
- 特征的多样性导致很少使用svm,因为 svm 本质上是属于一个几何模型,这个模型需要去定义 instance 之间的 kernel 或者 similarity(线性svm中的内积),而我们无法预先设定一个很好的similarity。这样的数学模型使得 svm 更适合去处理 “同性质”的特征。
3. K-means
损失函数(i个样本,j个聚簇分类):
J
=
∑
j
=
1
K
∑
i
=
1
N
∣
x
i
−
u
j
∣
2
J = \sum\limits_{j =1}^{K} \sum\limits_{i=1}^{N}|x_i-u_j|^2
J=j=1∑Ki=1∑N∣xi−uj∣2
k-means 的优缺点
优点:
- 实现简单
- 收敛快
- 虽然是局部最优结果,但一般情况就已经可以满足聚类需求了
缺点:
- k-means是局部最优的,容易受到初始质心的影响;
- 同时,k值的选取也会直接影响聚类结果,最优聚类的k值应与样本数据本身的结构信息相吻合,而这种结构信息是很难去掌握,因此选取最优k值是非常困难的。
- K均值算法并不适合所有的数据类型。它不能处理非球形簇、不同尺寸和不同密度的簇。面对非凸的数据分布形状时,可能新需要引入核函数来优化。
- 对离群点的数据进行聚类时,K均值也有问题,也就是
对异常数据敏感
。这种情况下,离群点检测和删除有很大的帮助。一般使用k-means之前需要对数据做预处理。
4. Random Forest
处理高维数据,处理特征遗失数据,处理不平衡数据是随机森林的长处。
RF的优缺点
优点:
- 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
- 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。 在训练后,可以给出各个特征对于输出的重要性
- 由于采用了随机采样,训练出的模型的方差小,泛化能力强。 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
- 对部分异常值、特征缺失不敏感。
- 模型可以处理不平衡数据,平衡误差
- 最终训练结果,可以对特征排序,选择比较重要的特征
- 相对Bagging能够收敛于更小的泛化误差
缺点:
- 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
- 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
- 随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
- 对于许多统计建模者来说,随机森林给人的感觉就像一个黑盒子,你无法控制模型内部的运行。只能在不同的参数和随机种子之间进行尝试。
- 对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类。
5. Naive Bayes
优缺点
优点:
- 朴素贝叶斯算法假设了数据集属性之间是相互独立的,因此算法的逻辑性十分简单,并且算法较为稳定,当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。换句话说就是朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集不会呈现出太大的差异性。当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。
- 对
小规模的数据
表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。 - 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点:
- 属性独立性的条件同时也是朴素贝叶斯分类器的不足之处。数据集属性的
独立性在很多情况下是很难满足
的,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。 - 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
- 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
- 对输入数据的表达形式很敏感