学习目标:
- 了解监督学习和非监督学习的概念
- 了解kNN算法的思想及其原理
- kNN算法实战
监督学习
《统计学习方法》一书中概括,统计机器学习包括监督学习、非监督学习、半监督学习以及强化学习。
通俗来说,就是给定的数据集中既包含特征,又包含标签的一类统计机器学习方式。一般来说,由于标签已知,且在学习之前从输入到输出的映射关系已知,此类方法通常具有较高的准确率。监督学习的主要应用有两大类,分类和回归。分类是对离散数据的预测,回归则是对连续数据的预测。常见的算法有kNN、决策树、逻辑回归等。
参照监督学习的定义,我们不难得出,就是给定的数据集中只有特征,没有标签,需要自行学习从输入到输出的映射关系,此类方式便是非监督学习。常见的应用主要有关联规则和聚类,相应的算法有Apriori算法和k-means算法。
顾名思义,半监督学习就是部分标签已知。通常情况下,未知标签的样本量要远远大于已知标签的样本量。比如,在风控业务中,明确的恶意用户往往占总体的比例极低,如何根据此类用户抽象出的风险特征去挖掘出潜藏在正常用户中的灰色用户,有效地降低潜在风险,这便是半监督学习方法的一个应用场景。
强化学习不依赖大量的已知标签,具有“自学”的意识。根据自己以往的经验,加上一个行为奖励机制——“好”的行为给予奖励,今后继续发扬,“坏”的行为得到惩罚,今后尽可能避免。从这个过程可以看出,强化学习是一个时序过程,反馈有一定的滞后性。常见的算法有马尔可夫链等。
kNN算法的思想及其原理
kNN(k-nearest neighbor)是一种基本分类与回归方法。kNN法假设给定的一个训练数据集,其中实例的类别已定。分类时,对于新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,kNN不具有显式的学习过程。kNN实际上是利用训练集对特征向量空间进行划分,并作为其分类的“模型”。k值的选择、距离的度量以及分类决策规则是kNN的三个基本要素。
西瓜书P225
kNN算法实战`
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
- ### 读取数据 X, y
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=20)
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
from sklearn.metrics import accuracy_score
correct = np.count_nonzero((clf.predict(X_test)==y_test)==True)
#accuracy_score(y_test, clf.predict(X_test))
print ("Accuracy is: %.3f" %(correct/len(X_test)))`