├── IJCAI-2018-DOG.pptx ├── README.md └── eda_solve.ipynb /IJCAI-2018-DOG.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plantsgo/ijcai-2018/19d144572cc51eeccdbe7047c5c31f496562ca80/IJCAI-2018-DOG.pptx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ijcai-2018 2 | ijcai-2018 top1 solution 3 | 一.Graft Learning 4 | 首先科普一下什么是嫁接。 5 | 6 | 在生产实践过程中,嫁接对经济价值的提高,也有着非常多的实例:如普通的水杉,价值一元;而通过嫁接手段,培育成金叶水杉后,经济价值提高20多倍;再如普通的大叶女贞树,价值几角钱;而通过嫁接的手段,培育成彩叶桢树后,其经济价值更高达近百倍。由此可见,嫁接对品种的改良,经济价值的提高都有首非常重要的意义。 7 | 8 | 影响嫁接成活的主要因素是接穗和砧木的亲和力,其次是嫁接的技术和嫁接后的管理。所谓亲合力,就是接穗和砧木在内部组织结构上、生理和遗传上,彼此相同或相近,从而能互相结合在一起的能力。亲和力高,嫁接成活率高。反之,则成活率低。一般来说,植物亲缘关系越近,则亲和力越强。例如苹果接于沙果;梨接于杜梨、秋子梨;柿接于黑枣;核桃接于核桃楸等亲和力都很好。 9 | 10 | 大家应该都尝试过只用只用前七天的数据来预测,最后一天来做线下验证,这种效果不太好,但是数据量大,就如同这里的砧木获取容易,但是实际价值不大。 11 | 大家应该也尝试过只用最后半天来做预测,达到的效果也已经很不错了,并且比只用前七天的训练好,但是数据量比较少。 12 | 13 | 那么我们参考嫁接的思想,让砧木来给我们的接穗输送营养。在这里前七天的数据就类似于砧木,后半天的数据类似于接穗。前七天预测出来的结果就是营养。这样我们预测出来的结果也更加接近于最后一天。 14 | 15 | 那么既然这样我为什么没有使用初赛的数据来做“嫁接“呢? 16 | 亲缘关系越近的嫁接成功率越高,在这个问题上也是item相同品别的做这种“嫁接“操作效果才会好,而我们的初赛数据和复赛数据的item并不是一个品类的,所以价值不大。 17 | 18 | 二.Sample Embedding 19 | sample_emb_x=[x1,x2,x3,x4,...,xn] xn为第n个property在不在predict_category_property中 20 | sample_emb_y=[y1,y2,y3,y4,...,yn] yn为第n个property在不在item_property_list中 21 | 22 | 一个user有很多个不同的item交互样本,一个item也有很多不同的user交互样本 23 | user_emb_x=mean([sample_emb_x_1,sample_emb_x_2,...,sample_emb_x_k]) sample_emb_x_k为该user的第k条样本的sample_emb 24 | user_emb_y=mean([sample_emb_y_1,sample_emb_y_2,...,sample_emb_y_k]) sample_emb_y_k为该user的第k条样本的sample_emb 25 | 26 | 通过这种对所有样本的sample_emb做mean操作来对user做embedding 27 | item_emb_x=mean([user_emb_x_1,user_emb_x_2,...,user_emb_x_k]) user_emb_x_k为该item的第k条样本的user_emb 28 | item_emb_y=mean([user_emb_y_1,user_emb_y_2,...,user_emb_y_k]) user_emb_y_k为该item的第k条样本的user_emb 29 | 30 | 通过这种对所有样本的use_emb做mean操作来对item做embedding 31 | 至此通过predict_category_property,item_property_list这两条信息对sample,user,item做了embedding。 32 | 得到了6*n个特征,n的大小视情况而定,这里我取了出现次数top100的property来做我的embedding,所以总共6*100个特征。 33 | -------------------------------------------------------------------------------- /eda_solve.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np \n", 12 | "import pandas as pd \n", 13 | "import matplotlib.pyplot as plt\n", 14 | "import matplotlib as mpl\n", 15 | "import seaborn as sns\n", 16 | "from scipy import interpolate\n", 17 | "color = sns.color_palette()\n", 18 | "%matplotlib inline\n", 19 | "import sys \n", 20 | "reload(sys)\n", 21 | "sys.setdefaultencoding('gbk') \n", 22 | "mpl.rcParams['font.sans-serif'] = ['SimHei']" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 17, 28 | "metadata": { 29 | "collapsed": true 30 | }, 31 | "outputs": [], 32 | "source": [ 33 | "train=pd.read_csv(\"round2_train.txt\",sep=\" \")\n", 34 | "test_a=pd.read_csv(\"round2_ijcai_18_test_a_20180425.txt\",sep=\" \")\n", 35 | "test_b=pd.read_csv(\"round2_ijcai_18_test_b_20180510.txt\",sep=\" \")" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 18, 41 | "metadata": {}, 42 | "outputs": [ 43 | { 44 | "data": { 45 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAo0AAAF+CAYAAADnQyBnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2UpFV94PFvdffMMAzIgMFRosao+NOgjG/rCzI4sHIQ\nYmLEE8BVFJVkNahHk/WIgTVGEVeOwbOriGGDies74Qgnu6DxBXBgAV8QMTHyix4dzBIRXwbGAYGZ\nnt4/6hmnLXr6Kabv7al6+vs5p85Udd/53adq6lb95nfvfZ7ezMwMkiRJ0nwm9vQBSJIkafSZNEqS\nJKmVSaMkSZJamTRKkiSplUmjJEmSWpk0SpIkqdXUnj4ASXVFxNHABcAk8J7MPC8irgPel5kXNW3O\nBlYDtwP/Bbgb2Aqcm5l/tYC+/wj4C2AZ8OLMvGYX7d7e9LsNuBF4fWb+8+72O0f8OZ9vZv7JA4zz\ndmCvzDy9eXwV8N8y83OljlWSRpWVRqnDImJ/4GPAicATgTdFxOOBLwGHz2q6rvkZwAcy8yHAc4C3\nRMTaBRzCOcCzgYcD32pp+wHgQOAK4PKIWLGAfgfN93wlSUMwaZS67YXA1zLzq5m5GfgicCT9hGkd\nQJOcPQ24cvZfzMyNwPVALKD/1Zn5b5m5tel/Xk27d9KvOB65gH4HtT5fSdL8nJ6Wuu2JQM56fDYw\nDfwUODgi9gMOBW7OzJ9H7MwPI+KRwNOB/zpfBxHxZuD1wC+BN2bmZyPiPcArmt/fBvwsMw95AMd9\nE/B44HMR8ZfAqc1xn5GZH42IPwYOy8xTmj4uAT6RmX+/i3jXzvV8m7/7l8AfAT3gnZn5wQdwnL+y\ni9fh7QCZ+famzUZgfWZubO6/iv7r+8PMfMXu9CtJi8WkUeq21cCtOx5k5g933I+I64HDgKfw61O1\nr4uIVwH7Aadn5k27Ch4Rz6OfHK4FHgZcERFrM/Mt9Ke2ZzLzobtx3FuAfZrEdR3wuOZ4vgF8FLgU\neGdETNJfL/kc4KW7CpaZ9871fCPiAOAtwBr6n4cXAG1J4+si4pTm/gFNnDlfhyGe53uBN9BPkiVp\npDk9LXXbVuBXawMj4viIOLZ5uGPKdh39dYQ7fAB4FP3E7bKW+McCH8vMTZn5L8BXmngLtQrY0iS5\nbwT+DPg4/eSOzLwd+E7T11HAlzPz7paYcz3fO4HvAv8dOJqmOtriA5n50CYZvrb52bCvQ2/g8TmZ\neU1m/mKIfiVpjzJplLrte8CjZz0+Dvjt5v4V9BOupwMbZv+lJgH7MDDM7uKZXdxfiCcB346IdcAl\nwPeBUwbaXAz8AfD7wK6mpWe73/PNzGngPzSxngvcGBHLd/OY530dImKKJumd5frd7EuSFp1Jo9Rt\nnwGeFxFPiog1wPOBq5rffZ3+usGbM/OuOf7uecDJEbFqnvifBV4aEaubXdnPBK7e3YONiKmIOJ1+\nRe6qJt5X6VcZjx1o/hn6CeNRtFdEYY7nGxGPo1+B/BL9aeqHAg/ejUPf1euwGXhE0+aPmVX1laRx\nY9IodVhm/gB4Gf1K2teBdzXTpzuqbF/m16emZ//djfQrcvOtFfwi/TWG3wL+AXhVZv54Nw/3dcBP\n6Ff8jsnMrc1xP5H+uszfAbY0iR6Z+e/Aj4Bv7SLpHTzW+z3fzPxX+sndD4B/pT/1/KMHeuDzvA6f\nAp4eEZ8HHgnc8kBjS9Ko6M3MlJpNkqTF00z3ng98MTM/vaePR5K6zkqjpHF1G/3p5kv39IFI0lJg\npVGSJEmtrDRKkiSplSf3liRJGnMRcSHwBODyzDxrmDbN2vDvNzeA12fmP+2qDyuNkiRJYywijgcm\nM/Mw4KCIOHjINocCn8zM9c1tlwkjjFCl8SfXX1NlceX2bdM1wlY1U+mYp/ZZWSXu9q3bqsQFuG9T\n65lUdkuttbz33vnLKnEBpreO13t5akXFj5dKS7Gn9l5WJ3DFpeMTU3X+79+brFRTqPVaDF5rp2To\nSq9FrbiTy+uNvalVdb5HpvauExdgv8cfWvHdMZxDf+u5C37nf+uWL8/3PNYDFzX3rwAOp3+1q7Y2\nK4EXRcRz6J8S7BWZucsvdSuNkiRJFfV6vQXfWqyifz5b6F9UYPDqU7tq8zXguZl5OHAH/auG7dLI\nVBolSZK0W7bQrxoC7MPcRcG52nwrM+9tfnYzcL9p7dmsNEqSJFXU600s+NbiBvrTzQBrgY1Dtvlo\nRKyNiEngRcBN83VipVGSJGm8XQpcHREHAccCJ0XEWZl55jxtnkX/0qefoL8q+B+aS6LukkmjJElS\nRRM1d2oBmbk5ItYDRwPnZOZtDFQN52hzJ3An/R3UQzFplCRJGnOZuYmdu6N3u818TBolSZIqGmL3\n81gwaZQkSapoon0jy1gwaZQkSaqoK5XGbqS+kiRJqsqkUZIkSa2cnpYkSaqoV/mUO4vFpFGSJKki\nN8JIkiSpVVc2wpg0SpIkVTTRkaSxG/VSSZIkVWXSKEmSpFbFp6cj4jHA4cAa+knpRuCyzPxF6b4k\nSZJGXa8jNbqizyIi/hz4U2ALcCOQwOOB6yPiISX7kiRJGge9Xm/Bt1FQutJ4XGYePvCzSyJiX+AI\n4OLC/UmSJGkRlE4ab46IDwMXAbcCK4F1wFHAOwr3JUmSNPK6snu6aNKYmadGxIuAY4FV9KepbwCO\ncE2jJElairwizC5k5iXAJaXjSpIkac/x5N6SJEkVdeUygt14FpIkSarKSqMkSVJFo3LKnIUyaZQk\nSarI3dOSJElq1ZXd065plCRJUiuTRkmSJLVyelqSJKmirpxyx6RRkiSpIndPS5IkqVVXdk93o14q\nSZKkqqw0SpIkVeQpdyRJkrRkWGmUJEmqyI0wkiRJauVGGEmSJC0ZVholSZIq6spGmJFJGmdmZqrE\n3X7ftipxp1btVSUuwNZ7t1aJe+/Pf1El7rKKr0Ut27dOV4k7XSkuAHWGCFvvqTNGah0v1Pu86E3W\n+WCfXF7vo3Zme6UXulcn7sz09ipxJ5ZNVokLsO2X91WJu2zvFVXi9qbqvRYz03U+47ZPV/ocGhFd\nuSJMN56FJEmSqhqZSqMkSVIXdWX3tJVGSZIktbLSKEmSVFFXTrlj0ihJklSRu6clSZLUqiuVRtc0\nSpIkqZVJoyRJklo5PS1JklRRV065Y9IoSZJUUVfWNJo0SpIkVdSV3dOuaZQkSVIrK42SJEkVdWV6\n2kqjJEmSWllplCRJqsjd05IkSWrl9LQkSZKWDCuNkiRJFXXllDsmjZIkSRV1ZXq6aNIYERuAvYHN\ns37cA2Yy86iSfUmSJGnxlK40/iHwd8CJmbm5pa0kSZLGRNGNMJn5Y+AlwPaScSVJksZVr9db8G0U\nFF/TmJl3lI4pSZI0rlzTKEmSpFajUilcKJNGSZKkihbjlDsRcSHwBODyzDzrgbSJiDXA5zLzKfP1\n4cm9JUmSxlhEHA9MZuZhwEERcfADbPNeYGVbPyaNkiRJ4209cFFz/wrg8GHbRMRRwF3AbW2dmDRK\nkiRVNNFb+K3FKuDW5v5mYM0wbSJiOfA24PShnscwjSRJkrR7FuGUO1vYOb28D3Pnd3O1OR04b9gz\n35g0SpIkVTTR6y341uIGdk5JrwU2DtnmecBpEXEV8OSI+Jv5OnH3tCRJ0ni7FLg6Ig4CjgVOioiz\nMvPMedo8KzM/seOXEXFVZp46XydWGiVJkiqqPT3dXLp5PXA9cGRm3jSQMM7V5s6B369vex5WGiVJ\nksZcZm5i5+7o3W4zH5NGSZKkiiYW4eTei8HpaUmSJLWy0ihJklSR156WJElSqyFOmTMWTBolSZIq\n6kjO6JpGSZIktTNplCRJUquRmZ6emd5eJ3ClkvC2u+6pExiYWDZZJe70tukqcbfc+vMqcQGm761z\nzPfedV+VuDPbZ6rEBVi+97IqcadW1Hm/TS6vExdgakWdj67eVJ3/R08uG5mP2qH1Jit9eFZ6jbdv\nq/QdQsV/v4k6r/HEVL2xV2uedXL58ipxR4VrGiVJktSq15HzNJo0SpIkVdSVU+64plGSJEmtrDRK\nkiRV5JpGSZIktepIzuj0tCRJktpZaZQkSaqoK9PTVholSZLUykqjJElSRZ6nUZIkSa26Mj1t0ihJ\nklRRR3JG1zRKkiSpnUmjJEmSWjk9LUmSVFFXrj1t0ihJklSRG2EkSZLUqiM5o2saJUmS1K5o0hgR\nUxHxgoh4xsDP/7BkP5IkSeNiotdb8G0UlJ6e/jTwY+DAiFgNvDIz/x/wWuDvC/clSZKkRVI6adwn\nM18MEBHPBj4TEW8t3IckSdLY6MplBEuvaZyOiP8IkJnXAc8HTgfWFu5HkiRpLPR6vQXfRkHppPEk\n4HE7HmTmz4HjgDMK9yNJkqRFVHR6OjM3A+cP/Gwr8KGS/UiSJI2LidEoFC6Y52mUJEmqaFSmlxfK\n8zRKkiSplZVGSZKkiqw0SpIkacmw0ihJklSRG2EkSZLUqivT0yaNkiRJFXUkZ3RNoyRJktqZNEqS\nJKmV09OSJEkVTXRkftqkUZIkqaIeJo2SJElq0ZFCo2saJUmS1M5KoyRJUkVdWdNopVGSJEmtrDRK\nkiRV5BVhCqv1gi7bd+8qce+7864qcQFm7t1WJW5vok5hecV+K6vEBZiZnqkTd6ZO3JpqjZHJvUbm\nY2CPm1xW57WYWDZZJW4/eKUvo+2Vxt727VXiTq1cXiUuwPattT6TK/3bVUxQJleuqBN4ouIYGQEd\nyRmdnpYkSVI7SwySJEkVOT0tSZKkVrVWIiw2p6clSZLUyqRRkiRJrZyeliRJqsg1jZIkSWrVkZzR\npFGSJKmmrlxG0KRRkiSpoq5MT7sRRpIkSa2sNEqSJC1REXEA8DTgxsz86XxtrTRKkiRV1Ost/NYm\nIi6MiGsj4sxh20TEw4DLgGcAV0bEgfP1YdIoSZJUUa/XW/BtPhFxPDCZmYcBB0XEwUO2OQR4U2a+\nC/hH4Knz9eP0tCRJUkWLsA9mPXBRc/8K4HDgu21tMvNvASLiCPrVxnfM14mVRkmSpPG2Cri1ub8Z\nWDNsm4joAScCW4Hp+ToxaZQkSapootdb8K3FFmBlc38f5s7v5myTmTOZeRpwLfCCeZ/HkM9XkiRJ\no+kG+lPSAGuBjcO0iYi3RMTLm5+tBu6Yr5Oiaxoj4sH0F1FeR7/E+QLgjsz8Qsl+JEmSxsUirGm8\nFLg6Ig4CjgVOioizMvPMedo8i37x8KKIOBX4Z+Dz83VSLGlsEsYr6e++ORO4j37yuDoiXpiZryvV\nlyRJkvoyc3NErAeOBs7JzNuAm1ra3Nn86uhh+ylZaXwK8MnMfHezC+eEzHwbQERcVbAfSZKksbEY\nlxHMzE3s3B29223mUzJpvAF4R0R8KTM3ABsAIuJk+lVHSZKkJacjl54utxGmyV6PB/Yd+NXDgBNK\n9SNJkjROap/ce7EU3QjTzKHfNvCzc0r2IUmSpMXnKXckSZLUyssISpIkVTQis8sLZtIoSZJU0RBX\ndBkLJo2SJEkVdSRnNGmUJEmqaVR2Py+UG2EkSZLUyqRRkiRJrZyeliRJqqgjs9MmjZIkSTW5plGS\nJElLhpVGSZKkijpSaDRplCRJqqkr09NDJY0RcS3wIeDTmXlv3UOSJEnSqBl2TePLgccBX4mIcyPi\n8RWPSZIkqTN6vYXfRsFQSWNmfi8zzwTeDLwQuDwi/rrqkUmSJGlkDDs9fSbwEuBG4JWZuSEirql6\nZJIkSR2wpNY0Ar8EjsjMn8362QkVjkeSJKlTOpIzDpc0ZuZfRcRvRMQjmx89IjP/b8XjKmdmpkrY\nyeX1Np5P7rW8StyZ7XVei5nt26vEBbhv011V4k6tXFYl7vR926rEhXrvucnlk1XiUuftBtR7LXpT\ndU5dO7lXnfdbVWP2LTezbbpa7MmVdT6TJyYrjb0x1JsYr/fbAzUxZuNpV4adnj4PeH7zsAfcCTyl\n1kFJkiR1RUdyxqF3Tz8ReBrwNWAt8ONqRyRJkqSRM2zSuBz4DWBfYBtwYLUjkiRJ0sgZdmHQnwNP\nBz4J3Ap8rNoRSZIkdciS2D0dEVfy68vZe8BN9KerJUmS1KIjOWNrpfGU5s+zgSuAa4BnAr9b8Zgk\n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\n", 46 | "text/plain": [ 47 | "" 48 | ] 49 | }, 50 | "metadata": {}, 51 | "output_type": "display_data" 52 | } 53 | ], 54 | "source": [ 55 | "import time\n", 56 | "train[\"time_sting\"]=train[\"context_timestamp\"].apply(lambda x:time.strftime(\"%Y-%m-%d %H:%M:%S\",time.localtime(x)))\n", 57 | "train[\"time_sting\"]=pd.to_datetime(train[\"time_sting\"])\n", 58 | "train[\"hour\"]=train[\"time_sting\"].dt.hour\n", 59 | "train[\"day\"]=train[\"time_sting\"].dt.day\n", 60 | "train[\"day\"]=train[\"day\"].apply(lambda x:0 if x==31 else x)\n", 61 | "\n", 62 | "grouped_df = train.groupby([\"day\", \"hour\"])[\"is_trade\"].aggregate(\"mean\").reset_index()\n", 63 | "grouped_df = grouped_df.pivot('day', 'hour', 'is_trade')\n", 64 | "\n", 65 | "plt.figure(figsize=(12,6))\n", 66 | "sns.heatmap(grouped_df)\n", 67 | "plt.title(\"CVR of Day Vs Hour\")\n", 68 | "plt.show()\n" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 19, 74 | "metadata": {}, 75 | "outputs": [ 76 | { 77 | "data": { 78 | "image/png": "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\nkour6tLtrNnO8wAAYLdY+vSPQ0nu2Dy+O8mV21yznecBAMCucM6xY8cW+5dvnsLx0939QFV9d5KX\ndve/3GpNkku3eh4AAOwWS+9UP57k3M3jC07yeidas53nAQDArrB0rN6f46duXJbkwW2u2c7zAABg\nV1j69I8/nOTzST6T5DVJXpfkb3X3zadY8/Ikx579WHc/utigAAAwsGhUJ0lVHUhyTZLPdffD212z\nnecBAMBusHhUAwDAXrf4zV8AziZV9aIklyf51e7+3VXPA8CZYaeatVRVFyX5aHe/YtWzrLOqekGS\nD2fjF+zHk1zX3b+/2qnWV1V9Y5KfTfKfsvEZkqu7+/Bqp1pvmz/rn+zul6x6lnVWVfuT/PbmP0ny\no9396yscaU+oqncn+c/d/R9XPcs6q6p/kOS6zS9fmORXuvuNKxxpR+xUnyFuu376bJ5v/74k5696\nlj3g9Une0d2fqqrbkrw6yc+teKZ19i1J3tTd923+OX1pkp9f8Uzr7tYcv8QqO/dtSf5dd79l1YPs\nFVX1iiR/XFDPdfdtSW5Lkqp6Zzb+P37tuP7zGeC266fdU9n4jfboqgdZd9397u7+1OaXB5N8ZZXz\nrLvu/vRmUF+V5GVJfnnVM62zqro6yVeT+LD63MuTfH9V/WJVfXBz55odqqrnJfnXSR6squ9d9Tx7\nRVX9iWz8ovJfVz3LTojqM+NQ3Hb9tOnuoy6xeHpV1XcmOdDd9616lnVXVedk45e+r2XjF0B2oKqe\nn+RtSd666ln2iP+S5JXdfWWSR5L89RXPs+6uT/Lfk7w9ycuq6kdXPM9ecWM2d6zXkag+M85P8tDm\n8dEkF61wFvj/bH6w7p1J/t6qZ9kLuvtYd9+Y5JeSfM+q51ljb03yru5+ZNWD7BG/1t2/s3n8W0n8\njenMS5K8Z/OSvz+T5FUrnmftVdU3JLk6yWdXPctOieozw23X2ZU2dwPvSPIT3f2lVc+z7qrqLVV1\n/eaXL8zGjiA7811Jbqyqe5J8e1W9d8XzrLsPVNVlVbUvyfcneWDVA625/5nkz28ef0cS//s594ok\n93X32l5BwzlVZ8bTt12/Lxu3Xe/VjgN/4Iezcfm3m6rqpiS3dfdHVjzTOntPkjuq6oYkv5HkF1Y8\nz9rq7quePq6qe7r7hlXOswf8ZJIPJTknyc9196dXPM+6uz3Jv6mq1yV5XpLXrnieveCvJfncqoeY\ncEm9M+BEt2J3TjAAwN4hqs8Qt10HANi7RDUAAAz5wBwAAAyJagAAGBLVAGeBqnqwqv7squcA2KtE\nNQAADIlqAAAYcvUPgD1o85a/70ryfUnuTnIoyV9J8neT3JDkqSQ3dfcHqupHklzR3T+0+dyPJ/lQ\nd//7FYwOsJbcURFgb3ptkpcm+XNJ/kaSv53kT2fjVsDflOQFSf5bkg8kuTPJT23ewvp52Yjv169g\nZoC15fQPgL3piiQf7e7f6+6PJXkkyZeT/FiSf5zkg0kuSpLu/kqS/5GN4L46yb3d/cRKpgZYU6Ia\nYG86J8kzz+/7epI/leTjSX47yQ89a/1Hs3GqyN9M4rQPgOfI6R8Ae9MXktxYVe9M8uokL0rylzcf\n/2CSNz5r/c8m+cUkT2ZjJxuA58BONcDe9OFsnNLx5SR/P8nD2diN/tYkDyX5i0ker6pvSpLu/l9J\nfifJr3X3V1cyMcAac/UPAFJV+5PcluTT3f2RVc8DsG7sVAOQbOxkf3M2rgQCwHNkpxoAAIbsVAMA\nwJCoBgCAIVENAABDohoAAIZENQAADIlqAAAY+n+k4QKcsXdtbQAAAABJRU5ErkJggg==\n", 79 | "text/plain": [ 80 | "" 81 | ] 82 | }, 83 | "metadata": {}, 84 | "output_type": "display_data" 85 | } 86 | ], 87 | "source": [ 88 | "cnt_srs=train.groupby(\"day\").is_trade.mean()\n", 89 | "\n", 90 | "plt.figure(figsize=(12,6))\n", 91 | "sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8, color=color[0])\n", 92 | "plt.ylabel('CVR', fontsize=12)\n", 93 | "plt.xlabel('day', fontsize=12)\n", 94 | "plt.show()" 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "metadata": {}, 100 | "source": [ 101 | "通过对每天每时转化率分析,前几天转化率和当天差异较大,所以直接使用最后一天的上午作为训练集。" 102 | ] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": 21, 107 | "metadata": {}, 108 | "outputs": [ 109 | { 110 | "data": { 111 | "image/png": "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\nLwAA+OOcrTPlh5OcM90+P2fvdQIAcBY4W8PqM1ldsrInycvjWgEAgJM7W3df+VySp6pqV5Lrklw+\nuB8AADihs3JNeZJU1Y4k1yZ5srtfH90PAACcyFkbygEAYLM4W5evAGw6VfX+JB9M8t+7+3dH9wPA\nxjFTzpZTVRclebi7rxrdy2ZWVe9N8tnMfrk/nOTG7v4/Y7vavKrqTyX5yST/Ick3Jbmmuw+M7Wpz\nm17rP9vdl43uZTOrqpUkL01fSXJrdz8/sKWzQlXdm+Q/dvfPjO5lM6uqjyW5cbr7viS/3N3fMbCl\nM2amfBOY9l2/JMmj3X3n6H42s+m9Bp9Kct7oXs4CNyX5ZHf/fFXtT/KRJI8M7mkz+wtJ/lF3Pz19\nn35Vkv80uKfN7q6sbo/Lmbs0yYPd/d2jGzlbVNVVST4gkM+vu/cn2Z8kVXV3Zv/Gb0pn65aIZ42q\nuiHJ9u6+Ismuqto9uqdN7u3MfqM+NLqRza677+3un5/u7kzyOyP72ey6+7EpkH9tkq9J8l9G97SZ\nVdU1SX4/iTf6z+/yJPuq6vNV9Zlp5pwzVFXvTvIjSV6uqr89up+zRVV9SWa/6PzK6F7OlFC+/PYm\neWi6/XhW91/nDHT3oe5+Y3QfZ5Oq+lCSHd399OheNruq2pbZL43/N7NfIDkDVfWeJN+b5HtG93KW\n+EKSq7v7yiS/l+T6wf1sdjcn+fUkn0jyNVV16+B+zha3ZJox36yE8uV3XpJXp9uHklw0sBf4I6Y3\nJt6d5B+M7uVs0N1Hu/uWJP85yd8Y3c8m9j1J7unu3xvdyFniue5+bbr9QhL/x3Y+lyX54Wm75h9L\n8nWD+9n0qupdSa5J8ouje5mHUL78Dmd1TeT58d+MJTHNRj6U5OPd/crofja7qvruqrp5uvu+zGYk\nOTN/NcktVfVLSf5SVf3bwf1sdvdX1Z6q2p5kX5JnRze0yf1mkq+Ybn91Ej8/53dVkqe7e1PvXmJd\n2PJ7JrMlK08n2ZOkx7YDf+jbMtu+7/aquj3J/u7+8cE9bWY/nOShqvr2JL+a5OcG97NpdffXvnO7\nqn6pu799ZD9ngTuSPJBkW5JHuvuxwf1sdvcl+XdV9U1J3p3kGwf3czb4+iRPjm5iXrZEXHJVdWGS\np5L8QpLrklxuTTQAwNlFKN8Epu3Rrk3y5LQGDQCAs4hQDgAAg3nTIAAADCaUAwDAYEI5ACdVVS9X\n1ZeN7gPgbCaUAwDAYEI5AAAMZvcVAP6I6SOr70nyd5I8nmRvkg8n+dYk357k7SS3d/f9VfUPk1zR\n3d8yPfankjzQ3f9+QOsAm5ZP9ATgeN+Y5KuSfHmSv57km5P8mcw+yvork7w3yX9Lcn+SzyX559NH\nsL87s/B+04CeATY1y1cAON4VSR7u7v/d3T+R5PeS/FaS70ryT5J8JslFSdLdv5PkNzIL7NckeaK7\n3xrSNcAmJpQDcLxtSY5d2/gHSb40yU8leSnJtxx3/sOZLXX5W0ksWwE4A5avAHC8/5rklqq6O8lH\nkrw/yV+e6p9J8h3Hnf+TST6f5EhmM+kArJGZcgCO99nMlqT8VpLvTPJ6ZrPhfzHJq0n+fJLDVfWV\nSdLdv53ktSTPdffvD+kYYJOz+woAc6mqlST7kzzW3T8+uh+AzchMOQDzej3Jn8tsJxYAzoCZcgAA\nGMxMOQAADCaUAwDAYEI5AAAMJpQDAMBgQjkAAAwmlAMAwGD/DwJi5LcreaAPAAAAAElFTkSuQmCC\n", 112 | "text/plain": [ 113 | "" 114 | ] 115 | }, 116 | "metadata": {}, 117 | "output_type": "display_data" 118 | } 119 | ], 120 | "source": [ 121 | "cnt_srs=train.groupby(\"day\").is_trade.count()\n", 122 | "\n", 123 | "plt.figure(figsize=(12,6))\n", 124 | "sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8, color=color[0])\n", 125 | "plt.ylabel('count', fontsize=12)\n", 126 | "plt.xlabel('day', fontsize=12)\n", 127 | "plt.show()" 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": { 133 | "collapsed": true 134 | }, 135 | "source": [ 136 | "但是前七天包含了大量的数据,使用前七天提取了转化率信息,同时使用前七天的数据预测了第八天的数据,然后把预测的结果当成新的特征。" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 22, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "data": { 146 | "image/png": "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\n", 147 | "text/plain": [ 148 | "" 149 | ] 150 | }, 151 | "metadata": {}, 152 | "output_type": "display_data" 153 | } 154 | ], 155 | "source": [ 156 | "cnt_srs=pd.DataFrame(train.groupby(\"user_id\").is_trade.count()).reset_index()\n", 157 | "cnt_srs.columns=[\"user_id\",\"user_id_count\"]\n", 158 | "\n", 159 | "cnt_srs=cnt_srs.groupby(\"user_id_count\").user_id.count()\n", 160 | "\n", 161 | "plt.figure(figsize=(12,6))\n", 162 | "sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8, color=color[0])\n", 163 | "plt.ylabel('user_count', fontsize=12)\n", 164 | "plt.xlabel('user_id_count', fontsize=12)\n", 165 | "plt.show()" 166 | ] 167 | }, 168 | { 169 | "cell_type": "markdown", 170 | "metadata": { 171 | "collapsed": true 172 | }, 173 | "source": [ 174 | "发现每个人的平均次数较少,所以和通常的根据用户的历史数据预测未来是否购买问题是不一样的,没必要进行滑窗统计user_id的特征。\n", 175 | "进一步分析,数据中包含大量的单次用户或很少次数的用户,猜测这里只是用户的搜索数据,浏览数据和点击数据不包含在里面。那么此时搜索的内容和商品的属性就是信息量存放的点了。\n", 176 | "对于单次用户,我们只能通过他搜索的和商品实际的属性,以及品类的确定。\n", 177 | "对于多次用户,我们能统计出用户的属性偏好,以及用户的实际想购买的偏好。\n", 178 | "假设现在我任意选取两个属性来演示。\n", 179 | "用下图来表示:true_p1表示p1这个属性在不在item_property_list中,pre_p1表示p1这个属性在不在predict_category_property中" 180 | ] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "execution_count": 14, 185 | "metadata": { 186 | "collapsed": true 187 | }, 188 | "outputs": [], 189 | "source": [ 190 | "dic={\"user_id\":[1,1,1,1,1,2,2,2,2,2],\"true_p1\":[1,1,0,1,1,0,0,0,1,0],\"true_p2\":[0,0,0,1,0,1,1,1,1,1],\"item_id\":[1,2,3,1,2,1,2,1,4,5],\"pre_p1\":[1,1,1,1,1,0,0,1,1,0],\"pre_p2\":[1,0,0,1,0,1,1,0,1,1]}" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": 15, 196 | "metadata": { 197 | "collapsed": true 198 | }, 199 | "outputs": [], 200 | "source": [ 201 | "sample=pd.DataFrame(dic)" 202 | ] 203 | }, 204 | { 205 | "cell_type": "code", 206 | "execution_count": 16, 207 | "metadata": {}, 208 | "outputs": [ 209 | { 210 | "data": { 211 | "text/html": [ 212 | "
\n", 213 | "\n", 226 | "\n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | "
item_idpre_p1pre_p2true_p1true_p2user_id
0111101
1210101
2310001
3111111
4210101
5101012
6201012
7110012
8411112
9501012
\n", 331 | "
" 332 | ], 333 | "text/plain": [ 334 | " item_id pre_p1 pre_p2 true_p1 true_p2 user_id\n", 335 | "0 1 1 1 1 0 1\n", 336 | "1 2 1 0 1 0 1\n", 337 | "2 3 1 0 0 0 1\n", 338 | "3 1 1 1 1 1 1\n", 339 | "4 2 1 0 1 0 1\n", 340 | "5 1 0 1 0 1 2\n", 341 | "6 2 0 1 0 1 2\n", 342 | "7 1 1 0 0 1 2\n", 343 | "8 4 1 1 1 1 2\n", 344 | "9 5 0 1 0 1 2" 345 | ] 346 | }, 347 | "execution_count": 16, 348 | "metadata": {}, 349 | "output_type": "execute_result" 350 | } 351 | ], 352 | "source": [ 353 | "sample" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 17, 359 | "metadata": {}, 360 | "outputs": [ 361 | { 362 | "data": { 363 | "text/plain": [ 364 | "user_id\n", 365 | "1 0.8\n", 366 | "2 0.2\n", 367 | "Name: true_p1, dtype: float64" 368 | ] 369 | }, 370 | "execution_count": 17, 371 | "metadata": {}, 372 | "output_type": "execute_result" 373 | } 374 | ], 375 | "source": [ 376 | "sample.groupby(\"user_id\").true_p1.mean()" 377 | ] 378 | }, 379 | { 380 | "cell_type": "code", 381 | "execution_count": 18, 382 | "metadata": {}, 383 | "outputs": [ 384 | { 385 | "data": { 386 | "text/plain": [ 387 | "user_id\n", 388 | "1 1.0\n", 389 | "2 0.4\n", 390 | "Name: pre_p1, dtype: float64" 391 | ] 392 | }, 393 | "execution_count": 18, 394 | "metadata": {}, 395 | "output_type": "execute_result" 396 | } 397 | ], 398 | "source": [ 399 | "sample.groupby(\"user_id\").pre_p1.mean()" 400 | ] 401 | }, 402 | { 403 | "cell_type": "markdown", 404 | "metadata": {}, 405 | "source": [ 406 | "统计出用户对于属性的占比,我们会捕捉到用户对属性的偏好,这是特征的第二次构造。" 407 | ] 408 | }, 409 | { 410 | "cell_type": "code", 411 | "execution_count": 20, 412 | "metadata": { 413 | "collapsed": true 414 | }, 415 | "outputs": [], 416 | "source": [ 417 | "for i in [\"true_p1\",\"true_p2\",\"pre_p1\",\"pre_p2\"]:\n", 418 | " temp=pd.DataFrame(sample.groupby(\"user_id\")[i].mean()).reset_index()\n", 419 | " temp.columns=[\"user_id\",\"%s_mean_user\"%i]\n", 420 | " sample=sample.merge(temp,on=\"user_id\",how=\"left\")" 421 | ] 422 | }, 423 | { 424 | "cell_type": "code", 425 | "execution_count": 21, 426 | "metadata": {}, 427 | "outputs": [ 428 | { 429 | "data": { 430 | "text/html": [ 431 | "
\n", 432 | "\n", 445 | "\n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | "
item_idpre_p1pre_p2true_p1true_p2user_idtrue_p1_mean_usertrue_p2_mean_userpre_p1_mean_userpre_p2_mean_user
01111010.80.21.00.4
12101010.80.21.00.4
23100010.80.21.00.4
31111110.80.21.00.4
42101010.80.21.00.4
51010120.21.00.40.8
62010120.21.00.40.8
71100120.21.00.40.8
84111120.21.00.40.8
95010120.21.00.40.8
\n", 594 | "
" 595 | ], 596 | "text/plain": [ 597 | " item_id pre_p1 pre_p2 true_p1 true_p2 user_id true_p1_mean_user \\\n", 598 | "0 1 1 1 1 0 1 0.8 \n", 599 | "1 2 1 0 1 0 1 0.8 \n", 600 | "2 3 1 0 0 0 1 0.8 \n", 601 | "3 1 1 1 1 1 1 0.8 \n", 602 | "4 2 1 0 1 0 1 0.8 \n", 603 | "5 1 0 1 0 1 2 0.2 \n", 604 | "6 2 0 1 0 1 2 0.2 \n", 605 | "7 1 1 0 0 1 2 0.2 \n", 606 | "8 4 1 1 1 1 2 0.2 \n", 607 | "9 5 0 1 0 1 2 0.2 \n", 608 | "\n", 609 | " true_p2_mean_user pre_p1_mean_user pre_p2_mean_user \n", 610 | "0 0.2 1.0 0.4 \n", 611 | "1 0.2 1.0 0.4 \n", 612 | "2 0.2 1.0 0.4 \n", 613 | "3 0.2 1.0 0.4 \n", 614 | "4 0.2 1.0 0.4 \n", 615 | "5 1.0 0.4 0.8 \n", 616 | "6 1.0 0.4 0.8 \n", 617 | "7 1.0 0.4 0.8 \n", 618 | "8 1.0 0.4 0.8 \n", 619 | "9 1.0 0.4 0.8 " 620 | ] 621 | }, 622 | "execution_count": 21, 623 | "metadata": {}, 624 | "output_type": "execute_result" 625 | } 626 | ], 627 | "source": [ 628 | "sample" 629 | ] 630 | }, 631 | { 632 | "cell_type": "markdown", 633 | "metadata": {}, 634 | "source": [ 635 | "继续,我们可以统计出有这些属性偏好的人和所搜索并点击的item之间的关系" 636 | ] 637 | }, 638 | { 639 | "cell_type": "code", 640 | "execution_count": 23, 641 | "metadata": {}, 642 | "outputs": [ 643 | { 644 | "data": { 645 | "text/plain": [ 646 | "item_id\n", 647 | "1 0.5\n", 648 | "2 0.6\n", 649 | "3 0.8\n", 650 | "4 0.2\n", 651 | "5 0.2\n", 652 | "Name: true_p1_mean_user, dtype: float64" 653 | ] 654 | }, 655 | "execution_count": 23, 656 | "metadata": {}, 657 | "output_type": "execute_result" 658 | } 659 | ], 660 | "source": [ 661 | "sample.groupby(\"item_id\").true_p1_mean_user.mean()" 662 | ] 663 | }, 664 | { 665 | "cell_type": "code", 666 | "execution_count": 24, 667 | "metadata": {}, 668 | "outputs": [ 669 | { 670 | "data": { 671 | "text/plain": [ 672 | "item_id\n", 673 | "1 0.600000\n", 674 | "2 0.466667\n", 675 | "3 0.200000\n", 676 | "4 1.000000\n", 677 | "5 1.000000\n", 678 | "Name: true_p2_mean_user, dtype: float64" 679 | ] 680 | }, 681 | "execution_count": 24, 682 | "metadata": {}, 683 | "output_type": "execute_result" 684 | } 685 | ], 686 | "source": [ 687 | "sample.groupby(\"item_id\").true_p2_mean_user.mean()" 688 | ] 689 | }, 690 | { 691 | "cell_type": "code", 692 | "execution_count": 25, 693 | "metadata": {}, 694 | "outputs": [ 695 | { 696 | "data": { 697 | "text/plain": [ 698 | "item_id\n", 699 | "1 0.7\n", 700 | "2 0.8\n", 701 | "3 1.0\n", 702 | "4 0.4\n", 703 | "5 0.4\n", 704 | "Name: pre_p1_mean_user, dtype: float64" 705 | ] 706 | }, 707 | "execution_count": 25, 708 | "metadata": {}, 709 | "output_type": "execute_result" 710 | } 711 | ], 712 | "source": [ 713 | "sample.groupby(\"item_id\").pre_p1_mean_user.mean()" 714 | ] 715 | }, 716 | { 717 | "cell_type": "code", 718 | "execution_count": 26, 719 | "metadata": {}, 720 | "outputs": [ 721 | { 722 | "data": { 723 | "text/plain": [ 724 | "item_id\n", 725 | "1 0.600000\n", 726 | "2 0.533333\n", 727 | "3 0.400000\n", 728 | "4 0.800000\n", 729 | "5 0.800000\n", 730 | "Name: pre_p2_mean_user, dtype: float64" 731 | ] 732 | }, 733 | "execution_count": 26, 734 | "metadata": {}, 735 | "output_type": "execute_result" 736 | } 737 | ], 738 | "source": [ 739 | "sample.groupby(\"item_id\").pre_p2_mean_user.mean()" 740 | ] 741 | }, 742 | { 743 | "cell_type": "markdown", 744 | "metadata": { 745 | "collapsed": true 746 | }, 747 | "source": [ 748 | "所以,我们又可以构造出查看该item的人对不同的属性的平均偏好,这是特征的第三次构造。" 749 | ] 750 | }, 751 | { 752 | "cell_type": "markdown", 753 | "metadata": { 754 | "collapsed": true 755 | }, 756 | "source": [ 757 | "总而言之一句话:用属性来表征user_id,用user_id来表征item_id。" 758 | ] 759 | }, 760 | { 761 | "cell_type": "code", 762 | "execution_count": null, 763 | "metadata": { 764 | "collapsed": true 765 | }, 766 | "outputs": [], 767 | "source": [] 768 | }, 769 | { 770 | "cell_type": "markdown", 771 | "metadata": { 772 | "collapsed": true 773 | }, 774 | "source": [ 775 | "最终再加上user_id对于item_id,cate_id等的时间差特征,排序特征和计数特征等,共同构成了我的特征集。\n", 776 | "本题核心就是根据数据的分析选用合适的数据建模,围绕着user_id和item_id构造特征,找出user_id和item_id的数据表达方法,从数据的痕迹里复现当时用户的场景。" 777 | ] 778 | }, 779 | { 780 | "cell_type": "code", 781 | "execution_count": null, 782 | "metadata": { 783 | "collapsed": true 784 | }, 785 | "outputs": [], 786 | "source": [] 787 | }, 788 | { 789 | "cell_type": "code", 790 | "execution_count": null, 791 | "metadata": { 792 | "collapsed": true 793 | }, 794 | "outputs": [], 795 | "source": [] 796 | }, 797 | { 798 | "cell_type": "code", 799 | "execution_count": null, 800 | "metadata": { 801 | "collapsed": true 802 | }, 803 | "outputs": [], 804 | "source": [] 805 | } 806 | ], 807 | "metadata": { 808 | "kernelspec": { 809 | "display_name": "Python 2", 810 | "language": "python", 811 | "name": "python2" 812 | }, 813 | "language_info": { 814 | "codemirror_mode": { 815 | "name": "ipython", 816 | "version": 2 817 | }, 818 | "file_extension": ".py", 819 | "mimetype": "text/x-python", 820 | "name": "python", 821 | "nbconvert_exporter": "python", 822 | "pygments_lexer": "ipython2", 823 | "version": "2.7.13" 824 | } 825 | }, 826 | "nbformat": 4, 827 | "nbformat_minor": 2 828 | } 829 | --------------------------------------------------------------------------------