特徵处理的概念 | ML#Day7

所谓参数,是在ML里面最关键也最麻烦的部分,俗话说garbage in garbage out,输入的内容不洽当,模型做得再好也无用武之地。

在ML里面会纳入的参数,我们也称之为特徵,参数的内容值也称作特徵值,这个所谓特徵值是一个不精准的口语讲法,跟数学上的「特徵值」有些出入,事先声明接下来讲的特徵值是一个概念名词而已,讲得是参数内容。

收集资料的概念,其实大家不难理解,透过log data或者DB的raw data,基本上身为系统工程师的一员,能够轻易取得资料或者做些对资料收集上的调整。

决定完命题之後,第一的困难会是参数上的处理,也就是所谓的「资料清洗」和「特徵工程」,而其中「资料清洗」相对我们本业来说,是相对简单的部分,本身log资料能够在elk完整显现,已经是历经一段格式整理和规范之下的产物,系统本身也有资料parser或者二次重组的服务,所以在这一点,所谓的基础建设问题,有着先天的优势。

问题会在於「特徵工程」上,编码的处理方式是我们未曾经历的体验,为什麽需要编码呢?问题回到我们要训练的模型,是一堆数学公式的运算,运算後得出的也是一个数学函式的模型,简单的概念例如地址、客户性别、客户登入的装置来源等等,这些资料在经过转换成数字之前,是无法参与数学运算,所以这些资料要经过「编码」。

编出的数字,有时候因为数字本身有次序性,因此编码方式就需要有所考量,举例来说:0、1、2、3、4、5,不只我们直觉上就对这些关系有大小之分,连电脑系统的四则运算都会对它们的等式都会有所区别。

以下举两个常见的编码例子:

有顺序性的编码(Ordinal Encoding)

假设客户的月收入用级距万元区分

  1. 10000元以下 ⇒ 编成 0
  2. 10000~20000 ⇒ 编成 1
  3. 20000~30000 ⇒ 编成 2
  4. 30000~40000 ⇒ 编成 3
  5. 40000~50000 ⇒ 编成 4
  6. 50000以上 ⇒ 编成 5

原本的资料本身就有次序的意义,所以编码也要使用有次序的编码比较适用。

无顺序性的编码(One-Hot Encoding)

假设居住地有 基隆市、台北市、新北市、桃园市、台中市、高雄市

将这6个地区编成0~5就不太适合,因为这些地区资料本身无前後次序之分。

比较好的做法,是比方说编成2进位的形式之类,比较符合资料的原意。

基隆市 ⇒ 000001

台北市 ⇒ 000010

新北市 ⇒ 000100

桃园市 ⇒ 001000

台中市 ⇒ 010000

高雄市 ⇒ 100000


简单来说,编码就是把既有的资料想办法数学化,训练模型可以想做是一连串routine的数学运算,不断重复计算直到得出评估之後相对最好的结果,因此在这之前需要将我们的资料转换成适当的数字。


<<:  Day07 Kibana - Query DSL 语法结构

>>:  想要爬个资料也困难重重

强敌!费波那契数的哥哥登场,Ruby 30 天刷题修行篇第五话

大家好,我是 A Fei,相信大家应该都听过费波那契数(Fibonacci)的大名,又称费式数列,是...

Linkedin Java 检定题目分享

前言 在更新Linkedkin 个人档案的时候 偶然发现他有技术检定测验 如果总成绩在前30%,会发...

【Day 17】分散式资料库 High Availability 初探

对於分散式资料库的高可用性, 在前面【Day 3】分散式系统模型、容错、高可用的後段已经提过衡量的标...

c语言中exit的用法

纪录一下遇到错误时直接exit的写法 #include <stdio.h> #inclu...

Day 14 event

第~14~天~罗~ 假如有开发过 Web 的都知道, 假如要设定按钮按下後的动作, 可在 html ...