机器学习(Coursera吴恩达)(六)
标签(空格分隔): 机器学习 SVM 聚类
支持向量机
从逻辑回归推出SVM。
逻辑回归:如果有一个1
样本,希望得到的
hθ(x)
h
θ
(
x
)
趋近于1,这就要求
θTx
θ
T
x
应远大于0。反之如果y=0
,就需要远小于0。
现在修改代价函数。
然后用替换之后的两个代价函数 cost1(z),cost2(z) c o s t 1 ( z ) , c o s t 2 ( z ) 构建支持向量机。
这里有需要注意的点:
1. 去除了1/m这一项,因为这就是个常数项,在svm的通常习惯中不用这一项。
2. 在SVM中用C
作为常量,删除了正则化项中的
λ
λ
。可以把C考虑成
1λ
1
λ
之类的东西。
3. 逻辑回归中假设函数h
输出的是可能概率。SVM则直接输出1或0。
最大间距(margen)
SVM是为了获取最大的间距分类器。将二分类样本分开。
C如果设置太大,会因为一个异常值的影响,导致整体性能的改变。也就是类似
λ
λ
设置的太小,导致过拟合。
范数??
核函数
对于无法用直线进行分类的问题。使用核函数计算与地表landmark的结果。
利用一系列新的特征替换模型中的原特征。例如
f1=x1,f2=x2,f3=x1x2......
f
1
=
x
1
,
f
2
=
x
2
,
f
3
=
x
1
x
2......
这样使用原始特征作为新特征。
那么现在需要一个新的方法,来寻找新特征,而不是用原始特征的组合。也就是利用核函数计算得到新特征。
首先利用x的各个特征与我们预先设定的地标(landmark)l1l2l3,的近似程度来选取新的特征f1f2f3。
例如高斯核函数:
也就是可以说使用核函数,计算与地标的近似程度,将landmark设置为某一类的几个中心,然后计算与I
个核函数的值,用这I
个值作为新的特征值,因此
hθ(x)=θ0+θ1f1+θ2f2+θ3f3
h
θ
(
x
)
=
θ
0
+
θ
1
f
1
+
θ
2
f
2
+
θ
3
f
3
。
这样的话可以得到分类为1的范围,和拒绝1的范围。得到分类的线。
接下来就是如何选择landmark。
通常是根据训练集的数量选择地标的数量,即如果训练集中有m个实例,则我们选取m个地标,并且令
l(1)=x(1),l(2)=x(2),l(3)=x(3),...,l(m)=x(m)
l
(
1
)
=
x
(
1
)
,
l
(
2
)
=
x
(
2
)
,
l
(
3
)
=
x
(
3
)
,
.
.
.
,
l
(
m
)
=
x
(
m
)
。这样的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上。
下面我们将核函数运用到SVM中:
* 修改假设:
给定x,计算新特征f,当
\thetaf>=0
\thetaf
>=
0
时,预测
y=1
y
=
1
,否则反之。
相应的修改代价函数为:
∑n=mj=1θ2j=θTθ
∑
j
=
1
n
=
m
θ
j
2
=
θ
T
θ
,
minC∑mi=1[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+12∑n=mj=1θ2j
m
i
n
C
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
θ
T
f
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
θ
T
f
(
i
)
)
]
+
1
2
∑
j
=
1
n
=
m
θ
j
2
我们还需要对最后的正则化项进行未调整,在计算
∑n=mj=1θ2j=θTθ
∑
j
=
1
n
=
m
θ
j
2
=
θ
T
θ
时,我们用
θTMθ
θ
T
M
θ
进行代替,其中
M
M
是根据选择的核函数而不同的一个矩阵。
C和的影响:
C=1/λ C = 1 / λ
C较大时,相当于 λ λ 较小,可能会导致过拟合,高方差;
C较小时,。。。。。。。。。。,。。。。。欠拟合,高偏差。
δ δ 较大:可能导致低方差,高偏差。
δ δ 较小:可能导致低偏差,高方差。聚类
聚类是无监督学习的一种。
K-means
是最普及的聚类算法,是一个迭代算法,假设我们想要将数据分为n个组:
1. 首先选择K个随机的点,成为聚类中心
2. 对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。。
3. 计算每一个组的平均值,将该组所关联的中心点一道平均值的位置。
4. 重复以上几步至中心点不再变化。
伪代码
优化目标
k-means的代价函数(又称畸变函数distortion function):
选择聚类数
“肘部法则”, 我们需要做的是改变K值,也就是聚类的类别数。
向上面这个图就应该选K=3。