問題タブ [weighted-average]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonで時系列を集計するには?
タイムスタンプが部分的に重複する 2 つの異なる時系列があります。
次のデータを表します。
欠損値を無視しながら、係数 a(0.3) と b(0.7) を使用して毎日加重平均を計算したいと思います。
これらの時系列を最初に揃えようとしたとき:
私は正しくマスクされた時系列を取得します:
しかし、私が行うa1 * 0.3 + b1 * 0.7と、1つの時系列にのみ存在する値は無視されます:
待ちに待ったものを受け取るにはどうすればいいですか?
編集:答えは、異なる重みと異なる欠損値を持つ2つ以上の初期時系列にも適用できるはずです。
したがって、重み T1(0.1)、T2(0.2)、T3(0.3)、および T4(0.4) を持つ 4 つの時系列がある場合、特定のタイムスタンプでの重みは次のようになります。
arrays - 配列のセル配列で加重平均を計算する方法は?
私の前の質問の一般化では、セル要素(配列自体であり、配列のままである)の加重平均をどのように実行できますか?
次のようにgnoviceの回答を変更することから始めます。
その前にweight、正しい形状であることを確認してください。私が対処する必要があると思う3つのケースは次のとおりです。
- weight = 1 (または任意の定数) => 通常の平均値を返す
- numel(weight) == length(c) => weight は cell-element c{n} ごと (ただし、固定 n の各配列要素については等しい)
- numel(weight) == numel(cell2mat(c)) => 各配列要素には独自の重みがあります...
M.*weightケース 1 は簡単で、ケース 3 が発生する可能性は低いので、現時点ではケース 2 に興味があります:上記の合計で正しい次元を持つように、重みを配列に変換するにはどうすればよいですか? もちろん、加重平均を取得する別の方法を示す回答も高く評価されます。
編集実際、重みが c と同じ構造を持つ場合、ケース 3 はケース 1 よりもさらに自明です(なんとトートロジー、申し訳ありません)。
ケース2の意味の例を次に示します。
戻るべき
(たとえば、最初の要素の場合 (2*1 + 1*4)/(2+1) = 2)
algorithm - さまざまな有権者数に基づいて票を調整する
私は 1 対 5 の投票システムを使用しており、投票された可能性のある合計投票数を考慮して、投票された最も人気のあるアイテムを見つけるための最良の方法を見つけようとしています. 投票の合計を取得するには、「1」票を-3、「2」票を-2、「3」票を+1、「4」票を+2、「5」票を+3、したがって、「1」票は「5」票をキャンセルし、その逆も同様です。
この例では、3 つの異なるサイズの劇場で上映される 3 つの映画があるとします。
映画1:800席/映画2:400席/映画3:180席
ある意味では、座席に基づいて総投票数を制限しているので、小劇場の映画が大劇場の映画に自動的に圧倒されないようにする方法が欲しい. 劇場が大きいほど多くの票が投じられ、合計スコアが高くなる可能性があります。
10/18 を編集:
わかりました、うまくいけば、これをよりよく説明できます。私は映画祭で働いており、映画祭での各映画の初回上映の投票を行っています。したがって、各映画には、各劇場のサイズに基づいて 0 から最大数の投票があります。物語、ドキュメンタリー、短編映画の 3 つのカテゴリで最も人気のある映画を探しています。人気とは、最高の平均投票と投票数の組み合わせを意味します。
加重平均が私が探しているもののようです。大きな劇場からの投票の重みを減らし、小さな劇場からの投票の重みを増やして物事を均等にします。
algorithm - 加重移動平均を効率的に保存するためのデータ構造・アルゴリズム
ログ レコードを保存するときに、さまざまなカテゴリの移動平均を合計したいと考えています。Web サーバーのログを一度に 1 エントリずつ保存するサービスを想像してみてください。さらに想像してみましょう。ログに記録されたレコードにアクセスできません。そのため、それらは一度表示されますが、後でアクセスすることはできません。
別のページについて知りたい
- 総ヒット数(簡単)
- 「最近の」平均 (1 か月程度)
- 「長期」平均 (1 年以上)
膨大な量のデータを合計して再計算することなく、そのような移動平均を保存できる巧妙なアルゴリズム/データ モデルはありますか?
正確な平均 (正確には 30 日程度) は必要ありませんが、傾向指標だけが必要です。したがって、多少のぼやけはまったく問題ではありません。新しいエントリが古いエントリよりも高く重み付けされるようにする必要があります。
おそらく 1 つの解決策は、毎月の統計レコードを自動作成することです。ただし、過去 1 か月の統計すら必要ないので、これはやり過ぎのように思えます。そして、それは私に移動平均を与えるのではなく、毎月新しい値に交換します.
algorithm - 多因子加重ソートで最も関連性の高い結果を提供する方法
「関連性」の順に、2+ファクターの加重ソートを提供する必要があります。ただし、1つ以上の要素が他の要素の「緊急性」(重み)に影響を与えるようにしたいという点で、要素は完全に分離されていません。
例:投稿されたコンテンツ(記事)は賛成/反対投票できるため、評価があります。投稿日があり、カテゴリもタグ付けされています。ユーザーは記事を書いて投票することができ、自分自身に何らかのランキング(専門家など)がある場合とない場合があります。おそらくStackOverflowに似ていますよね?
タグでグループ化され、「関連性」でソートされた記事のリストを各ユーザーに提供したいと思います。関連性は記事の評価と年齢に基づいて計算され、著者のランキングの影響を受ける可能性があります。IEは、数年前に書かれた高ランクの記事が、昨日書かれた中ランクの記事ほど関連性があるとは限りません。また、専門家が記事を書いた場合、「ジョー・シュモー」が書いた記事よりも関連性が高いものとして扱われる可能性があります。
もう1つの良い例は、ホテルに価格、評価、アトラクションで構成される「メタスコア」を割り当てることです。
私の質問は、多因子ソートに最適なアルゴリズムは何ですか?これはその質問の複製かもしれませんが、私は任意の数の要因(より合理的な期待は2〜4の要因)の一般的なアルゴリズム、できれば私がする必要のない「完全自動」関数に興味がありますユーザー入力を微調整または要求すると、線形代数と固有ベクトルの奇抜さを解析できません。
私がこれまでに見つけた可能性:
注:Sは「ソートスコア」です
- 「線形加重」 -次のような関数を使用します。ここで、任意に割り当てられた加重であり、因子の値です。また、正規化する必要があります(つまり)。これは、 Lucene検索の仕組みのようなものだと思います。
S = (w1 * F1) + (w2 * F2) + (w3 * F3)wxFxFFx_n = Fx / Fmax - 「Base-N加重」 -加重よりもグループ化に似ており、加重が基数10の倍数で増加する線形加重であるため(CSSセレクターの特異性と同様の原則)、より重要な要素が大幅に高くなります 。
S = 1000 * F1 + 100 * F2 + 10 * F3 ... - 推定真の値(ETV) -これは明らかにGoogle Analyticsがレポートで導入したものであり、ある要素の値が別の要素に影響を与えます(重み)-結果として、より「統計的に有意な」値でソートされます。リンクはそれをかなりよく説明しているので、ここに方程式があります: ここで、は「より重要な」要因(記事の「バウンス率」)であり、「重要性の変更」要因(記事の「訪問」)です。
S = (F2 / F2_max * F1) + ((1 - (F2 / F2_max)) * F1_avg)F1F2 - ベイズ推定値-ETVに非常によく似ています。これは、IMDbが評価を計算する方法です。説明については、このStackOverflowの投稿を参照してください; 方程式:、ここで、は#3と同じであり、「有意性」係数の最小しきい値制限です(つまり、X未満の値は考慮されません)。
S = (F2 / (F2+F2_lim)) * F1 + (F2_lim / (F2+F2_lim)) × F1_avgFxF2_lim
オプション#3または#4は、#1および#2のように任意の重み付けスキームを選択する必要がないため、非常に有望に見えますが、問題は、2つ以上の要因に対してこれをどのように行うかです。
また、2要素均等化アルゴリズムのSQL実装に出くわしました。これは、基本的に、最終的に作成する必要があるものです。
c# - c#でランダムな要素を重みで選択する最も簡潔な方法は何ですか?
仮定しましょう:
List<element>どの要素が:
私が達成したいのは、要素を重みでランダムに選択することです。例えば:
そう
- 当選確率
Element_1は100/(100+50+200)=28.57% - 当選確率
Element_2は50/(100+50+200)=14.29% - 当選確率
Element_3は200/(100+50+200)=57.14%
ループを作成したり、合計を計算したりできることは知っています...
私が学びたいのは、Linq でこれを 1 行で (またはできるだけ短く) 実行する最善の方法は何ですか、ありがとうございます。
アップデート
以下に私の答えを見つけました。私が最初に学んだことは、Linqは魔法ではなく、適切に設計された loop よりも遅いということです。
したがって、私の質問は、重みでランダムな要素を見つけることになります(できるだけ短いものはありません:)
r - forループをapplyに置き換えて、パフォーマンスを向上させます(weighted.meanを使用)
私はR初心者なので、うまくいけば、これはあなたの何人かにとって解決可能な問題です。100万を超えるデータポイントを含むデータフレームがあります。私の目標は、開始点を変更して加重平均を計算することです。
説明のために、このフレームを検討してください(data.frame(matrix(c(1,2,3,2,2,1)、3,2)))
ここで、X1はデータ、X2はサンプリングの重みです。
X1の加重平均を開始点1から3、2:3、3:3で計算したいと思います。
ループで私は単に書いた:
私の実際のデータでは、反復ごとにdata.frameが変更され、計算に何時間もかかり、結果が得られないため、これを計算することは不可能です。
パフォーマンスを向上させるために、applyコマンドを使用してさまざまな開始点を実装する方法はありますか?
よろしく、ルーベン
algorithm - 最後の値が最も重み付けされるように、実行中の加重平均を繰り返し計算する方法は?
加重平均を計算する反復アルゴリズムを実装したいと考えています。特定の重みの法則は重要ではありませんが、最新の値では 1 に近く、最も古い値では 0 に近いはずです。
アルゴリズムは反復的でなければなりません。つまり、以前のすべての値を覚えておくべきではありません。最新の値と、平均、合計、カウントなどの以前の値など、過去に関する集計情報のみを知っている必要があります。
出来ますか?
たとえば、次のアルゴリズムは次のようになります。
それは指数関数的に減少する重みを与えますが、これは良くないかもしれません。体重を段階的に減らすことは可能ですか?
編集1
計量法の要件は次のとおりです。
1) 体重は過去に減少する 2) 平均または特徴的な持続時間があるため、この持続時間の古い値は新しい値よりもはるかに重要ではありません 3) この持続時間を設定できるはずです
編集2
以下が必要です。が最初のv_i値であるv_1とします。また、w_i重みがあるとします。しかし、w_0最後です。
したがって、最初の値が来た後、最初の平均があります
2 番目の値 v_2 が来た後、私は平均を持っている必要があります
私が持つべき次の価値で
値のシーケンスに沿って移動している間、体重プロファイルは私と一緒に移動していることに注意してください。
つまり、各値には常に独自の重みがあるわけではありません。私の目標は、過去に行くときにこの重量を下げることです.
sql-server-2008 - ストアドプロシージャの加重(ベイジアン)平均スコア/インデックスを計算しますか?
私はMSSQLServer 2008データベースを持っており、そこに食べ物を提供する場所(カフェ、レストラン、ダイナーなど)を保存しています。このデータベースに接続されているWebサイトでは、場所を1から3のスケールで評価できます。
このWebサイトには、特定の都市の上位25(最高評価)の場所を含むトップリストを表示できるページがあります。データベース構造は次のようになります(テーブルにはさらに多くの情報が格納されていますが、関連する情報は次のとおりです)。

場所は都市にあり、投票は場所に行われます。
これまで、特定の場所のすべての投票の合計をその場所の投票数で割った、各場所の平均投票スコアを計算しました。次のようになります(擬似コード)。
また、場所に投票がない場合は、ゼロ除算を処理する必要があります。これはすべて、トップリストに表示したい他のデータをフェッチするストアドプロシージャ内で行われます。投票スコアが最も高い上位25位をフェッチする現在のストアドプロシージャは次のとおりです。
ご覧のとおり、投票スコアだけでなく、場所や場所などのデータが必要です。これは問題なく機能しますが、大きな問題が1つあります。投票数が考慮されていないため、投票スコアが単純すぎることです。簡単な計算方法では、スコア3で1票の場所は、スコア3で14票、スコア2で1票の場所よりもリストの上位になります。
これを修正するために、私は何らかの形の加重平均/加重インデックスの使用を検討してきました。有望に見える真のベイズ推定の例を見つけました。次のようになります。
問題は、この加重評価をストアドプロシージャに実装しようとすると始まります。これはすぐに複雑になり、括弧に絡まって、ストアドプロシージャの機能を追跡できなくなります。
今私は2つの質問でいくつかの助けが必要です:
これは私のサイトの加重指数を計算するのに適した方法ですか?
ストアドプロシージャに実装すると、これ(または別の適切な計算方法)はどのようになりますか?
algorithm - 5 つ星評価の計算に使用されるアルゴリズム
Amazon Web サイトのような 5 つ星の評価を計算する必要があります。最適なアルゴリズムを見つけるために十分な検索を行いましたが、適切な答えを得ることができません。たとえば、これらが評価である場合
合計 478 件のレビュー
Amazon はこれを「5 つ星のうち 4.1」と計算しています。この数字がどのように得られたのか誰か教えてもらえますか? 平均するだけではこれを得ることができません。