机器学习入门(一)

年后又开始新一轮的学习了。
今天我来复习跟巩固机器学习的基础概念。

1.机器学习系统的类型

我们将机器学习系统按他们的特点分类:

  1. 是否在人类监督下训练。例如:有监督学习,无监督学习,半监督学习,强化学习。
  2. 是否可以动态地进行增量学习。例如:在线学习,批量学习。
  3. 是否简单地将新的数据点和已知的数据点进行匹配,还是像科学家一样,对训练数据进行模式检测然后建立一个预测模型。例如:基于实例的学习和基于模型的学习。

这些标准之间相互并不排斥,你可以按你喜欢的方式将其任意组合。例如,现在最先进的垃圾邮件过滤器可能是使用深度神经网络模型对垃圾邮件和常规邮件进行训练,完成动态学习。这使其成为一个在线的、基于模型的有监督学习系统。接下来我来介绍这些标准。

1.1 有监督学习和无监督学习

根据训练期间接受的监督数量和监督类型,可以将机器学习系统分为以下四个主要类别:有监督学习,无监督学习,半监督学习,强化学习。

1.1.1有监督学习

在有监督学习中,提供算法的包含所需解决方案的训练集称为标签。
概念:通过已有的训练样本去训练得到一个最优模型,再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现预测和分类的目的,也就具有了对未知数据进行预测和分类的能力。简单来说,就像有标准答案的练习题,然后再去考试,相比没有答案的练习题然后去考试准确率更高。监督学习中的数据中是提前做好了分类信息的, 它的训练样本中是同时包含有特征和标签信息的,因此根据这些来得到相应的输出。

补充:最常见的监督学习就是回归和分类。
这里是一些重要的有监督学习算法:

·K-近邻算法
·线性回归
·逻辑回归
·支持向量机(SVM)
·决策树和随机森林
·神经网络
1.1.2无监督学习

顾名思义,无监督学习的训练数据都是未经标记的。系统会在没有“老师”的情况下学习。
概念:训练样本的标记信息未知, 目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础,此类学习任务中研究最多、应用最广的是"聚类" (clustering),聚类目的在于把相似的东西聚在一起,主要通过计算样本间和群体间距离得到。深度学习和PCA都属于无监督学习的范畴。
这里有一些重要的无监督学习算法

·聚类算法

·k-均值算法
·DBSCAN
·分层聚类分析(HCA)

·异常检测和新颖性检测

·单类SVM
·孤立森林

·可视化和降维

·主成分分析(PCA)
·核主成分分析
·局部线性嵌入(LLE)
·t-分布随机近邻嵌入(t-SNE)

·关联规则学习

·Apriori
·Eclat
1.1.3半监督学习

概念:由于通常给数据做标记是非常耗时和昂贵的,你往往会有很多未标记的数据而很少有已标记的数据。有些算法可以处理部分已标记的数据。这被称为半监督学习
有些照片托管服务(例如Google相册)就是很好的示例。一旦你将所有的家庭照片上传到服务器后,他会自动识别出人物A出现在照片1、5、11中,人物B出现在照片2、5、7中。这就是算法的无监督学习部分(聚类)。现在系统需要你做的就是只是告诉他这些人都是谁,给每一个人标签后,他就可以给每张照片中的每个人命名,这对于搜索图片非常重要。
大多数半监督学习算法是无监督算法和有监督算法的结合。

1.1.4强化学习

强化学习则是一个非常与众不同的“巨兽”。他的学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行动作,并获取回报(或者是以负面回报的形式获得惩罚)。所以他必须自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。策略代表智能体在特定情况下应该选择的动作。
机器学习入门(一)_第1张图片
像这个图,智能体在遇到火焰后,惩罚为减50分,所以他知道了火是不好的,下次绕开走。而遇到水,回报是加50分,所以他知道了水是好的。

2.实例

讲了一些机器学习的基本概念,现在来看一个实例,加深下印象。这个是想要知道塞浦路斯人有多幸福,但是经合组织的数据没有提供答案。幸好你有这个模型可以做出预测:先查查塞浦路斯的人均GDP是多少,发现是22587美元,然后运用到模型中,发现生活满意度大约是4.85+22587*0.0000491 = 5.96.下面这个代码就是解释,如何计算出生活满意度的。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn.linear_model

#导入数据
oecd_bli = pd.read_csv("D:/jiqixuexitest/handson-ml2/datasets/lifesat/oecd_bli_2015.csv", thousands = ',',error_bad_lines=False)
gdp_per_capita = pd.read_csv("D:/jiqixuexitest/handson-ml2/datasets/lifesat/gdp_per_capita.csv",thousands = ',',delimiter='\t',encoding='latin1',na_values="n/a",error_bad_lines=False)

#处理数据
country_stats = country_stats_prepare(oecd_bli, gdp_per_capita)
X = np.c_[country_stats["GDP per capita"]]
y = np.c_[country_stats["Life satisfaction"]]

#可视化数据
country_stats.plot(kind='scatter' , x="GDP per capita", y="Life satisfaction")
plt.show()

#选择线性模型
model = sklearn.linear_model.LinearRegression()

#训练模型
model.fit(X,y)

#做出预测
X_new = [[22587]]
print(model.predict(X_new))

机器学习入门(一)_第2张图片
机器学习入门(一)_第3张图片
在本案例中,葡萄牙和西班牙的生活满意度分别为5.1和6.5,预测的塞浦路斯的生活满意度为5.7,取这三个数的平均值为5.77,这野非常接近基于模型预测所得的值,这个简单的算法被称为k-近邻回归(在本例中,k=3)

3.总结

一个经典的机器学习项目分为:

·研究数据

·选择模型

·使用训练数据进行训练(即前面学习算法搜索模型参数值,从而使成本函数最小化的过程)。

·最后,应用模型对新示例进行预测(称为推断),希望模型的泛化结果不错。

你可能感兴趣的:(sklearn,机器学习,python)