数据挖掘之售房数据分析

最近再做一批关于售房的数据,感觉自己陷入一个死胡同里:

该批数据是存储再postgresql里面,是从某售房网站上爬下来的,以数据库中的一列字段作为存储数据,该列字段是以json的数据形式存储的,这里跟我打开了一个新大门,数据库能存储json数据格式的数据,而且postgresql还有一套专门的查询语句详情见:

这里:

而对于机器学习而言:特征是一列一列的,类似于数据库的列字段一样:所以对于从某站上获取的数据就必须进行分析,分解,衍生,提取等手段提取出一列一列的特征,

这些就属于数据分析方面的知识了,说到数据分析,不得不说数据挖掘了;说到数据挖掘就不得不提人工智能,而数据挖掘只是人工智能的一个分支,人工智能的应用方向有很多,数据挖掘是一方面,还有就是NLP(也就是自然语言处理)还有语音识别,图像识别,机器人等应用方面,而我刚开始对数据挖掘的理解说来惭愧,居然理解成了,爬虫方面的知识,但是爬虫只是数据挖掘领域数据的获取方式之一;

对于我这一批数据,我的任务是预测房屋的售卖天数,初始接触的时候感觉十分的茫然,偶然间接触了多元线性回归的概念,然后就用了线性回归模型做了一个,用的是tensorflow的框架,百度了好几个总结了一下终于成功的运行了起来,但是途中遇到的问题真是很多,最主要的是用tensorflow自带的方式读取数据,还是一种比较low的方式做的,现在才知道他又一个data的api可以哼方便的使用;并且在少量数据读取方面,pandas用于数据读取是很方便的,最主要是pandas是将数据直接读入内存,如果物理设备有限,在工业生产上我估计这种方式用的很少,而且我那种方式还要再session会话中加入一个类似进程的东西才能读进数据;

虽然学校学了矩阵运算的知识,但是没有再实际中用到过,而对于线性回归模型而言:对于

:y = w1*x1 +w2*x2......这样的模型,其实就是矩阵的运算,就是在用tensorflow的feedict的时候老是出现维度问题;其实就是y的输入有问题,需要reshape一下,就这个简单的问题困扰了我很久,直到我理解计算原理才知道自己的错误是多么的愚蠢;

用这个模型预测的简直不敢苟同,预测出来的值基本都是一样的,而且用的都是数值特征,都还不知道对分类数据的处理的方式,还有就是归一化和标准化数据;

而且期间遇到一个nan的问题(预测出来的值都是nan);一个很奇怪的问题:当我用梯度下降作为优化函数的时候,就会出现这个问题;最后发现换了一个agrad优化函数之后就好了,这都不是我疑惑的,我疑惑地是当我用sklearn 的StandardScale 做标准化之后再用梯度下降算法的时候就又好了,至今都未解决这个问题;可能是没有理解原理的原因;但我猜测应该是数据方面的问题;也有可能是关于梯度下降算法会出现的问题:梯度消失方面的问题;但是这是关于DNN模型时用sigmoid激活函数才会出现的问题,这个可能就要排除了;

紧接着我又接触了CNN模型,你可能会奇怪为什么不是DNN模型,当时对深度学习,和机器学习的概念分不清;以为深度学习就是比机器学其牛逼,我就想哪个牛就用那个,恰巧看到了cnn的模型;说起简单的cnn模型还是比较简单的,分为卷积层,池化层,全连接层,可以多搞几层,但是现在想起来还是比较搞笑的用DNN模型还是比较可行的但是用CNN模型明显有一点不太好,我现在还是不知道几个深度模型的区别DNN,CNN,RNN LSTM;反正能用的深度模型都用了,看别人的代码,依葫芦画瓢愣是让代码运行起来了,还是可以达到预测效果的,但是解释性极差;就拿CNN来说,我为了筹齐平方,我就只取了4个特诊,RNN也是;心里怀着深度学习高大上的感觉一路前进,搞定各种模型的使用方法;但是对于底层原理还是有很大的欠缺;

对于RNN(用LSTM)做的,我为了形成一个时序,就将2*2 分成两个时序,2*1的;但是对于这样的做法完全没有任何的意义,

但是还是可以得出值;

对于LSTM的模型有很多种,按照输入和输出分为,一对一输出,一对多,多对多,多对一等;但是对于LSTM单元,有三个门是输入们,遗忘们,输出门;

 

接下来就是DNN模型了,对于DNN模型,我用的还是tensorflow的框架,刚开始没有接触tensorflow的高级api的时候,我是自己构造的神经网络,说白了数据输入,初始化w权重值,一般是zero初始化或者是高斯初始化;但是对于b偏置项则是one初始化,或者是zero初始化;

然后就是初始化x和y了;用tensorflwo里面的placeholder,最后用feeddict进行数据喂养就行了,然后就是构造网络了,

最有就是训练了;

最后又解除了tensorflow下的高级api,estimator;DNNRegeressor,还是就是LinearCombinedDNNRegressor这两个可以做回归的模型;

说到这两个模型,就要提到tensorflow的关于特征工程的api,那就是feature_coloum了,就相当于原始数据与模型的输入建立了桥梁的作用;

有很多种分桶,分类,等等,都是在我们平常使用的方式封装起来的;

关于这两个模型其实用法基本相似,但是在特征的输入方面,线性模型输入的特征无论稀疏,密集都可以,但是对于DNN模型则必须是密集的特征了,这里就要用到密集特征和稀疏特征的转化了,有两个,分别是indicate 和embedding;前者是针对不是太过于稀疏的特征,后者是针对大量的稀疏特征,如经过hash_bucket方式处理过的数据;

最后偶然间知道了一个kaggle的比赛,听说里面的人都很牛,分享了很多的kernel;而且有一个houses的kaggle项目跟我当前的项目有点类似,都是一个关于预测具体值的回归问题;

然后就看了一个kernel;里面基本都是用的机器学习的方式做的,显示LinearRegeressor,ridge,laosso,randomforrest,xgboost 这几个都用过了,然后又接触了另外一个框架叫keras,他内部好像集成了theano的tensorflow的东西,运行的时候会出现一个using tensorflow的东西;

 

在kaggle比赛中,xgboost的大杀器,说实话这个大杀器缺失有点牛,用其他模型表现确实都略微低于xgboost然后就是模型的stagging;

但是机器学习在数据方面实在是太过于繁琐,特征转化;log变化;标准化,编码;很繁琐;

好了这就是我这个项目的大致经历了,下一篇我将写我处理数据的过程,以及特征选择,数据预处理方面的东西,

说实话,我感觉数据挖掘方面基本都是在做数据方面的处理;模型我感觉影响不大,数据处理好了,误差瞬降,没处理好模型再高大上也没啥用,还是要实用才好,

不得不提的是再机器学习方面,参数特别多,很多时候就是调参的工作,运行时间相对较短,用网格搜索技术能很好的左到这一点,但是对于深度学习,由于运行时间过长,消耗时间多,用网格搜索调参有点奢侈,而且还不一定准确,因为保不准运行的步骤越多,精度会越高

 
————————————————
版权声明:本文为CSDN博主「blerli」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38859557/article/details/82025134

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值