Udacity
Machine Learning
Instance Based Learning
Supervised Learning
给你一些数据集,用算法去训练函数,训练出来后,就可以投入新的数据进行预测。
Instance Based Learning
不包含训练函数这个过程,只需要把所有数据放在数据库里,投入新的数据时,只需要去数据库里查找,
优点是:
Remember:可信,不需要平滑什么的近似
Fast:不需要 learning
Simple:
缺点是:
Overfitting:太依赖已有数据了
看起来只能返回已有数据,无法返回新数据
应用举例:
红色很贵,蓝色中等,绿色最便宜,要预测黑色点的颜色。
方法就是看 Nearest Neighbor,如果只看一个neighbor,有些点比较容易看出来,有些点需要看很多 neighbor 才能看准,不能单纯只取一个最近的,所以是 K Nearest Neighbors。
KNN
可以分类,可以回归。
可以用 vote 和 mean, 也可以用 Similarity 去算入 Weight。
复杂度对比:
并不是 LR 就比 NN 慢,因为 learning 只需要一次,但是可以 query 很多次
这个例子计算一下 q 这个点,在不同的 Domain 和 不同的 k 时,结果是怎样的,不过与实际值 18 差了很远。
但是 KNN 表现还是不错的,不过它有一些基本的 Bias,而这个例子只是恰好违背了这些 Bias,所以才如此不准。
Preference Bias
Why we prefer one hypothesis over another,
2. Smooth
与 locality 很像,但是区别是,虚线上的点更 smooth,而四周的辐射状的点也是 locality。
3. All Feature Matters Equally
如上面的例子,x1 和 x2 的重要性是不同的,
其他
- Distances
要选择合适的距离,不然会得到不太好的结果。 - K
需要选择合适的K,注意一种情况是K=N时,
Curse of Dimensionality
随着 Feature 和 Dimension 的数量增加,训练算法所需要的数据将成指数级增加。
比如训练 KNN,训练一维的点,就想要找到一条线上离它最近的,如果是三维的,就想找到空间上离它最近的一个小立方区域。
这个问题不只是在KNN发生,在ML算法中普遍存在。
总结
你要先明确你要解决的问题,并知道一些 Domain Knowledge,然后去选择最优的算法,DT还是KNN等等。