【Day 10】分类(Classification)(上)

  • 找一个function,其输入为 https://chart.googleapis.com/chart?cht=tx&chl=x,输出为 https://chart.googleapis.com/chart?cht=tx&chl=x 属於哪一个class。

范例应用

  • 找一个输入是某一只宝可梦,输出是那只宝可梦属性的function。

如何把宝可梦当作数值输入?

宝可梦有很多特性能够数值化,例如:整体的强度、生命值、攻击力、防御力、特殊攻击力、特殊攻击力以及防御力等等,而我们就能将这些数值组成一个vector来表示宝可梦。

如何做分类?

Classification as Regression?

假设我们只要输出 https://chart.googleapis.com/chart?cht=tx&chl=x 属於 class 1 或 class 2 ,那用Regression就可以将 class 1 当作 1,class 2 当作 -1 去训练,训练完模型在测试的时候,如果输出的数值比较接近 1 就把它分类为 class 1,比较接近 -1 就把它分类为 class 2,即以 0 为分类标准。
然而这样会有一个问题,就是当你有一些训练资料让模型输出远大於 1 的时候就会让原本的模型产生很大的误差,而导致模型会把模型进行调整,让误差不要这麽大,反而对classification来说不是一个好的function。

理想的做法

在function https://chart.googleapis.com/chart?cht=tx&chl=f(x) 里面增加一个function https://chart.googleapis.com/chart?cht=tx&chl=g(x),如果输出大於零就分类为 class 1,其他就分类为 class 2。Loss则可以定义成function https://chart.googleapis.com/chart?cht=tx&chl=f 在训练资料上预测错误的次数。透过Perceptron, SVM等方法才找到最好的function,这些方法以後有机会会再介绍。

生成模型(Generative Model)

假设有两个类别,里面都有篮球跟绿球,从中拿出一颗球 https://chart.googleapis.com/chart?cht=tx&chl=x 出来但不知道是从哪个类别拿出来的,因此我们就必须去计算那颗球从两个类别拿出来的机率分别是多少。
我们需要知道 class 1 和 class 2 抽一个 https://chart.googleapis.com/chart?cht=tx&chl=x 出来的机率 https://chart.googleapis.com/chart?cht=tx&chl=P(C_1)%2C%20P(C_2),以及 class 1 和 class 2 抽出我们现在考虑的这个 https://chart.googleapis.com/chart?cht=tx&chl=x 的机率 https://chart.googleapis.com/chart?cht=tx&chl=P(x%7CC_1)%2C%20P(x%7CC_2)。有了这些数值我们就可以计算这个 https://chart.googleapis.com/chart?cht=tx&chl=x 属於 class 1 的机率 https://chart.googleapis.com/chart?cht=tx&chl=P(C_1%7Cx),就可以知道说 https://chart.googleapis.com/chart?cht=tx&chl=x 从哪个class拿出来的机率最大,机率最大的就是正确答案,而我们会希望从训练资料里把我们需要的四个机率的值估测出来。
生成模型(Generative Model) 可以生成一个 https://chart.googleapis.com/chart?cht=tx&chl=x,因为可以计算某一个 https://chart.googleapis.com/chart?cht=tx&chl=x 出现的机率,如果可以计算出每一个 https://chart.googleapis.com/chart?cht=tx&chl=x 出现的机率,你就可以知道 https://chart.googleapis.com/chart?cht=tx&chl=x 的分布,则可以用这个分布来产生 https://chart.googleapis.com/chart?cht=tx&chl=x

事前机率(Prior Probability)

  • 计算 https://chart.googleapis.com/chart?cht=tx&chl=P(C_1)%2C%20P(C_2)

假设 class 1 是水系的宝可梦,class 2 是一般系的宝可梦,ID < 400 的当作训练资料,其余当作测试资料,可以发现训练资料里有79只是水系,61只是一般系,因此即可算出 https://chart.googleapis.com/chart?cht=tx&chl=P(C_1)%2C%20P(C_2)

Probability from Class

  • 计算 https://chart.googleapis.com/chart?cht=tx&chl=P(x%7CC_1)%2C%20P(x%7CC_2)
  • 例:从水系宝可梦里挑一只出来,它是海龟的机率是多少?

假设海龟不在你的训练资料里面,就必须拿前面提到的表示宝可梦的vector,也就是宝可梦的特徵值,去估测从水系宝可梦里挑一只出来,它是海龟的机率是多少,而训练资料的79只宝可梦可以想像成是从一个高斯分布(Gaussian Distribution)取样出来的。


参考资料

李宏毅老师 - ML Lecture 4


<<:  Day10:蛋糕上的樱桃

>>:  REG档撰写—登录档脚本其实不难

组合语言跟你 SAY HELLO!!

各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是分享给点进来的朋友,知道一些程序语言...

[Day 22] - React 环境建置

可能是题目订的太大,感觉会做不完啊 剩下8天 差不多该开始前端的部分了 好,开始玩React nod...

24. 工程师之伤 x 久坐 x 徒手治疗

本篇是病人的非专业心得分享。 酸痛其实是老毛病,因为工程师一不小心就久坐,长期会让酸痛恶化。 如果...

元件类别库魔术

今天要来介绍如何将自己撰写的元件包成元件类别库,并提供给 Blazor Server 与 Blazo...

[day11]串接API实测-订单单笔查询API

订单单笔查询API设定 使用者於费用缴交申请後,汇款或刷卡後,查询费用缴交之相关纪录。 订单建置AP...