zoukankan      html  css  js  c++  java
  • 家用电器用户行为分析与事件识别学习笔记

    书中介绍太绕,甚至是不清楚的,在此记录一下学习体会!

    该例主要讲的是用户洗浴用水事件的识别问题(热水器数据),归结为0-1分类问题——这是全局观

    按分析问题大的步骤:

    数据探索性分析——>数据规约——>一次用水事件划分及阈值寻优——>特征工程/属性构造——>筛选洗浴事件(?)——>NN-Model

    • (?)这一部分,没搞懂作者意图,问题一开始就说是要识别出独立用水事件中的洗浴事件,那到此步骤不就完了,~后面就是为了跑跑模型train-test,blabla~???
    • 从该章标题看(?)及之前是家用电器用户行为分析,之后才是事件识别,这样才解释得通
    • 最值得吐槽的是:自己说的数值规约,然而自己实现起来就跟本不存在什么数值规约哦

    个人觉得本章最值得学习的点有:

    • 问题的分析思路(先后该做些什么、如何做),见上面步骤
    • 数据分析处理方法(见下方简要介绍)
    • 特征工程/属性构造(涉及特定问题特定分析,结合问题的关注点,如选取了时长类指标、频率类指标、水量指标、用水变化/波动指标)
    • 筛选洗浴事件方式方法:一次用水事件划分——>候选洗浴事件划分(一次用水量<yLitre、用水时长<100s、总用水时长<120s

     

    关于数据分析处理方法,文中介绍甚是模糊,个人理解记录于此:

     时间的划分均是基于用水量数据来区分的

    一次用水事件划分

     阈值寻优

    阈值寻优区间1min——9min,step=0.25min=15s

    计算原理:

    以阈值及对应划分的用水事件数,作图,当n个相邻点斜率值(取最小的斜率对应的阈值,斜率小说明曲线平稳用户习惯比较趋于平稳)

     

    特征工程/ 属性构造

    这类问题解构/组合需要经验和对应问题需要,多多学习~~

    筛选候选洗浴事件

    文中给出的是判定短暂用水事件,将其余的作为候选洗浴事件,可惜的是描述混乱+无代码

     关于判定标准,个人感觉非常的主观呀(这里仅摘记文中标准,满足一个就算是短暂,或关系),希望大神留言讲一讲啊,thx~

    • 一次用水事件总用水(总水量*热水量(%)=纯热水)<yLitre
    • 用水时长<100s
    • 总用水时长<120s

    其中文中y的取值也很有意思,考虑了热水器不同设定温度下热水的使用量阈值y:

    由一系列假设,说明当一次洗浴中热水温度越高热水量使用就越少,反之反是;

    V表示热水器的水恒50度时洗浴最低用量,X当前水温,C注入的自来水每月平均温度(室温均值)

    多层神经网络

     1 from keras.models import Sequential
     2 from keras.layers.core import Dense,Activation
     3 
     4 net = Sequential()
     5 #net.add(Dense(input_dim = 11, output_dim = 17))#keras 2.0之前版本
     6 net.add(Dense(input_dim=11, units=17))#keras 2.0 ,推荐;添加输入层、隐藏层的连接
     7 net.add(Activation('relu'))
     8 net.add(Dense(input_dim=17, units=10))
     9 net.add(Activation('relu'))
    10 #model.add(Dense(10, 1)) #添加隐藏层、输出层的连接
    11 net.add(Dense(1))  # 输出层,同上
    12 net.add(Activation('sigmoid'))
    13 net.compile(loss='binary_crossentropy', optimizer='adam',metrics=['accuracy'])
    14 
    15 #net.fit(x_train, y_train,epochs=10,batch_size=1)#keras 2.0之前版本
    16 net.fit(x_train, y_train,epochs=1000,batch_size=1,verbose=1)#keras 2.0,推荐,verbose=0,不显示过程,默认等于1显示过程
    17 r = pd.DataFrame(model.predict_classes(x_test), columns = [u'预测结果'])
    18 pd.concat([data_test.iloc[:,:5], r], axis = 1).to_excel(testoutputfile)
    19 net.predict(x_test)

    REF:

    《数据分析与挖掘实战》

    源代码及数据需要可自取:https://github.com/Luove/Data

  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/amoor/p/9502728.html
Copyright © 2011-2022 走看看