关于KNN和线性回归的不同之处

来源:5-10 线性回归的可解释性和更多思考

爱西瓜同志

2019-03-30

波波老师,以下是我的看法:
一、从fit方法来讲,KNN只是单纯的将X_train和y_train值传给_X_train和_y_train,而线性回归通过传入的X_train和y_train求出了a和b。再看predict方法,KNN每次调用predict方法都需要进行进行计算,返回相应的y_predict,而线性回归只需要根据a和b就能简单的计算出y_predict,从这一点看,我们使用这个模型预测数据,线性回归效率会显的高一点。
二、KNN是将预测的结果进行分类,而线性回归是用来预测这个值是什么。
三、评价指标不同,KNN的评价指标是y_predict和y_test相同的各数所占全体的总数,而线性回归是和基准线性回归进行比较,比这个基准越好,评价越好。

我的问题:
一、还有哪些性质是不同的?
二、在具体应用场景上有哪里是不同的?

写回答

1回答

liuyubobobo

2019-03-31

你的理解完全正确。所以knn叫费参数学习,线性回归叫参数学习。

学习到这里,可以结合knn和线性回归的不同,在回顾一下课程的2-4,参数学习和非参数学习概念的不同。

也可以参考这里:http://coding.imooc.com/learn/questiondetail/55215.html


课程里介绍的knn是解决分类问题,线性回归是解决回归问题。他们本身解决的问题种类不同。解决的问题种类不同(分类还是回归),所使用的评价指标自然就不同。

监督学习就这两类问题——分类和回归。可以再回顾一下2-2,2-3两个小节。


分类问题的评价指标,可以参考4-4和整个第十章;

回归问题的评价指标,可以参考5-5,5-6小节。

但其实还有更多评价指标,初学了解这些就足够了。


所以,评价指标和算法没关系,和算法在解决什么类别的问题有关!


3

使用knn也可以解决回归问题。可以再回顾一下4-9小节的介绍。

//img.mukewang.com/szimg/5c9fbc8a0001695809040507.jpg


或者参考这里:https://coding.imooc.com/learn/questiondetail/84216.html


在5-9小节,我也用实际的代码,使用KNN Regressor计算了一下波士顿房价的预测(回归问题),请再回顾一下。所以,请再体会一下:评价指标和使用的具体算法无关,和你要解决的问题种类是怎样的(分类?回归?)相关。


4

关于应用场景,可以在回顾免2-5:费的午餐定理。或者参考这里:https://coding.imooc.com/learn/questiondetail/43808.html


不过一般实际很少使用knn,因为knn太慢了。其算法性能和训练数据的数据量成正比,而实际大多数情况都是具有巨大的数据量的,所以knn并不实用:)


继续加油!:)

0
1
爱西瓜同志
非常感谢!
2019-03-31
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程