機械学習の基本プロセスと内容

2677 ワード

一、特徴抽出1.1 One-hot符号化one-hot符号化とは何ですか.one-hot符号化は、独熱符号化、有効符号化とも呼ばれる.その方法は,Nビット状態レジスタを用いてN個の状態を符号化し,各状態に独立したレジスタビットがあり,任意の場合,そのうち1ビットのみが有効である.onehotは特徴抽出において語袋モデル(bag of words)に属する.one-hotを使用してテキストフィーチャーベクトルを抽出する方法については、以下の例で説明します.私たちのコーパスには3つの言葉があるとします.
私は中国が好きです
パパとママは私を愛してる
お父さんとお母さんは中国が好きです
まず、予測ライブラリを分離し、すべての語を取得し、これに番号を付けます.
1私2愛;3お父さん4お母さん5中国
次にonehotを使用して、各セグメントのフィーチャーベクトルを抽出します.
最終的な特徴ベクトルは
私は中国が好きです->1,1,0,0,1
父と母は私を愛している
お父さんとお母さんは中国を愛している
メリットとデメリットの分析
利点:1つは分類器が離散データをうまく処理しないという問題を解決し,2つはある程度拡張特徴の役割を果たした(上のサンプル特徴数は3から9に拡張した)
欠点:テキストの特徴表示にいくつかの欠点が際立っています.まず、それは語袋モデルであり、語と語の間の順序を考慮しない(テキスト中の語の順序情報も重要である).次に、語と語が互いに独立していると仮定します(多くの場合、語と語は相互に影響しています).最後に,その得られた特徴は離散疎である.
sklearn one hot encodeを実現

from sklearn import preprocessing  
      
enc = preprocessing.OneHotEncoder()  #  
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])   #  
array = enc.transform([[0,1,3]]).toarray()  #  
print(array)

1.2 TF−IDF IF−IDFは情報検索(IR)で最もよく用いられるテキスト表現である.アルゴリズムの考え方も簡単で,各語に現れる語周波数(TF)を統計し,重みパラメータ(IDF)を添付する.例を挙げます.
ドキュメントの最初の10のキーワードを統計するとしたら、どうすればいいですか?まず考えられるのは,文書中の各語の出現頻度(TF)を統計することであり,語周波数が高いほど,この語が重要になる.しかし、統計をしてみると、あなたが得たキーワードは基本的に「的」、「はい」、「為」という実用的な意味のない言葉(停用語)であることがわかりますが、この問題はどのように解決しますか?単語ごとに重みを付けることを考えるかもしれませんが、このような「停用語」には小さな重み(さらには0にする)が加わる.この重みがIDFである.ここで式を見ると、T F=ある語が文章に現れる回数/文章の総語数TF=ある語が文章に現れる回数/文章の総語数TF=ある語が文章に現れる回数/文章の総語数ID F=l o gである(コーパスの文書総数/その語が出現した文書数+1)IDF=log(コーパスの文書総数/その語が出現した文書数+1)IDF=log(コーパスの文書総数/その語が出現した文書数+1)IFは、語周波数の計算であり、IDFは語の常見度を測定することを容易に理解できるはずである.IDFを計算するには、言語の使用環境をシミュレートするために事前にコーパスを用意する必要があります.単語が一般的であればあるほど、式の分母が大きくなり、逆ドキュメントの頻度が小さくなるほど0に近づきます.ここでの分母+1は分母が0の場合を避けるためである.TF−IDFの計算式は以下の通りである:TF−ID F=TF∗I T F TF−IDF=TF*ITF TF−IDF=TF∗ITF公式から容易に分かるように、TF−IDFの値はこの語が文章中に現れる周波数に比例し、この語がコーパス全体に現れる周波数に反比例するため、文章中のキーワード抽出の目的を良好に実現することができる.メリットとデメリットの分析
利点:簡単で迅速で、結果は実際に合っています.
欠点:単純に語周波数を考慮し,語と語の位置情報および語と語の相互関係を無視する.
sklearn実現TF-IDF
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.feature_extraction.text import TfidfTransformer

tag_list = ['     ',  
            '     ',  
            '     '] 

vectorizer = CountVectorizer() #   
X = vectorizer.fit_transform(tag_list) # 
"""
word_dict = vectorizer.vocabulary_
{' ': 2, ' ': 1, ' ': 6, ' ': 5, ' ': 0, ' ': 3, ' ': 4}
"""

transformer = TfidfTransformer()  
tfidf = transformer.fit_transform(X)  # X TF-IDF   
print(tfidf.toarray())

二、データの前処理
三、予測モデル四、訓練モデル五、モデル評価、改善六、最適化アルゴリズム(これは自分で加えたもので、見返りに理解を深めるのに役立つ)