机器学习各方法简介

什么是机器学习?我们把它分成两部分看:
1.必须有一些已经存在的数据,拿来给机器学习。
2.机器学习之后必须给出自己的学习结果,也是是举一会反三。
机器拿到数据后可以有不同的学习方法,这些方法得到的结果不尽相同,可以自主选择。
以下是各方法:

  1. 决策树
    顾名思义:一棵用来决策的树。
    机器学习已有的数据,分析什么情况会导致什么结果,把它画成一颗分叉的树,
    然后如果有新数据来了,带入这棵树来决策应该怎么做。
    比如带入性别,得到结果:性别女则决策买买买,性别男则决策吃吃吃。

  2. 朴素贝叶斯
    贝叶斯是个概率公式。
    你观察数据发现,所有渣男阵营都是锡纸烫,但是好人阵营里有一小部分也是锡纸烫。
    假设所有锡纸烫的人中渣男有80个人,好人有20个人。就得到锡纸烫的渣男概率了。
    概率就是:检测新来的锡纸烫人,他有80%的概率是渣男。

  3. 梯度下降
    顾名思义:一个按照梯度方向,下降最快方向,下降到底的方法。
    你面前有一座山,就是初始数据,你每向山下走一步就是下降一次,问题是如何才能最快下山呢?当然是选择梯度(最陡峭的方向)方向向下走啦!
    梯度的选择是自己设定的,下降距离最大的。可以尝试很多方向。
    这是一个算法,每次需要计算的时候可以调用这个算法。

  4. 线性回归
    顾名思义:线性拟合原来的数据,然后让你看其他数据时,带回(回归)到该拟合线上看。
    怎么看一条线拟合的好不好?
    看看每个点到这条线的距离和,也就是误差和。和越小越好,最好是找到最小值,这时候就可以用上面说的梯度下降方法找最值了。
    我们在实践的过程中发现光看距离,有可能出现负数,这时候该如何解决?
    我们选择把距离都取平方再求和,此时求得的最值依然是原来函数的最值,反正只要找出最小值就可以了,这种方法叫最小二乘法。
    现在终于拟合好了这条线,随意给你一个值,你能大致判断它是在线上的位置就是回归了。

  5. 逻辑回归
    顾名思义:已知原来的数据的逻辑,就是好与不好。拟合原来的数据,线性也好,非线性也好。随便怎么样,反正把好与不好分开来,然后随意丢给你你一个数据问你猜好不好就是逻辑回归。
    逻辑就是分类。
    回归就是随意给你一个数据,你去猜它的类。
    怎么看分类的好不好呢?还是随便画一条线,我们统计一下分正确的点和分错误的点,但是个数这个东西不好弄呀,有可能个数一样但是分的差的很远,我们得想个办法来衡量一下。
    办法就是:如果这个数据分正确了,就加上一个很小的的值,但是一个数据分错了就加上一个很大的值,可以把这个值想象成闪电的强度,我们力图找到一个最小的闪电强度。
    对,转化成数值来衡量之后,我们就又可以用梯度下降法来找最小值了。
    这个闪电叫误差惩罚,最后加起来得到的强度叫误差,越小越好。

  6. 支持向量机
    英文是SVM,S是support 顾名思义:支持,其实翻译成支撑的意思更容易理解。
    我们按照逻辑回归分类,突然发现分隔数据的时候有很多线都成立,但是谁分的更好一点呢?
    总要有个衡量准则,就像逻辑回归线是通过误差值来衡量一样,我们选择支持向量机完成是另外一种方法,就是支撑点,一条线分的好不好就看离这条线最近点的距离是多少(这个距离一定是最小值,这个点就是支撑点),然后尝试第二条符合分隔的线,求出支撑点的距离,一比较,哎嘿,一个大一个小,肯定选距离大的那条线,因为他的支撑性比较好,容错率较高。
    总结来说:
    有不同的线对比,每条线都有支撑着的点,对比一下他们离分割线的距离,距离越大越好,因为分的开一点。这种方法叫支持向量机。

  7. 神经网络
    上面接触的方法都是用一条线分隔,现如今出现的情况是,在已经分隔好的情况下,需要继续取一部分细分,取同时符合两种线的部分,如何操作?
    其实也没什么难度,就直接用两条线分就行啦,为了形象的把这个过程描述出来,就类比到神经元这个概念。
    数据传输过来,进入一个神经元(一条线)判断处理取符合条件的值(可以是0 1类型),再进入另一个神经元(另外那条线)取符合条件的值(可以是0 1类型),把这两个神经元(线)处理好的东西接在一起处理(与运算)判断是否都满足,是则输出,不是则丢弃。
    这样画下来还真是神经网络的样子,所以这种方法叫神经网络。

  8. 核函数
    kernel trick,发音核,之前学的方法我们都默认用直线划分,那是因为给的数据自己就分的很开,我们寻找到合适的直线就可以了,有这样的一种情况,所有的数据再一条直线上,怎么办呢?
    很简单:
    用曲线啊!
    众所周知,曲线的函数表达式有两个字母,一个未知数,他们蕴含某种关系,完全可以把数据区分开!
    但令人感兴趣的是,我们可以提高维度,比如赋予两个字母某种关系,把这个值放在第三个字母上,这样就是三个字母两个未知数的式子啦,这样也叫核函数!
    我们依然可以把核函数理解为分类问题。

总结:有一个忍者,他看到数据,
啪一下直接分成两半了,那么它叫:逻辑回归忍者。
他小心翼翼的对比着边界数据切开,那么他叫:支持向量机忍者。
他交叉砍了好多刀,把数据分成了区域,那么他叫:神经网络忍者。
他对着排成一行的数据挠了挠头,拍桌而起,符合条件的数据因为小震到了上半空间,大的落在了下半空间,那么他叫:核函数忍者。


  1. K均值聚类
    顾名思义:聚类,就是把聚在一起的数据标记出来,聪明的人类一下就能看出来怎么分!
    机器怎么学习呢?
    随机散落几个值(a,b,c),分别求离a,b,c近的数据A,B,C,调整a,b,c到A,B,C中间(K均值的意思)。
    迭代:重新标记离a,b,c近的数据集A,B,C,调整a,b,c到数据集A,B,C中间。
    直到稳定。
    重要的一点是:我们需要提前给定聚类的数量,比如例子中的a,b,c三个类。

  2. 层次聚类
    如果不知道聚类数量怎么办?
    从数据入手,如果两个数据之间距离小于我们设定的值,就合并进一个分组(层次的意思),一直迭代,直到算法结束。
    这样我们就得到了一个根据距离长短分好的聚类了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章