本内容来自coursera课程。
- 线性回归
- 最小二乘拟合
- graphlab的使用
- 如何检验:训练集和测试集
线性回归
回归模型是最简单的预测模型,基本思路是找到一条拟合直线或者拟合空间使得拟合结果的残差平方和最小(最小二乘拟合)。关于残差和最小二乘的基本原理不再赘述,可以参考误差理论或者数值分析方面的书籍。
最小二乘原理
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。参考这里
基本思想
要知道,没有人能够真的预测未来,所以我们如何知道我们的预测是否正确呢?举个例子,我们有一些当前房子的数据,包括每栋房子的价格,居住面积,浴室数量,地段……我们如何通过一些这样的数据来预测一个未知房价的房子的房价呢?定价是多少比较合理呢?
我们的解决办法是这样的,把已有的数据分成2部分:train_data 和test_data,我们可以用训练集建立模型,然后使用测试集检验模型的RSS(resdiual square sum),以便确定一个合适的模型。
graphlab的使用
graphlab是一个机器学习框架,可以帮助我们快速建立模型,专注于算法本身的学习和实现,在python语言下使用很方便,学术用途免费。
下面我们就来看看他的基本是用方法吧:
import graphlab
graphlab.product_key.set_product_key('你的许可证')
graphlab.set_runtime_config('GRAPHLAB_DEFAULT_NUM_PYLAMBDA_WORKERS', 4)
graphlab.product_key.get_product_key()
#导入数据
sales = graphlab.SFrame('home_data.gl/')
#数据散点图
graphlab.canvas.set_target('ipynb')
sales.show(view="Scatter Plot", x="sqft_living", y="price")
# 数据分成2部分
train_data,test_data = sales.random_split(.8,seed=0)
#建立线性回归模型
sqft_model = graphlab.linear_regression.create(train_data, target='price', features=['sqft_living'],validation_set=None)
#测试数据
print sqft_model.evaluate(test_data)
#多个参数建立模型
my_features = ['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'zipcode']
my_features_model = graphlab.linear_regression.create(train_data,target='price',features=my_features,validation_set=None)
print my_features_model.evaluate(test_data)
#接下来可以是predict函数预测,比如 my_features_model.predict(house1)