45

Click here to load reader

沒有想像中簡單的簡單分類器 Knn

Embed Size (px)

Citation preview

Page 1: 沒有想像中簡單的簡單分類器 Knn

15/8/12 NCKU TienYang

kaggle-預測未來腳踏⾞車租借數量

Page 2: 沒有想像中簡單的簡單分類器 Knn

supervised learning

unsupervised learning

Page 3: 沒有想像中簡單的簡單分類器 Knn

supervised learning unsupervised learning

Page 4: 沒有想像中簡單的簡單分類器 Knn

classification v.s clustering

• Data is not labeled • Group pointed that are “close” to each other • Unsupervised learning

• Labeled data points • Want a “rule” that assigns labels to new points • Supervised learning

Page 5: 沒有想像中簡單的簡單分類器 Knn

supervised learning v.s unsupervised learningclassification v.s clustering

Page 6: 沒有想像中簡單的簡單分類器 Knn

supervised learning v.s unsupervised learningclassification v.s clustering

Page 7: 沒有想像中簡單的簡單分類器 Knn

此演算法在2007年IEEE統計排名前⼗十名資料採礦演算法之⼀一,以⽬目前來說是廣泛使⽤用、︑、⾮非常有效⽽而且是易於掌握的演算法。︒。

Page 8: 沒有想像中簡單的簡單分類器 Knn

此演算法在2007年IEEE統計排名前⼗十名資料採礦演算法之⼀一,以⽬目前來說是廣泛使⽤用、︑、⾮非常有效⽽而且是易於掌握的演算法。︒。

Page 9: 沒有想像中簡單的簡單分類器 Knn
Page 10: 沒有想像中簡單的簡單分類器 Knn
Page 11: 沒有想像中簡單的簡單分類器 Knn
Page 12: 沒有想像中簡單的簡單分類器 Knn
Page 13: 沒有想像中簡單的簡單分類器 Knn
Page 14: 沒有想像中簡單的簡單分類器 Knn

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

A

⾝身⾼高

體重B

CD

⼤大隻

⼩小⽀支

資料

Page 15: 沒有想像中簡單的簡單分類器 Knn

現在加⼊入了⼀一個

⾝身⾼高190 體重100 他會是哪⼀一類?

A

⾝身⾼高

體重B

CD

⼤大隻

⼩小⽀支

E

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

Page 16: 沒有想像中簡單的簡單分類器 Knn

A

⾝身⾼高

體重B

CD

⼤大隻

⼩小⽀支

⽤用膝蓋想都知道 是屬於⼤大隻 !

E

E

Page 17: 沒有想像中簡單的簡單分類器 Knn
Page 18: 沒有想像中簡單的簡單分類器 Knn

1. 先找k個最近鄰居 2. 鄰居決定分類

Page 19: 沒有想像中簡單的簡單分類器 Knn

Euclidean distance

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

E ⾝身⾼高190 體重100

AE 和 的距離

( 190 - 180 )2 + ( 100 -90 )2

200

Page 20: 沒有想像中簡單的簡單分類器 Knn

Euclidean distance

Page 21: 沒有想像中簡單的簡單分類器 Knn

誰最近呢?

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

E 和⼤大夥的距離

200450

3925

3125

E A和 最近,所以A是⼤大隻 那E也是⼤大隻

Page 22: 沒有想像中簡單的簡單分類器 Knn
Page 23: 沒有想像中簡單的簡單分類器 Knn
Page 24: 沒有想像中簡單的簡單分類器 Knn

Brute Force

N samples in D dimensionsN = 4 D = 2

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

找出所有距離 N*D

找出最近的點 N

時間複雜度 O [ DN2 ]

Page 25: 沒有想像中簡單的簡單分類器 Knn
Page 26: 沒有想像中簡單的簡單分類器 Knn

K-D Tree

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

165

180

175160

190

Page 27: 沒有想像中簡單的簡單分類器 Knn

K-D Tree

⾝身⾼高 體重 labelA 180 90 ⼤大隻

B 175 85 ⼤大隻

C 160 45 ⼩小⽀支

D 165 50 ⼩小⽀支

165,50

180,90

175,85

160,45

190,100

⽐比⾝身⾼高

⽐比體重

時間複雜度 O [ DN logN ]

Page 28: 沒有想像中簡單的簡單分類器 Knn
Page 29: 沒有想像中簡單的簡單分類器 Knn

Where KD trees partition data along Cartesian axes, ball trees partition data

in a series of nesting hyper-spheres.

Page 30: 沒有想像中簡單的簡單分類器 Knn
Page 31: 沒有想像中簡單的簡單分類器 Knn
Page 32: 沒有想像中簡單的簡單分類器 Knn

A房⼦子:200坪,⽤用10年,10元的畫B房⼦子:50坪,⽤用10年,10萬元的畫

C房⼦子:199坪,⽤用10年,9萬元的畫

Page 33: 沒有想像中簡單的簡單分類器 Knn

A房⼦子:200坪,⽤用10年,10元的畫B房⼦子:50坪,⽤用10年,100000元的畫C房⼦子:199坪,⽤用10年,90000元的畫

C房⼦子離B房⼦子⽐比較近,所以B,C的房價⼀一樣

Page 34: 沒有想像中簡單的簡單分類器 Knn

A房⼦子:200坪,⽤用10年,10元的畫B房⼦子:50坪,⽤用10年,10萬元的畫C房⼦子:199坪,⽤用10年,9萬元的畫

C房⼦子離B房⼦子⽐比較近,所以B,C的房價⼀一樣

聽你在放屁,A,C的房價要差不多才對,因為坪數差不多

Euclidean distance 的缺點,不同維度會等同看待

Page 35: 沒有想像中簡單的簡單分類器 Knn

可以解決不同維度會等同看待的問題

Page 36: 沒有想像中簡單的簡單分類器 Knn

Mahalanobis distance

旋轉座標軸

Page 37: 沒有想像中簡單的簡單分類器 Knn

我覺得雖然? 有四票,但是他離藍⾊色真的太近了

這樣很不公平

Page 38: 沒有想像中簡單的簡單分類器 Knn
Page 39: 沒有想像中簡單的簡單分類器 Knn

weights:距離的反⽐比

?1

10 10

1010

score: 1/1

score: (1/10)*4 =2/5

Page 40: 沒有想像中簡單的簡單分類器 Knn
Page 41: 沒有想像中簡單的簡單分類器 Knn

You must predict the total count of bikes rented during each hour

Page 42: 沒有想像中簡單的簡單分類器 Knn

datetime hourly date + timestamp

season 1 = spring, 2 = summer, 3 = fall, 4 = winter

weather 1: Clear, Few clouds, Partly cloudy, Partly cloudy

2: Mist + Cloudy, Mist + Broken temp temperature in Celsius

humidity relative humidity

windspeed wind speed

holiday whether the day is considered a holiday

workingday whether the day is neither a weekend nor holiday

Page 43: 沒有想像中簡單的簡單分類器 Knn

資料分析

資料探勘&機器學習地表最強

Page 44: 沒有想像中簡單的簡單分類器 Knn

https://github.com/wy36101299/knn-Bike-Sharing-Demand

Page 45: 沒有想像中簡單的簡單分類器 Knn

scikit-learn http://scikit-learn.org/stable/modules/neighbors.html

[Machine Learning] kNN分類演算法« Big O(1) http://enginebai.logdown.com/posts/241676/knn

pandas: powerful Python data analysis toolkit http://pandas.pydata.org/pandas-docs/stable/