写在开头
本博客内容纯粹用于记录自己所学所得,如有错误,望各位大朋友狠狠指出!
本次内容所使用计算机语言——Python
对机器学习有了解过的人,或多或少都会知道PLA(Perceptron Learning Algorithm)算法。
这可以说是入门时必然会接触到的一个算法,而有效的理解将对于后期的整体学习非常有帮助。
通过一个基础的算法实现,可以让你的逻辑思维得到提升。
引入
我们可以试想一些例子,来具体化这个概念,弄清楚其到底可以应用到什么领域。
对于PLA算法,最经典的例子莫过于“信用卡审批”系统。
大家可以根据个人常识作个思考,当银行要决定通过一个客户的信用卡申请时,有什么因素是需要作出考虑的?
年收入?年龄?工龄?亦或是资金状况?通俗地来说,考虑到的方面应该是包含了一切可以衡量申请人的信用情况的因素。
当我们定下了这些衡量的因素,每个因素必定有其正负的影响力,我们可以称之为“权重”。
通过一条计算的公式,例如:
权重1 x 因素1 + 权重2 x 因素2 + ··· + 权重n x 因素n = 信用分数
当信用分数大于阈值时,通过;当信用分数小于阈值时,不通过。
这里我们可以做个简单的变式:
权重1 x 因素1 + 权重2 x 因素2 + ··· + 权重n x 因素n - 阈值 = 某个值
这时的式子其实对于机器来说还不太友好,我将使用一个sign(x)函数(x>0返回1,x<0返回-1),这时的返回值将是机器喜欢的1与-1。
把“某个值”代入x,式子将变为:
sign(权重1 x 因素1 + 权重2 x 因素2 + ··· + 权重n x 因素n - 阈值)
这时的式子还是不太友好,于是,把“-阈值”当作权重0,并乘以一个恒为1的因素0,并令其等于h,式子将变为:
h = sign(权重1 x 因素1 + 权重2 x 因素2 + ··· + 权重n x 因素n + 权重0)
h必定是+1或者-1,我们则称之为“标签值”。
接下来,思路将直接浮现到我们面前。我们可以直观地认为,当“标签值”为正时,这位申请人将能审批通过,同样地,当“标签值”为负时,审批不通过。
这时,PLA算法的作用突显在哪里呢?它将为我们提供一个超平面——可以区分“审批通过者”和“审批不通过者”的平面。
可能到这里,有些人会有这样的疑问:区分开了又如何?有什么用处吗?
大家可以试想一下,当银行面对着十几位顾客时,对各项信用审核进行人工操作其实问题不大,但情况是银行面对的人群数量往往是以万为单位计算的。
当基数过大时,机器学习的能力便体现了出来。对庞大数据的分类、分析等各种操作,大大减少了人工成本,为各种机构的发展提供了准确的方向,减少各种决策时间。(个人观点)
主要过程
本次我所使用的数据,是我自己编了个程序直接生成的,而考虑到的因素暂定为两个,这是最为基础的版本而且能让大家有更直观的感觉