---
# System prepended metadata

title: 12/4進度紀錄
tags: [進度紀錄]

---

# 12/4進度紀錄

## 簡筠方 claire

### 介紹:

**1. Label Encoding:** 將字串特徵轉換為整數標籤。
* 適用場景：keyword 是分類變量（例如，類別標籤），並且類別之間沒有特定順序。
* 優點：簡單高效。
* 缺點：模型可能將類別數值解讀為有序數據，對某些模型（如線性模型）可能不合適。

**2. One-Hot Encoding:**  將每個類別轉換為二進制特徵（1 表示存在，0 表示不存在）。
* 適用場景：keyword 有較少的唯一值。
* 優點：避免類別順序問題，對於大多數模型更友好。
* 缺點：若類別過多，可能導致特徵空間過大。

**3. TF-IDF 或 Count Vectorization:** 如果 keyword 是自由文本，可以視為文本特徵，進行 TF-IDF 或詞頻處理。
* 適用場景：keyword 可能包含重要的文本信息，類別數量較多且有語義意圖。
* 優點：考慮詞頻的重要性，對文本模型更友好。
* 缺點：需要更多的處理時間和空間。
* ![image](https://hackmd.io/_uploads/SycQieqmJx.png)

**4. Porter Stemmer:** 詞幹提取的目的是去掉單詞的詞尾變化，例如時態、複數或比較級，使單詞縮減到它的詞幹形式
去掉詞尾的複數形式和過去式：

* 規則：sses → ss，ies → i，s → ''（如果詞幹長度足夠）
範例：
"caresses" → "caress"
"ponies" → "poni"
"cats" → "cat"
處理動詞的時態：

* 規則：去掉詞尾的 ed 或 ing，如果去掉後剩下的部分仍然是有效的詞幹。
範例：
"feeding" → "feed"
"troubled" → "troubl"
處理詞尾的重複字母：

* 規則：去掉雙字母詞尾（如 "ll", "ss"），保留一個。
範例：
"falling" → "fall"
"hopping" → "hop"
處理詞尾的標準化：

* 規則：將一些常見的詞尾（例如 "ational", "ness"）轉換為標準形式。
範例：
"relational" → "relate"
"hopefulness" → "hope"

### 分析對象:
 * text_length: text的字串長度，直接為int
 * word_count: text中字詞的數量，直接為int
 * keyword
    * Label Encoding
    * One-Hot Encoding
 * text
   * 改為全部都小寫、去除http\\...連結、去除@#[] 
   * Porter Stemmer
   * TF-IDF

### 測試模型

使用XGBoost

|             | 版本 1         | 版本 2           | 版本 3           |
| ----------- | -------------- | ---------------- | ---------------- |
| text_length | ○              | ○                | ○                |
| text_length | ○              | ○                | ○                |
| keyword     | Label Encoding | One-Hot Encoding | One-Hot Encoding |
| text        | x              | x                | TF-IDF           |
| public score       | 0.63438        | 0.72080          | 0.76953          |



### 困難
* 我真看不懂怎樣才算沒有overfitting

## 陳芊羽 Eileen(lala)
* 做了甚麼：
    * RNN
        1. 先將text中的網址、@user、非英文(亂碼等)、stopword去除
        2. 利用Tokenizer()依照text中出現的單字建立詞典，將每筆text依照詞典轉換成數字向量(embedding)，並用pad_sequences確保向量長度一致
        3. 設定model並進行訓練
        4. 將test_data的text丟給model，輸出數值以0.7為界分成0.1(threshold)，匯出成csv檔

* 困難：
    * 找不到tensorflow
         有install也有出現在目錄，但要import時就是找不到
    * 一知半解似懂非懂(?)
         model那塊的程式是chatgpt提供，儘管有逐句去確認在做甚麼，但對很多東西都缺乏概念（包括資料實際被怎麼處理了、中間變成甚麼樣子跟經過甚麼計算）
         
         那些loss函數、優化器、metrics的選用會對程式造成甚麼影響？選擇的依據又是？在activation跟outpput_dim的選擇上也有相同的疑惑。
         
* 紀錄：
    * 可以試著改：
        loss函數、優化器、metrics
        activation跟outpput_dim
        batch_size、validation_split、epochs
        
    * 可以嘗試：
        對text的字詞型態進行處理
        將keyword等其他資料加入訓練(怎麼合併?)

## 游婷安Lulu
* 做了甚麼:

    1. 將文字中亂碼以及網址去除
    2. 刪除stop words，將出現頻率太高的字去除
    3. 分別使用TfidfVectorizer 和 CountVectorizer
    4. RidgeClassifier 
    - public score 
        * CountVectorizer: 0.79344
        * TfidfVectorizer: 0.80324
    5. LogisticRegression
        * 分別使用L1_model, L2_model, 和 Elastic_net_model regularization
    - public score
     

        |                 | L1_model | L2_model | Elastic_net_model|
        | --------------- | -------- | -------- | -----------------|
        | CountVectorizer | 0.79313  | 0.80110  | 0.79865          |
        | TfidfVectorizer| 0.76739  | 0.80110  |     ----         |


* 困難:
    1.不是很懂如何用圖表呈現overfitting
    2.很多model會花很多時間訓練

## 廖奕皓Howard
*做了甚麼:
    1. 刪除標點符號、網址、連接詞等無用的東西
    2. 改變一些縮寫的詞句，像是btw, lol等
    3. 使用TfidVectorizer去將文本轉換成TF-IDF
    4. 利用MulinomialNB模組來分析並預測
*困難:
    1. 找不到tensorflow和keras_nlp用不了
    2. 不會看overfitting
*Accuracy:67.67%
    