摘要:分类问题回到本系列的第一篇文章机器学习从入门到放弃之算法,在里面有这样的一个问题黄点代表类电影的分布,绿色代表类电影的分布,紫色代表需要分类的电影样本。
分类问题
回到本系列的第一篇文章机器学习从入门到放弃之KNN算法,在里面有这样的一个问题
黄点代表1类电影的分布,绿色代表0类电影的分布,紫色代表需要分类的电影样本。
那么该怎么判别紫色的那颗点所在的类别呢?
之前给出的是KNN算法,通过计算紫色点都周边的剧场的长短,来判断紫色点属于哪个类别。现在有这样一种极端情况,黄点和绿点在紫点周围呈圆周分布,距离一样,咋办?
图画得不是太好,大家理会我的意思就行。
在这种情况,假如像下图这样的情况,就容易处理得多了。
红线的下方是黄色种类,上方时绿色种类。
这种情况我们称之为线性分类,关于如何拟合出这条线程函数下面会讲述。现在先来说说,既然这叫线性分类,那么必然会有非线性的情况啊,那咋办呢?
没错,如果特征可以被线性函数全部表达,这自然是理想情况,但实际问题中更多的非线性分类。
这时,我们需要将线性函数转换为非线性函数。那怎么转换呢,很简单,将线性函数(假设叫z),扔到某一非线性函数f(x)内,得到新的表达式y = f(z),就是我们所需的非线性分类器了,而f(x)也就作激活函数,它有很多种,本文只介绍逻辑回归所使用到的sigmoid函数,其表达式是
其图像有一个漂亮的S型
可见在x的取值范围足够大的时候,其从0变1的过程可以忽略不计,因此,我们习惯的把>0.5归为1类,<0.5归为0类,那么恰好是0.5怎么办?这个概率是极低的,如果真的是0.5,那就随机归类,然后出门买张彩票吧,说不定就不用继续当程序员了。 (/≥▽≤/)
算法介绍上面函数图像引用云深不知处的博客
回到表达式上,可知函数的变量是z其余都是常量,所要要求解该分类函数的值,就是要确定z的值而z是线性方程,基本的数学知识不难知道,
$$z=a1x1+a2x2……an*xn$$
其中[x1……xn]是输入向量,所以训练的过程就是确定于[a1,a2……an]的值,使得该表达式对于多个输入向量的输出值正确率最高。
下面开始讲述求最佳的[a1,a2……an]的方法
显然,我们可以设计一个函数来衡量[a1,a2……an]是否最佳,比如说这样的
$$J(a) = sum_{n=0}(f_a(xi)-y)^2$$
显然当J(a)达到最小值时,a的值最佳。方法如下,
初始化weight,可以使用随机值
代入式子得到err = y - predict
weight = weight + alpha * error * x_train[i],其中alpha称为学习速率,太小会影响函数的收敛速度,太大刚才就不收敛了。
为了解决上述问题,在《机器学习实战中》使用了动态更新alpha的方法,式子为alpha = 4/(1+i)+0.01
上述修改weight的过程称为梯度下降法,其中我故意略去了数学证明部分,需要的同学请自行查找专业资料。
代码实现github
文章描述如有错误,欢迎指正。
关注我我的个人公众号开启啦,微信公众号搜索肥兔子的碎碎语,你能查看到更多学习心得的分享噢⊙ω⊙。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38073.html
摘要:总言言之,决策树第一个是需要从大量的已存在的样本中推出可供做决策的规则,同时,这个规则应该避免做无谓的损耗。算法原理构造决策树的关键步骤是分裂属性。这时分裂属性可能会遇到三种不同的情况对离散值生成非二叉决策树。对离散值生成二叉决策树。 算法背景 决策树故名思意是用于基于条件来做决策的,而它运行的逻辑相比一些复杂的算法更容易理解,只需按条件遍历树就可以了,需要花点心思的是理解如何建立决策...
摘要:在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。相关学习链接,,入门后的体验在入门了机器学习之后,在实际工作中,绝大多数的情况下你并不需要去创造一个新的算法。 机器学习在很多眼里就是香饽饽,因为机器学习相关的岗位在当前市场待遇不错,但同时机器学习在很多人面前又是一座大山,因为发现它太难学了。在这里我分享下我个人入门机器学习的经历,希望能对大家能有所帮助。 PS:这篇文章...
阅读 2294·2023-04-26 00:01
阅读 797·2021-10-27 14:13
阅读 1815·2021-09-02 15:11
阅读 3383·2019-08-29 12:52
阅读 529·2019-08-26 12:00
阅读 2571·2019-08-26 10:57
阅读 3406·2019-08-26 10:32
阅读 2848·2019-08-23 18:29