{"cells":[{"metadata":{},"cell_type":"markdown","source":"**Introduction**\n\nThe concept of Long Short Term Memory networks were first envisioned by Sepp Hochreiter and Jürgen Schmidhuber in 1997 which provided a huge advancement within the world of Reccurent Neural Networks. LSTMs utilize gates which learn to pass on certain parts of a given input to be utilized when determining an output. \n\n\nQuora is a website which hosts an online platform where questions can be asked and then be asnwered by the online community. The the community intends to answer questions posed by curious individuals from topics ranging from relgion to technology. A majority of the answers provided are well intedned, but infrequently, insencere responses are posted which provide no value to the question asked. If Quora is capable of identifying these types of responses, it can make sure it's community is a benefical environment for all users. The following analysis intends to identify inscencere questions that have been posted within the Quora Community by utilizing Convolutional Networks in tangent with LSTMs. \n\n\nBelow, we import the required modules for the analysis."},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport time\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom tqdm import tqdm\nimport math\n\nfrom sklearn.metrics import roc_curve, auc,  f1_score\nfrom sklearn.model_selection import train_test_split\n\nimport matplotlib.pyplot as plt\nimport keras\nfrom sklearn import metrics\nfrom keras.layers import Input, Embedding, Dense, Conv2D, MaxPool2D, Reshape, Flatten, Concatenate, Dropout, SpatialDropout1D, BatchNormalization, LSTM, Embedding, Dropout, Activation, CuDNNGRU, Conv1D,CuDNNLSTM\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.layers import Bidirectional, GlobalMaxPool1D, TimeDistributed\nfrom keras.models import Model\nfrom keras import initializers, regularizers, constraints, optimizers, layers","execution_count":1,"outputs":[{"output_type":"stream","text":"Using TensorFlow backend.\n","name":"stderr"}]},{"metadata":{},"cell_type":"markdown","source":"**Preproccessing**\n\nThe train data set consists of 1.31 million records for the training data where the commentary is preclassified as toxic or non toxic. The test data set consists of 376 thousand records.\n\nIn order for computers to be able to process english text, they must convert the sentences to vectors. We will first tokenize the sentences where each word is given a value. Each sentence must be the same length before entering the neural network which is why we utilize the pad_sequences function. \n\nWe will now read in the data and split it into train and test, tokenize the comments, and pad the comments for preprocessing."},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"#filename = '../input/googles-trained-word2vec-model-in-python/GoogleNews-vectors-negative300.bin.gz'\n#model = KeyedVectors.load_word2vec_format(filename, binary=True)\ndf = pd.read_csv('../input/quora-insincere-questions-classification/train.csv')\n\ntrain_df, test_df = train_test_split(df, test_size=0.2, random_state=2018)\ntrain_df, val_df = train_test_split(train_df, test_size=0.34, random_state=2018)\n\n## some config values \nembed_size = 300 # how big is each word vector\nmax_features = 50000 # how many unique words to use (i.e num rows in embedding vector)\nmaxlen = 100 # max number of words in a question to use\n\n## fill up the missing values\ntrain_X = train_df[\"question_text\"].fillna(\"_na_\").values\nval_X = val_df[\"question_text\"].fillna(\"_na_\").values\ntest_X = test_df[\"question_text\"].fillna(\"_na_\").values\n\n## Tokenize the sentences\ntokenizer = Tokenizer(num_words=max_features)\ntokenizer.fit_on_texts(list(train_X))\ntrain_X = tokenizer.texts_to_sequences(train_X)\nval_X = tokenizer.texts_to_sequences(val_X)\ntest_X = tokenizer.texts_to_sequences(test_X)\n\n## Pad the sentences \ntrain_X = pad_sequences(train_X, maxlen=maxlen)\nval_X = pad_sequences(val_X, maxlen=maxlen)\ntest_X = pad_sequences(test_X, maxlen=maxlen)\n\n## Get the target values\ntrain_y = train_df['target'].values\nval_y = val_df['target'].values\ntest_y = test_df['target'].values","execution_count":2,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Embedding**\n\nIt takes years for humans to comprehend the intriciacies of a language such as grammer, future and past tenses, and parts of speech. Though we could input our data into the Neural Netowrk immdeitaly, we can utilize anexternal dictionary which seek to expalin what each word utilized with our data set means. \n\nA glove embedding is an unsupervised algorithm which aims to produce vectors that represent all words within a given corpra. A glove is initiated by creating a matrix sized by the (unique number of words) x (unique number of words). The values within the matrix are indicative of how often a word is associated with another word. The matrix is then factorized to yield lower dimesnionality to produce a matrix (words) x (# of desired features). Though these features don't have a specific meaning, the more features produced, the more differentiation can be created between words. \n\nThe glove embedding utilized within this analysis was created by Standford by training on the corpra of Wikipedia2014 which contains 400k unique words within it's corpra. A function is created below to find the embeedings within the quora corpra data set utlizing standford's glove embeddings. "},{"metadata":{"trusted":true,"_uuid":"19fbaa59bf067e2f00e684e4505a8c9c27942bff"},"cell_type":"code","source":"EMBEDDING_FILE = '../input/glove840b300dtxt/glove.840B.300d.txt'\ndef get_coefs(word,*arr): return word, np.asarray(arr, dtype='float32')\nembeddings_index = dict(get_coefs(*o.split(\" \")) for o in open(EMBEDDING_FILE))\n\nall_embs = np.stack(embeddings_index.values())\nemb_mean,emb_std = all_embs.mean(), all_embs.std()\nembed_size = all_embs.shape[1]\n\nword_index = tokenizer.word_index\nnb_words = min(max_features, len(word_index))\nembedding_matrix = np.random.normal(emb_mean, emb_std, (nb_words, embed_size))\nfor word, i in word_index.items():\n    if i >= max_features: continue\n    embedding_vector = embeddings_index.get(word)\n    if embedding_vector is not None: embedding_matrix[i] = embedding_vector","execution_count":4,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:5: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n  \"\"\"\n","name":"stderr"}]},{"metadata":{},"cell_type":"markdown","source":"We will now constrct the Neural Networks which utilizes both Convolutional Neural Networks and Recurrent Neural Networks in Keras. \n\n1. The comments within the train data set must first be translated into numerical embeddings utilizing Stanford's glove embedding.\n\n2. A 2 dimensional CNN is then used across the comments with the filter sizes set at the top.\n    \n    A. The first dimension looks at the number of words to utilize when learning to determine the classification of our output.\n        \n        a. The first filter size of 1 looks strictly at the word to determine the output.\n        \n        b. The next 4 filters look at the word and the words following it to determine the output. The   \n        filter allows the Conv2D to look at the next word, 2 words, 3 words, and 4 words respectively to \n        determine the classification of the given data.  \n        \n    B. The second dimension looks at the word embeddings of each of the words within our filter, which again consist of 300 vectors.\n    \n3. A Bidirectional LSTM is then utilized to determine the output.\n\n    A.The Bidirectional layer creates two LSTMs where one LSTM reads a comment from left to right and the other utilizes the other LSTM to read the comment from right to left. These LSTMs are used in tandem to determine the classification of the comment. \n    \n4. A simple layer of 100 neurons are then used before a final dense layer which will produce the perdicted classification of the comment.\n"},{"metadata":{"trusted":true,"_uuid":"2e0b59c6df9326cdd2a4c482b7fb778fc0a1a153"},"cell_type":"code","source":"filter_sizes = [1,2,3,5]\nnum_filters = 128\n\ninp = Input(shape=(maxlen,))\nx = Embedding(max_features, embed_size, weights=[embedding_matrix])(inp)\nx = Reshape((maxlen, embed_size, 1))(x)\n\nmaxpool_pool = []\nfor i in range(len(filter_sizes)):\n    conv = Conv2D(num_filters, kernel_size=(filter_sizes[i], embed_size),\n                                 kernel_initializer='glorot_uniform', activation='relu')(x) \n    maxpool_pool.append(MaxPool2D(pool_size=(maxlen - filter_sizes[i] + 1, 1))(conv))\n\nz = Concatenate(axis=1)(maxpool_pool) \nz = TimeDistributed(Bidirectional(CuDNNLSTM(256)))(z)\nz = BatchNormalization()(z)\nz = Flatten()(z)\nz = Dense(100, activation=\"relu\")(z)\nz = Dropout(.5)(z)\nz = Dense(100, activation=\"relu\")(z)\nz = Dropout(.5)(z)\nz = Dense(10, activation=\"relu\")(z)\n\noutp = Dense(1, activation=\"sigmoid\")(z)\n\nmodel = Model(inputs=inp, outputs=outp)\nmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\nmodel.summary()\n","execution_count":32,"outputs":[{"output_type":"stream","text":"__________________________________________________________________________________________________\nLayer (type)                    Output Shape         Param #     Connected to                     \n==================================================================================================\ninput_4 (InputLayer)            (None, 100)          0                                            \n__________________________________________________________________________________________________\nembedding_4 (Embedding)         (None, 100, 300)     15000000    input_4[0][0]                    \n__________________________________________________________________________________________________\nreshape_4 (Reshape)             (None, 100, 300, 1)  0           embedding_4[0][0]                \n__________________________________________________________________________________________________\nconv2d_13 (Conv2D)              (None, 100, 1, 128)  38528       reshape_4[0][0]                  \n__________________________________________________________________________________________________\nconv2d_14 (Conv2D)              (None, 99, 1, 128)   76928       reshape_4[0][0]                  \n__________________________________________________________________________________________________\nconv2d_15 (Conv2D)              (None, 98, 1, 128)   115328      reshape_4[0][0]                  \n__________________________________________________________________________________________________\nconv2d_16 (Conv2D)              (None, 96, 1, 128)   192128      reshape_4[0][0]                  \n__________________________________________________________________________________________________\nmax_pooling2d_13 (MaxPooling2D) (None, 1, 1, 128)    0           conv2d_13[0][0]                  \n__________________________________________________________________________________________________\nmax_pooling2d_14 (MaxPooling2D) (None, 1, 1, 128)    0           conv2d_14[0][0]                  \n__________________________________________________________________________________________________\nmax_pooling2d_15 (MaxPooling2D) (None, 1, 1, 128)    0           conv2d_15[0][0]                  \n__________________________________________________________________________________________________\nmax_pooling2d_16 (MaxPooling2D) (None, 1, 1, 128)    0           conv2d_16[0][0]                  \n__________________________________________________________________________________________________\nconcatenate_4 (Concatenate)     (None, 4, 1, 128)    0           max_pooling2d_13[0][0]           \n                                                                 max_pooling2d_14[0][0]           \n                                                                 max_pooling2d_15[0][0]           \n                                                                 max_pooling2d_16[0][0]           \n__________________________________________________________________________________________________\ntime_distributed_4 (TimeDistrib (None, 4, 512)       790528      concatenate_4[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_4 (BatchNor (None, 4, 512)       2048        time_distributed_4[0][0]         \n__________________________________________________________________________________________________\nflatten_4 (Flatten)             (None, 2048)         0           batch_normalization_4[0][0]      \n__________________________________________________________________________________________________\ndense_9 (Dense)                 (None, 100)          204900      flatten_4[0][0]                  \n__________________________________________________________________________________________________\ndropout_4 (Dropout)             (None, 100)          0           dense_9[0][0]                    \n__________________________________________________________________________________________________\ndense_10 (Dense)                (None, 100)          10100       dropout_4[0][0]                  \n__________________________________________________________________________________________________\ndropout_5 (Dropout)             (None, 100)          0           dense_10[0][0]                   \n__________________________________________________________________________________________________\ndense_11 (Dense)                (None, 10)           1010        dropout_5[0][0]                  \n__________________________________________________________________________________________________\ndense_12 (Dense)                (None, 1)            11          dense_11[0][0]                   \n==================================================================================================\nTotal params: 16,431,509\nTrainable params: 16,430,485\nNon-trainable params: 1,024\n__________________________________________________________________________________________________\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"We will fit the model below."},{"metadata":{"trusted":true,"_uuid":"536115ac569f2f36bd49580552a2def1256434cf","scrolled":false},"cell_type":"code","source":"#from keras.callbacks import EarlyStopping, ModelCheckpoint\n#earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')\n#mcp_save = ModelCheckpoint('.mdl_wts.hdf5', save_best_only=True, monitor='val_loss', mode='min')\n\nhistory = model.fit(train_X, train_y, batch_size=512, epochs=3, validation_data=(val_X, val_y))","execution_count":9,"outputs":[{"output_type":"error","ename":"SyntaxError","evalue":"invalid syntax (<ipython-input-9-09141a93e3aa>, line 5)","traceback":["\u001b[0;36m  File \u001b[0;32m\"<ipython-input-9-09141a93e3aa>\"\u001b[0;36m, line \u001b[0;32m5\u001b[0m\n\u001b[0;31m    model)history = model.fit(train_X, train_y, batch_size=512, epochs=3, validation_data=(val_X, val_y))\u001b[0m\n\u001b[0m         ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"]}]},{"metadata":{},"cell_type":"markdown","source":"The two visualizations below look at our train and validation acurracy and the binary crossentropy loss of the binary model. It is clear that the model begins to overfit our training data after the first epoch, so we'll rerun our fit with only 1 epoch.  "},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.style.use(\"ggplot\")\n\ndef plot_history(history):\n    acc = history.history[\"acc\"]\n    val_acc = history.history[\"val_acc\"]\n    loss = history.history[\"loss\"]\n    val_loss = history.history[\"val_loss\"]\n    x = range(1, len(acc) + 1)\n\n    plt.figure(figsize=(12, 5))\n    plt.subplot(1, 2, 1)\n    plt.plot(x, acc, \"b\", label=\"Training acc\")\n    plt.plot(x, val_acc, \"r\", label=\"Validation acc\")\n    plt.title(\"Training and validation accuracy\")\n    plt.legend()\n    plt.subplot(1, 2, 2)\n    plt.plot(x, loss, \"b\", label=\"Training loss\")\n    plt.plot(x, val_loss, \"r\", label=\"Validation loss\")\n    plt.title(\"Training and validation loss\")\n    plt.legend()\n    \nplot_history(history=history)","execution_count":18,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 864x360 with 2 Axes>","image/png":"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bGwsMTExt833T/Xq1Yv4+HjCw8M5cuQIJ06coEqVKiW+netu93nC3Y9paWdUqwtOI4qiWKfd6eR68+/Dxo0bmTZtGsOGDWPPnj0cP36cGTNm3FM2Pz8/nnzySdasWUN2djabNm2651ufQpQGOf/L+b8kFef8f6+0Wi1fffUV+/bt45FHHiEyMpL69euzf/9+AFq1asX58+eZP38+arWayZMnExgYSGZmZollKI+kmC5jR48eJS8vj6VLl9K+fXsaNmzIX3/9ZZcsDRo0QKvV8t1339lMP3LkyF2XK6l9aNy4MSdPniQjI8M67ccff8RkMhW67IgRIzh69CgnT57k448/Zvjw4db3Tp06RXJyMvPnz6djx4489NBD99yfZ+PGjbFYLDbHwmQy2TxccvnyZX7//XfmzJlDt27daNy4MWq12qbNn0ajQaPRYDab77q9Jk2aEBMTY9Om79ixY5hMpkIfBrqbomRs2bIlV69e5eTJk7ddR8uWLfn555/veBWsWrVqAFy5csU67eYHHO/k0KFDtGnThilTptCyZUvq169v80CNSqXikUceYd++fXddz4QJE9i2bZu1XeqgQYOKtH0hypKc//8m5/+/ldb5/2bVqlXD19eXQ4cO2Uz/+uuvadCgAU5OTkDBebdt27bMmTOHw4cP07p1a5vnUjw8PBg4cCDLly8nJiaGn3/+2fqFpbKSYrqMNWjQAIvFwpIlS/jjjz/49NNPefvtt+2Sxdvbm1GjRjFjxgz27NnDb7/9xssvv8wff/xx16sVJbUPI0aMwMnJieHDh3Py5EkOHz7MxIkTi/TQWGBgII0bN2b48OGYTCYGDx5sfe/BBx/EycmJZcuW8d///pd9+/bx8ssv31O2pk2b0r17dyZMmMChQ4c4ffo0I0eOtDnRV6tWDS8vL1atWsXZs2c5fPgwzz77rM1tSpVKRZ06dfjqq6+4evXqHW/HvfDCC8THxzN27FhOnz7N119/zahRowgKCqJVq1b3lP1GRcnYs2dPWrduzcCBA/n888/5448/+Oabb1i3bh2AtRePfv368dVXX/HHH3+wf/9+64AHjRo1ombNmsydO5fffvuNr7/+mldeeaVI+Ro2bMiPP/7Irl27OHfuHGFhYXz++ec288ydO5dt27bx8ssvc/LkSX799VciIiJsns7v2rUr9913HzNmzODZZ59F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\n"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit(train_X, train_y, batch_size=512, epochs=1, validation_data=(val_X, val_y))","execution_count":33,"outputs":[{"output_type":"stream","text":"Train on 689632 samples, validate on 355265 samples\nEpoch 1/1\n689632/689632 [==============================] - 100s 146us/step - loss: 0.1263 - acc: 0.9490 - val_loss: 0.1608 - val_acc: 0.9552\n","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"b079c1c62f3da23cf8b62b64f1b8246da4706cf7"},"cell_type":"code","source":"y_pred = model.predict(test_X)","execution_count":34,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"23758b1f999559c34b179bdef855d889f527c25c"},"cell_type":"code","source":"fpr, tpr, thresholds =roc_curve(test_y, y_pred)\nroc_auc = auc(fpr, tpr)\nprint(\"Area under the ROC curve : %f\" % roc_auc)","execution_count":36,"outputs":[{"output_type":"stream","text":"Area under the ROC curve : 0.961266\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"With our final layer utlizing a sigmoid as it's activation function, the neural network will produce a value between 0 and 1. We can take a standard cutoff point of .5 which produces an f1 score below of .654 which would put this f1 score at the top 20th percentile of all submissions for this Kaggle competition.  "},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred1 = np.where(y_pred > .5, 1, 0)\nprint(\"F1 score is equivalent to {}\".format(f1_score(test_y,y_pred1)))","execution_count":45,"outputs":[{"output_type":"stream","text":"F1 score is equivalent to 0.6539216269251353\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import classification_report\nprint(classification_report(test_y,y_pred1))","execution_count":46,"outputs":[{"output_type":"stream","text":"              precision    recall  f1-score   support\n\n           0       0.98      0.97      0.98    245029\n           1       0.63      0.68      0.65     16196\n\n   micro avg       0.96      0.96      0.96    261225\n   macro avg       0.80      0.83      0.82    261225\nweighted avg       0.96      0.96      0.96    261225\n\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"The model does quite a good job at corecctly classifiyin non-toxic comments with a precision of .98 and a recall of .97. What the model doesn't excel in is in classifying the toxic comments with a precision of .63 and a recall of .68. The business value for this model is to allow someone to manual check the predicted toxic comments and decide where they need to be removed from the forum. With a recall of .68, the model will only capture 68% of the truly toxic comments. We can increase this percentage by lowering the cutoff point for the model when considering if a comment is toxic.\n\nWe will lower the cutoff to .3. This will lower precision to .4 and recall will rise to .9. This means that out of all the comments the model predicted as toxic, 90% of the true toxic comments population will be captured. The cost for this is that only 40% of the comments our model predicted to be toxic will truly be toxic. A user will then have to manually identify the truly toxic comments from the predicted toxic comments because 60% of the predicted toxic comments are not toxic."},{"metadata":{"trusted":true,"_uuid":"f560ee446063d2b27f3d8cbfeb04dd81fb3ce978"},"cell_type":"code","source":"y_pred1 = np.where(y_pred > .3, 1, 0)\nfrom sklearn.metrics import classification_report\nprint(classification_report(test_y,y_pred1))","execution_count":49,"outputs":[{"output_type":"stream","text":"              precision    recall  f1-score   support\n\n           0       0.99      0.91      0.95    245029\n           1       0.40      0.90      0.55     16196\n\n   micro avg       0.91      0.91      0.91    261225\n   macro avg       0.70      0.91      0.75    261225\nweighted avg       0.96      0.91      0.92    261225\n\n","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"5c3faf2c3250e5f079ac692029a54cb6fcd37eea"},"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.title('Receiver Operating Characteristic')\nplt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\nplt.legend(loc = 'lower right')\nplt.plot([0, 1], [0, 1],'r--')\nplt.xlim([0, 1])\nplt.ylim([0, 1])\nplt.ylabel('True Positive Rate')\nplt.xlabel('False Positive Rate')\nplt.show()","execution_count":35,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}