What makes a good feature
阿新 • • 發佈:2018-12-08
import numpy as np
import matplotlib.pyplot as plt
greyhounds = 500 # 灰獵犬500只
labs = 500 # 拉布拉多犬500只
# 灰獵犬的身高高於拉布拉多犬
grey_height = 28 + 4 * np.random.randn(greyhounds)
lab_height = 24 + 4 * np.random.randn(labs)
plt.hist([grey_height,lab_height],stacked=True,color=['r','b'])
plt.show()
從上圖中我們可以得到的資訊,首先在height低於20時,我們可以很高的概率預測這隻狗是拉布拉多犬,而在height高於35時,我們也能相當有信心的預測這隻狗是灰獵犬,但是當height位於這兩者之間時,兩種狗的概率很接近。因此height是一個有用的特徵但是並不完美。
所以在機器學習中,我們總是需要多種特徵,否則我們只需要寫if-else的規則而不是分類器。
Independent features are best
獨立的特徵給你不同型別的資訊,試想一下上面的例子,有兩個特徵,用釐米測定的height和用英寸測定的height。這兩個特徵是高度相關的。從訓練資料中刪除高度相關的特徵是一個很好的做法,因為很多分類器沒有足夠的智慧明白用釐米或英寸度量的身高是同樣的事情。因此分類器可能會重複計算height特徵的重要性。
Features should be easy to understand (simpler relationships are easier to learn)
舉一個例子,假如你把一封信從一個城市寄到另一個城市,預測需要多少天。兩個城市之間的距離越遠所需時間也就越長。一個有用的特徵是用英里表示兩個城市之間的距離,一個較差的特徵是用城市的經緯度去標示其位置。