Lv.1
在 【只有大佬才能看懂系列】kernels-kmeans解决非线性问题。 中回复
转载一下知乎上的例子:
作者:王赟 Maigo我来举一个核函数把低维空间映射到高维空间的例子。
下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母。我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。
<figure>
</figure>
我们现在考虑核函数,即“内积平方”。
这里面是二维空间中的两个点。
这个核函数对应着一个二维空间到三维空间的映射,它的表达式是:
可以验证,
在P这个映射下,原来二维空间中的图在三维空间中的像是这个样子:
<figure><noscript><img src=" https://pic2.zhimg.com/c5a7b1b83b844fc5fff033c9a0d5d601_b.jpg" data-rawwidth="720" data-rawheight="342" class="origin_image zh-lightbox-thumb" width="720" data-original=" https://pic2.zhimg.com/c5a7b1b83b844fc5fff033c9a0d5d601_r.jpg"></noscript>
</figure>
(前后轴为x轴,左右轴为y轴,上下轴为z轴)
注意到绿色的平面可以完美地分割红色和紫色,也就是说,两类数据在三维空间中变成线性可分的了。
而三维中的这个判决边界,再映射回二维空间中是这样的:
<figure><noscript><img src=" https://pic3.zhimg.com/8f4a0d456fd9daf934c373024bf15a32_b.jpg" data-rawwidth="720" data-rawheight="329" class="origin_image zh-lightbox-thumb" width="720" data-original=" https://pic3.zhimg.com/8f4a0d456fd9daf934c373024bf15a32_r.jpg"></noscript>
</figure>
这是一条双曲线,它不是线性的
2018-10-04T16:38:15 点赞:0
在 【只有大佬才能看懂系列】kernels-kmeans解决非线性问题。 中回复
升维后直接用感知机就可以了:(参数多了一个,也就是:x*a1 + y*a2 + z*a3 + b)
a1 = 0
a2 = 0
a3 = 0
b = 0
lr = 0.1
def predict(x,y,z):
return x*a1 + y*a2 + z*a3 + b
for i in range(100):
for i in range(len(x1)):
if predict(x1[i][0],x1[i][1],x1[i][2])>=0 and y1[i] == -1:
a1 = a1 + lr*y1[i]*x1[i][0]
a2 = a2 + lr * y1[i] * x1[i][1]
a3 = a3 + lr * y1[i] * x1[i][2]
b = b+lr*y1[i]
if predict(x1[i][0],x1[i][1],x1[i][2])<0 and y1[i] == 1:
a1 = a1 + lr * y1[i] * x1[i][0]
a2 = a2 + lr * y1[i] * x1[i][1]
a3 = a3 + lr * y1[i] * x1[i][2]
b = b + lr * y1[i]
right = 0
for i in range(len(x1)):
if predict(x1[i][0],x1[i][1],x1[i][2])<0 and y1[i] == -1:
right += 1
if predict(x1[i][0],x1[i][1],x1[i][2])>=0 and y1[i] == 1:
right += 1
print(predict(x1[i][0], x1[i][1], x1[i][2]))
print(right)
2018-10-04T22:06:56 点赞:1
在 【只有大佬才能看懂系列】kernels-kmeans解决非线性问题。 中回复
之前核函数的概念写错了,它跟将数据映射到高维不是一个东西。他是将高维数据在低维计算。也就是说我们的数据分布图最后应该是这样的:
2018-10-05T10:06:04 点赞:0
在 【梯度下降】梯度下降入门 中回复
求:(x,y)在y=x²上的斜率:
∴(x+∆x) ² = y+ ∆y
∴x²+ ∆x ² + 2 x ∆x = y + ∆y
∴x²/∆x + ∆x + 2x = y/∆x + ∆y/∆x(上面除以∆x )
∴x²/∆x + ∆x + 2x - y/∆x = ∆y/∆x
又: ∆x, ∆y= 1/∞, x²= y
∴ ∆x + 2x = ∆y/∆x
∴ 2x = ∆y/∆x 注释:快速求K法
2018-10-26T19:22:49 点赞:0
在 【梯度下降】梯度下降入门 中回复
import matplotlib.pyplot as plt
th = 1
def function(a,devi=False):
if devi:
return 2*a
else:
return a ** 2
F = [i for i in range(-100,100)]
print(F)
F = [function(i) for i in F ]
lr = 0.01
x = []
y = []
for i in range(100):
th = th-lr*function(th,True)
x.append(th*3)
y.append(th**2)
print(th)
plt.scatter(x,y)
plt.show()
plt.plot(F)
plt.show()
2018-10-26T19:23:54 点赞:0
在 【梯度下降(原创教程)】横看成岭侧成峰,解决多变量梯度下降 中回复
2018-11-03T22:52:28 点赞:0
在 【梯度下降,最终章】线性回归 中回复
往期精彩:
1:https://www.codemao.cn/community/166919
2:https://www.codemao.cn/community/166722
3:https://www.codemao.cn/community/166752
2018-11-09T20:07:03 点赞:0
在 【拓展—局部加权线性回归】一次函数分类正态分布的数据 中回复
该算法的缺点就是要预测的的数据范围不能超过数据集的范围,所以这个算法最好在数据较大时使用。你可以试一下,用这个算法在这个小数据集上是预测不出当学习时间为12以上的学习效率的,必须要更多的数据才可以:
2018-11-10T11:17:04 点赞:0
在 【拓展—局部加权线性回归】一次函数分类正态分布的数据 中回复
往期精彩:
1:https://www.codemao.cn/community/167062
2:https://www.codemao.cn/community/166919
3:https://www.codemao.cn/community/166722
4:https://www.codemao.cn/community/166752
2018-11-10T11:20:41 点赞:0