Machine Learning 之 Learning_snow_lyy的博客-程序员宝宝

技术标签: 算法  机器学习  Machine Learning  

Machine Learning 之 PLA

总结自台大林轩田老师的machine learning 课程:https://www.youtube.com/playlist?list=PLXVfgk9fNX2I7tB6oIINGBmW50rrmFTqf

Learning Model

由银行是否发放信用卡为例引入机器学习模型,如图1所示:

图1:Learning Model
学习的前提有:
  1. 输入x与输出y之间存在可以学习的规则f
  2. 在学习之前,我们不知道xy之间的规则(我之前觉得这是显然的事情,不然还学什么~)
  3. 有数据data
所以学习的目标就是通过演算法A选择合适的假设h使得规则g与f尽可能的接近。所以g是演算法从很多规则H中选择出来的,它认为最接近f的规则。依然以银行为例,H中可能是以用户收入大小作为规则,或者以用户年龄、用户职业能作为规则,所以演算法就是种种规则中选择出最优的h作为g。所以整个过程就是: A  takes D and H to get g that approximates target f.

Machine Learning and other Fields

  • Machine Learning     VS        Data Mining
             ML: use data to compute hypothesis g that approximates target f.  可以说目标是很明确的
             DM: use ( huge) data to find property that is interesting. 可能仅仅是希望找到数据间的有趣联系
  • Machine Learning     VS       Artificial Intelligence
             AI: compute something that shows intelligent behavior.  例如chess playing.  ML是实现AI的一种方法。
  • Machine Learning     VS       Statistics
    S: use data to make inference about an unknown process.   统计相对机器学习更注重数学推论,统计的很多方法可以用于实现ML。


Classification: Perceptron Learning Algorithm (PLA)

是否题的学习过程,依然以银行是否发放信用卡为例。Data中每一个用户信息可以包括多方面的特征,如年龄,工龄,收入,职业等。在决定发放信用卡的时候不同的特征我们可以赋予不同的权重。如果银行更关心年收入,那么年收入的权重会大一些,相对而言年龄的权重可能会小一些。在判断是否题的时候,可以利用这些特征*权重的综合与阈值之间的关系来决定是或者否。如图2所示:

图2:Classification
如图2所示,不同的权重值,不同的threshold就会对应一个 h。为了方便计算,引入x0和w0

图3:Vetor Form of Perceptron Hypothesis
所以我们的演算法从H中选择的g就是将data完美分割为两类:是、否。以2维空间为例,W'x=0就是平面上的一条线。而PLA就是以一个点为起始,画一条线,不断判断(xi,yi)是否分类正确,当发现分类不正确的点时开始修正w,画新的线,再去找不正确的点...     修正的方法如图4所示:

图4:Correction of weight
如果期望值为正,sign(w'x)确是负的,wxcos(angle)说明夹角太大,修正。修正过程到所有data都被h正确分割才会停止。这里就有一个问题:这个演算法会停下来吗?哪些情况下会停下来,哪些时候永远不会停下来?如图5所示,只有线性可分的数据才会存在一条线可以将数据分割。


那么如果data线性可分,演算法PLA会停下来吗?这里依然截图林老师的推导过程,主要思想即:如果停会有一个wf完美分割data,那么应该存在一个wt=wf。这就转化为了衡量两个向量是否接近,衡量两个向量是否接近可以用內积来判断。內积越大可以是向量长度引起的,也可以是角度上越来越接近,所以如果可以证明不是长度引起的,则两个內积越来越大就可以肯定wt与wf越来越接近,最终停止。

图5:內积越来越大
然后只需要证明wt的长度不会增长太快,那么內积越来越大就可以认为是由角度引起的,wt与wf越来越接近。

图6:Not Grow Too Fast
这里的constant我是真的没有推导出来 敲打
PLA有个问题就是1.首先我们是假设data是线性可分的,实际上并不知道;2.data中一般是由noisy的,不可能完美分割的情况下我们可以期望找到一个错误最小的w,错误最小的求解过程是NP-hard to solve。解决方法 modify PLA  by keeping best weights in pocket.  将更好的w抓在手中。比PLA费时间:a.存一个w,然后计算下一个;b.计算得到w后要遍历所以数据,然后决定哪个w更好。而PLA只需要找到一个错误的点就可以开始修正。
到目前开始林老师课程思想的精髓我应该还是get到了!!开心:-)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/snow_lyy/article/details/75212601

智能推荐

unity3d 取锚点位置_三大指数同步突破压力位置,后市可期_weixin_39955355的博客-程序员宝宝

周二沪指早盘沪指低开5点于3353点,创业板低开7点于2769点!券商,保险领跌,开盘以后市场回踩消化,盘中最低3334点以后企稳反弹,创业板早盘翻红领涨,主板则略处于震荡中,但收于上午指数震荡的较高位置!午后,深成指继续保持涨势,走出新高13820点,全天涨幅0.65%!收盘至13797 点!沪指紧随其后,尾盘也开始加速走出新高3361点!,收盘至3359点,涨幅0.04%!创业早...

Eclipse和JDK安装、配置JDK环境变量,Eclipse导入本地JDK,为项目配置对应JDK_eclipse jdk_featureA的博客-程序员宝宝

Eclipse安装,JDK安装,jdk环境变量配置,Eclipse导入jdk,为项目配置jdk。

jenkins发送测试报告,并添加附件_芜疆的博客-程序员宝宝

jenkins发送测试报告安装发送邮件插件Email Extension系统设置给jenkins设置一个邮箱这个邮箱和发件人认证设置一致,不能填不一样的在系统管理–系统设置设置发件人认证信息及一些邮件默认设置系统管理—系统设置项目设置今天累了,听下会分解...

数据集按照csv格式标签划分为训练集和验证集(完整代码)_Dreamcatcher风的博客-程序员宝宝_划分训练集和验证集代码

前言最近参加一个比赛,拿到的数据集分为两部分,需要先进行划分,于是看看网上有没有代码可以借用,这样效率更高,但是发现,大部分代码都是bug满天飞,作者也不给出必要的说明,于是只能自己修改和重写。(不忍吐槽,那些复制别人代码的人,能不能自己跑通了再发布?)正文前排提示:我的方法不是一步到位那种,而是拆分为两部分:1) 先按照标签移动数据集。2) 按照比例划分出验证集(或测试集)。之所以这样做,是因为之前我参加过一个比赛,写了一个划分验证集的脚步,现在就直接用了。拿到的数据集分为._1671465600

通关!游戏设计之道的学习笔记(七)关卡设计_MicroLYZ的博客-程序员宝宝

关卡关卡在电子游戏中有多重定义,有时叫做回合、波、关、幕、章、地图或者世界;它们都有自己独特的含义:1、回合:在游戏中总是要一遍又一遍地重复同样的行为或者相似的玩法;2、波:通常指战斗,整个游戏可以完全有一波波的敌人构成;3、关:一般可与“波”通用,不过“关”更常用,通常指Boss的行为;4、幕和章:通常是开发者希望玩家更专于游戏的剧情时用到;5、地图:通常游戏的场景,在第

随便推点

无标度网络 matlab,无标度网络及MATLAB建模_寿光东骏汽车音响的博客-程序员宝宝

无标度网络1.简介传统的随机网络(如ER模型),尽管连接是随机设置的,但大部分节点的连接数目会大致相同,即节点的分布方式遵循钟形的泊松分布,有一个特征性的“平均数”。连接数目比平均数高许多或低许多的节点都极少,随着连接数的增大,其概率呈指数式迅速递减。故随机网络亦称指数网络。现实世界的网络大部分都不是随机网络,少数的节点往往拥有大量的连接,而大部分节点却很少,一般而言他们符合zipf定律,(也就是...

python dll 指针_python 调用dll中c或c++语言的带指针方法,_weixin_39957027的博客-程序员宝宝

在项目开发中遇到了,python需要去调用一个动态链接库dll中的c++方法。这个方法的参数为一个指针类型的参数,一个bool类型参数,在python中并未对数字类型进行区分。int LP_Agc ( double * a,bool b= true)所以在调用这个方法之前,第一步要将python中的类型转换为c语言类型。这个应该是python自带的a = c_double(1.0)#同理b ...

C11:mutex和lock_guard的使用._闭上左眼看世界的博客-程序员宝宝_lock_guard<mutex>

在C++11中,引入了有关线程的一系列库.且都在std命名空间内.下面演示一个使用线程的例子.非常的简单.引入了thread和mutex头文件.#include &amp;lt;iostream&amp;gt;#include &amp;lt;thread&amp;gt;#include &amp;lt;mutex&amp;gt;using namespace std;int g_i = 0;mutex g_mutex;voi...

python3下使用有道翻译网页版实现翻译功能~~~附源码_diao49908的博客-程序员宝宝

有道在线翻译:http://fanyi.youdao.com/在python3中,使用post提交数据进行翻译,默认中英,可更改语言按F12 打开开发者工具,在左侧输入“我爱你”翻译,在右侧观察network中提交的post数据Form Data格式,如下在preview中查看翻译结果,可以看出是字典格式逻辑关系清楚之后,那么就在pyt...

c语言求n个数中最大值和最小值,C语言:从键盘输入n个数,求最大值和最小值(用数组)..._weixin_39952182的博客-程序员宝宝

满意答案zxyev2020.07.01采纳率:51%等级:7已帮助:608人#include#include#defineARR_LEN255/*数组长度上限*/#defineelemTypeint/*元素类型*//*输入数组*//*arr[]:输入目标数组;len:元素个数*/voidinputArray(elemTypearr[],intlen)...

拼多多商家版知识解答-企立方_企立方的博客-程序员宝宝

拼多多作为下沉市场开发的主力APP。一直都是深受很多人喜欢, 虽然他的负面消息也有,但是哪个企业还没有点负面消息呐,这个完全不妨碍大多数人对于拼多多的喜欢。有人喜欢了那么自然而然的,入驻的商家就多了。 商家们肯定要考虑到我要怎么在这个行业里面生存下去的。毕竟大家入驻也不是为了做慈善的。都是为了赚钱的。那么我们要怎么在拼多多市场里面占据一席之地呐。首先你的店铺得生存下去。正常的说法就是你的店铺不能没有流量。得有单啊。有单了你才能有继续下去的动力啊。这个是最难的一步, 也是很多人做着做着就放弃的原因,那么前期

推荐文章

热门文章

相关标签